summaryrefslogtreecommitdiffstats
path: root/ipfs-api/src/client.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ipfs-api/src/client.rs')
-rw-r--r--ipfs-api/src/client.rs21
1 files changed, 16 insertions, 5 deletions
diff --git a/ipfs-api/src/client.rs b/ipfs-api/src/client.rs
index 69411ee..6c1e3bf 100644
--- a/ipfs-api/src/client.rs
+++ b/ipfs-api/src/client.rs
@@ -22,6 +22,8 @@ use http::StatusCode;
use hyper::client::{Client, HttpConnector};
#[cfg(feature = "hyper")]
use hyper_multipart::client::multipart;
+#[cfg(feature = "hyper")]
+use hyper_tls::HttpsConnector;
use multiaddr::{AddrComponent, ToMultiaddr};
use read::{JsonLineDecoder, LineDecoder, StreamReader};
use request::{self, ApiRequest};
@@ -66,7 +68,7 @@ type Response = http::Response<hyper::Body>;
pub struct IpfsClient {
base: Uri,
#[cfg(feature = "hyper")]
- client: Client<HttpConnector, hyper::Body>,
+ client: Client<HttpsConnector<HttpConnector>, hyper::Body>,
}
impl Default for IpfsClient {
@@ -113,19 +115,28 @@ impl IpfsClient {
///
#[inline]
pub fn new(host: &str, port: u16) -> Result<IpfsClient, InvalidUri> {
- let base_path = IpfsClient::build_base_path(host, port)?;
+ Self::new_from_uri(format!("http://{}:{}", host, port).as_str())
+ }
+
+ /// Creates a new `IpfsClient` for any given URI.
+ #[inline]
+ pub fn new_from_uri(uri: &str) -> Result<IpfsClient, InvalidUri> {
+ let base_path = IpfsClient::build_base_path(uri)?;
Ok(IpfsClient {
base: base_path,
#[cfg(feature = "hyper")]
- client: Client::builder().keep_alive(false).build_http(),
+ client: {
+ let connector = HttpsConnector::new(4).unwrap();
+ Client::builder().keep_alive(false).build(connector)
+ },
})
}
/// Builds the base url path for the Ipfs api.
///
- fn build_base_path(host: &str, port: u16) -> Result<Uri, InvalidUri> {
- format!("http://{}:{}/api/v0", host, port).parse()
+ fn build_base_path(uri: &str) -> Result<Uri, InvalidUri> {
+ format!("{}/api/v0", uri).parse()
}
/// Builds the url for an api call.