summer_ipfs_client/
cat.rs1use crate::IpfsApi;
2
3use std::io::Read;
4
5use reqwest;
6use failure::Error;
7
8impl IpfsApi {
9 pub fn cat(&self, hash: &str) -> Result<impl Iterator<Item=u8>, Error> {
10 let mut url = self.get_url()?;
11 url.set_path("api/v0/cat");
12 url.query_pairs_mut()
13 .append_pair("arg", hash);
14 let resp = reqwest::get(url)?;
15 Ok(resp.bytes().filter(|x|x.is_ok()).map(|x|x.unwrap()))
16 }
17}
18
19#[cfg(test)]
20mod tests {
21 use super::*;
22
23 #[test]
24 fn test_cat_bytes() {
25 let api = IpfsApi::new("127.0.0.1", 5001);
26
27 let bytes = api.cat("QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u").unwrap();
29
30 assert_eq!("Hello World".as_bytes().to_vec(), bytes.collect::<Vec<u8>>());
31 }
32
33 #[test]
34 fn test_cat_string() {
35 let api = IpfsApi::new("127.0.0.1", 5001);
36
37 let bytes = api.cat("QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u").unwrap();
38 let string = String::from_utf8(bytes.collect()).unwrap();
39
40 assert_eq!("Hello World", &string);
41 }
42}