diff options
author | Simon Heath <icefoxen@gmail.com> | 2017-11-30 14:46:43 -0500 |
---|---|---|
committer | Simon Heath <icefoxen@gmail.com> | 2017-11-30 14:46:43 -0500 |
commit | 251b04e17b07192f7df9fda10a8d24d3965ee5c9 (patch) | |
tree | ad40c19d77925df0302baf55e53fdb30b7812a33 | |
parent | f66a1b557192404182bf83ce312c6ea505945711 (diff) |
Added /pin/add endpoint call
-rw-r--r-- | ipfs-api/src/client.rs | 13 | ||||
-rw-r--r-- | ipfs-api/src/request/pin.rs | 16 | ||||
-rw-r--r-- | ipfs-api/src/response/pin.rs | 2 | ||||
-rw-r--r-- | ipfs-api/src/response/tests/v0_pin_add_0.json | 5 |
4 files changed, 36 insertions, 0 deletions
diff --git a/ipfs-api/src/client.rs b/ipfs-api/src/client.rs index 1a7dc89..229f666 100644 --- a/ipfs-api/src/client.rs +++ b/ipfs-api/src/client.rs @@ -821,6 +821,19 @@ impl IpfsClient { self.request(&request::ObjectStat { key }, None) } + /// Pins a new object. + /// + /// Does not yet implement "progress" because reading it is kinda squirrelly. + /// + #[inline] + pub fn pin_add( + &self, + key: &str, + recursive: Option<bool> + ) -> AsyncResponse<response::PinLsResponse> { + self.request(&request::PinAdd { key, recursive, progress: false }, None) + } + /// Returns a list of pinned objects in local storage. /// #[inline] diff --git a/ipfs-api/src/request/pin.rs b/ipfs-api/src/request/pin.rs index fe96da5..d72bd6b 100644 --- a/ipfs-api/src/request/pin.rs +++ b/ipfs-api/src/request/pin.rs @@ -10,6 +10,22 @@ use request::ApiRequest; #[derive(Serialize)] +pub struct PinAdd<'a> { + #[serde(rename = "arg")] + pub key: &'a str, + pub recursive: Option<bool>, + pub progress: bool, +} + +impl<'a> ApiRequest for PinAdd<'a> { + #[inline] + fn path() -> &'static str { + "/pin/add" + } +} + + +#[derive(Serialize)] pub struct PinLs<'a> { #[serde(rename = "arg")] pub key: &'a Option<&'a str>, diff --git a/ipfs-api/src/response/pin.rs b/ipfs-api/src/response/pin.rs index eab99c2..e6e4192 100644 --- a/ipfs-api/src/response/pin.rs +++ b/ipfs-api/src/response/pin.rs @@ -28,6 +28,7 @@ pub struct PinType { } + #[derive(Debug, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct PinLsResponse { @@ -47,4 +48,5 @@ pub struct PinRmResponse { #[cfg(test)] mod tests { deserialize_test!(v0_pin_ls_0, PinLsResponse); + deserialize_test!(v0_pin_add_0, PinAddResponse); } diff --git a/ipfs-api/src/response/tests/v0_pin_add_0.json b/ipfs-api/src/response/tests/v0_pin_add_0.json new file mode 100644 index 0000000..60c9e48 --- /dev/null +++ b/ipfs-api/src/response/tests/v0_pin_add_0.json @@ -0,0 +1,5 @@ +{ + "Pins": [ + "QmQ5vhrL7uv6tuoN9KeVBwd4PwfQkXdVVmDLUZuTNxqgvm" + ] +} |