summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Heath <icefoxen@gmail.com>2017-11-30 14:46:43 -0500
committerSimon Heath <icefoxen@gmail.com>2017-11-30 14:46:43 -0500
commit251b04e17b07192f7df9fda10a8d24d3965ee5c9 (patch)
treead40c19d77925df0302baf55e53fdb30b7812a33
parentf66a1b557192404182bf83ce312c6ea505945711 (diff)
Added /pin/add endpoint call
-rw-r--r--ipfs-api/src/client.rs13
-rw-r--r--ipfs-api/src/request/pin.rs16
-rw-r--r--ipfs-api/src/response/pin.rs2
-rw-r--r--ipfs-api/src/response/tests/v0_pin_add_0.json5
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"
+ ]
+}