From 6d8bce3122c4fabaf19375cc28506d08a70191a8 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Sat, 11 Jun 2022 11:02:56 -0500 Subject: [PATCH] ipfs: Fix for latest IPFS API language * Fixes library to work with latest API version from IPFS. The API requests all changed to POST from GET (even where POST doesn't make sense) * Interesting IPFS completely changed the API, but didn't bump v0 to v1 :-| * This breaks compatibility with any old versions (0.9.0 or before) but makes the crate work with recent versions (0.10.0 - 0.13.0) --- src/block.rs | 5 +++-- src/cat.rs | 4 +++- src/ipns.rs | 6 ++++-- src/log.rs | 3 ++- src/object.rs | 3 ++- src/pin.rs | 9 ++++++--- src/pubsub.rs | 6 ++++-- src/shutdown.rs | 3 ++- src/version.rs | 3 ++- 9 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/block.rs b/src/block.rs index ea42c27..ae3b1ef 100644 --- a/src/block.rs +++ b/src/block.rs @@ -34,7 +34,8 @@ impl IpfsApi { url.query_pairs_mut() .append_pair("arg", hash); - let resp = reqwest::get(url)?; + let client = reqwest::Client::new(); + let resp = client.post(url).send()?; Ok(resp.bytes().filter(|x|x.is_ok()).map(|x|x.unwrap())) } } @@ -63,4 +64,4 @@ mod tests { assert_eq!(block, content); } -} \ No newline at end of file +} diff --git a/src/cat.rs b/src/cat.rs index 1d555d7..4226817 100644 --- a/src/cat.rs +++ b/src/cat.rs @@ -22,7 +22,9 @@ impl IpfsApi { url.set_path("api/v0/cat"); url.query_pairs_mut() .append_pair("arg", hash); - let resp = reqwest::get(url)?; + + let client = reqwest::Client::new(); + let resp = client.post(url).send()?; Ok(resp.bytes().filter(|x|x.is_ok()).map(|x|x.unwrap())) } } diff --git a/src/ipns.rs b/src/ipns.rs index 0d11609..62d0286 100644 --- a/src/ipns.rs +++ b/src/ipns.rs @@ -18,7 +18,8 @@ impl IpfsApi { /// ``` pub fn name_resolve(&self, name: &str) -> Result { let url = format!("http://{}:{}/api/v0/name/resolve?arg={}", self.server, self.port, name); - let resp = reqwest::get(&url)?; + let client = reqwest::Client::new(); + let resp = client.post(&url).send()?; let resp: Value = serde_json::from_reader(resp)?; if resp["Path"].is_string() { @@ -31,7 +32,8 @@ impl IpfsApi { /// Publish an IPFS hash in IPNS. pub fn name_publish(&self, hash: &str) -> Result<(), Error> { let url = format!("http://{}:{}/api/v0/name/publish?arg={}", self.server, self.port, hash); - let _resp = reqwest::get(&url)?; + let client = reqwest::Client::new(); + let _resp = client.post(&url).send()?; Ok(()) } } diff --git a/src/log.rs b/src/log.rs index 8a92700..8277171 100644 --- a/src/log.rs +++ b/src/log.rs @@ -13,7 +13,8 @@ impl IpfsApi { pub fn log_tail(&self) -> Result, Error> { let mut url = self.get_url()?; url.set_path("api/v0/log/tail"); - let resp = reqwest::get(url)?; + let client = reqwest::Client::new(); + let resp = client.post(url).send()?; let messages = BufReader::new(resp).lines() .filter(|x|x.is_ok()) diff --git a/src/object.rs b/src/object.rs index 4d2512a..eb42761 100644 --- a/src/object.rs +++ b/src/object.rs @@ -44,7 +44,8 @@ impl IpfsApi { /// of a hash. pub fn object_stats(&self, hash: &str) -> Result { let url = format!("http://{}:{}/api/v0/object/stat?arg={}", self.server, self.port, hash); - let resp = reqwest::get(&url)?; + let client = reqwest::Client::new(); + let resp = client.post(&url).send()?; Ok(serde_json::from_reader(resp)?) } } diff --git a/src/pin.rs b/src/pin.rs index 9e698a3..6c1950d 100644 --- a/src/pin.rs +++ b/src/pin.rs @@ -35,7 +35,8 @@ impl IpfsApi { .append_pair("arg", hash) .append_pair("recursive", &recursive.to_string()) .append_pair("progress", "false"); - let resp = reqwest::get(url)?; + let client = reqwest::Client::new(); + let resp = client.post(url).send()?; Ok(serde_json::from_reader(resp)?) } @@ -46,7 +47,8 @@ impl IpfsApi { url.query_pairs_mut() .append_pair("arg", hash) .append_pair("recursive", &recursive.to_string()); - let resp = reqwest::get(url)?; + let client = reqwest::Client::new(); + let resp = client.post(url).send()?; Ok(serde_json::from_reader(resp)?) } @@ -55,7 +57,8 @@ impl IpfsApi { pub fn pin_list(&self) -> Result, Error> { let mut url = self.get_url()?; url.set_path("api/v0/pin/ls"); - let resp = reqwest::get(url)?; + let client = reqwest::Client::new(); + let resp = client.post(url).send()?; let json_resp: serde_json::Value = serde_json::from_reader(resp)?; let mut hashes = Vec::new(); diff --git a/src/pubsub.rs b/src/pubsub.rs index 1e687bd..ab15ff5 100644 --- a/src/pubsub.rs +++ b/src/pubsub.rs @@ -54,7 +54,8 @@ impl IpfsApi { url.query_pairs_mut() .append_pair("arg", channel) .append_pair("discover", "true"); - let resp = reqwest::get(url)?; + let client = reqwest::Client::new(); + let resp = client.post(url).send()?; let messages = BufReader::new(resp).lines() .filter(|x|x.is_ok()) @@ -82,7 +83,8 @@ impl IpfsApi { url.query_pairs_mut() .append_pair("arg", channel) .append_pair("arg", data); - let _resp = reqwest::get(url)?; + let client = reqwest::Client::new(); + let _resp = client.post(url).send()?; Ok(()) } } diff --git a/src/shutdown.rs b/src/shutdown.rs index afed84e..10a786c 100644 --- a/src/shutdown.rs +++ b/src/shutdown.rs @@ -9,7 +9,8 @@ impl IpfsApi { pub fn shutdown(&self) -> Result<(), Error> { let mut url = self.get_url()?; url.set_path("api/v0/shutdown"); - let _resp = reqwest::get(url)?; + let client = reqwest::Client::new(); + let _resp = client.post(url).send()?; Ok(()) } } diff --git a/src/version.rs b/src/version.rs index 5375b2f..c9f4892 100644 --- a/src/version.rs +++ b/src/version.rs @@ -18,7 +18,8 @@ impl IpfsApi { /// Get the version from the IPFS daemon. pub fn version(&self) -> Result { let url = format!("http://{}:{}/api/v0/version", self.server, self.port); - let resp = reqwest::get(&url)?; + let client = reqwest::Client::new(); + let resp = client.post(&url).send()?; Ok(serde_json::from_reader(resp)?) } }