summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFerris Tseng <ferristseng@fastmail.fm>2017-10-10 21:10:47 -0400
committerFerris Tseng <ferristseng@fastmail.fm>2017-10-10 21:10:47 -0400
commit434aee7ea0fcdafdeb0341a011990121d69fa646 (patch)
treef63003cfd1af2bdacd06df363714ece0cf63893b
parent013bba6ce41d2ebdd64e7bc25f6a221a85d1ec0d (diff)
add pin request
-rw-r--r--ipfs-api/src/client.rs6
-rw-r--r--ipfs-api/src/request/mod.rs2
-rw-r--r--ipfs-api/src/request/pin.rs18
-rw-r--r--ipfs-api/src/response/pin.rs8
4 files changed, 30 insertions, 4 deletions
diff --git a/ipfs-api/src/client.rs b/ipfs-api/src/client.rs
index b44e544..203a434 100644
--- a/ipfs-api/src/client.rs
+++ b/ipfs-api/src/client.rs
@@ -198,6 +198,12 @@ impl IpfsClient {
self.request(&request::ObjectStat { key })
}
+ /// Returns a list of pinned objects in local storage.
+ ///
+ pub fn pin_ls(&self, key: Option<&str>, typ: Option<&str>) -> ApiResult<response::PinLsResponse> {
+ self.request(&request::PinLs { key, typ })
+ }
+
/// Returns bitswap stats.
///
pub fn stats_bitswap(&self) -> ApiResult<response::StatsBitswapResponse> {
diff --git a/ipfs-api/src/request/mod.rs b/ipfs-api/src/request/mod.rs
index 5befbaa..a245eb3 100644
--- a/ipfs-api/src/request/mod.rs
+++ b/ipfs-api/src/request/mod.rs
@@ -4,6 +4,7 @@ pub use self::commands::*;
pub use self::config::*;
pub use self::ls::*;
pub use self::object::*;
+pub use self::pin::*;
pub use self::stats::*;
pub use self::swarm::*;
pub use self::version::*;
@@ -49,6 +50,7 @@ mod commands;
mod config;
mod ls;
mod object;
+mod pin;
mod stats;
mod swarm;
mod version;
diff --git a/ipfs-api/src/request/pin.rs b/ipfs-api/src/request/pin.rs
new file mode 100644
index 0000000..c206f13
--- /dev/null
+++ b/ipfs-api/src/request/pin.rs
@@ -0,0 +1,18 @@
+use request::ApiRequest;
+
+
+#[derive(Serialize)]
+pub struct PinLs<'a> {
+ #[serde(rename = "arg")]
+ pub key: Option<&'a str>,
+
+ #[serde(rename = "type")]
+ pub typ: Option<&'a str>
+}
+
+impl<'a> ApiRequest for PinLs<'a> {
+ #[inline]
+ fn path() -> &'static str {
+ "/pin/ls"
+ }
+}
diff --git a/ipfs-api/src/response/pin.rs b/ipfs-api/src/response/pin.rs
index 2dbee20..a6ed0a2 100644
--- a/ipfs-api/src/response/pin.rs
+++ b/ipfs-api/src/response/pin.rs
@@ -2,7 +2,7 @@ use response::serde;
use std::collections::HashMap;
-#[derive(Deserialize)]
+#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct PinAddResponse {
#[serde(deserialize_with = "serde::deserialize_vec")]
@@ -12,7 +12,7 @@ pub struct PinAddResponse {
}
-#[derive(Deserialize)]
+#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct PinType {
#[serde(rename = "Type")]
@@ -20,7 +20,7 @@ pub struct PinType {
}
-#[derive(Deserialize)]
+#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct PinLsResponse {
#[serde(deserialize_with = "serde::deserialize_hashmap")]
@@ -28,7 +28,7 @@ pub struct PinLsResponse {
}
-#[derive(Deserialize)]
+#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct PinRmResponse {
#[serde(deserialize_with = "serde::deserialize_vec")]