aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib.rs23
-rw-r--r--tests/zotapi.rs5
2 files changed, 21 insertions, 7 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 60ac388..c2d77ee 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,16 +1,28 @@
extern crate reqwest;
+use reqwest::{
+ header::{Accept, qitem},
+ mime,
+};
use std::io::Read;
const ZOTAPI_CHANNEL_STREAM_PATH : &str = "/api/z/1.0/channel/stream";
pub struct Client {
+ inner: reqwest::Client,
base_url: String,
+ user: String,
+ pw: String,
}
impl Client {
pub fn channel_stream(&self) -> String {
- let mut res = reqwest::get(&self.channel_stream_url()).unwrap();
+ let mut res = self.inner.get(&self.channel_stream_url())
+ .header(Accept(vec![qitem(mime::APPLICATION_JSON)]))
+ .basic_auth(self.user.clone(), Some(self.pw.clone()))
+ .send()
+ .unwrap();
+
let mut body = String::new();
res.read_to_string(&mut body).unwrap();
body
@@ -21,12 +33,13 @@ impl Client {
}
}
-pub fn client<T>(url: T) -> Client
-where
- T: Into<String>
+pub fn client(url: &str, user: &str, pw: &str) -> Client
{
Client {
- base_url: url.into(),
+ inner: reqwest::Client::new(),
+ base_url: String::from(url),
+ user: String::from(user),
+ pw: String::from(pw),
}
}
diff --git a/tests/zotapi.rs b/tests/zotapi.rs
index c45673f..102e5de 100644
--- a/tests/zotapi.rs
+++ b/tests/zotapi.rs
@@ -1,17 +1,18 @@
extern crate zotapi;
extern crate mockito;
-use mockito::mock;
+use mockito::{mock, Matcher};
#[test]
fn get_channel_stream() {
let m = mock("GET", "/api/z/1.0/channel/stream")
+ .match_header("Authorization", Matcher::Regex(r"Basic \w+".into()))
.with_status(200)
.with_header("content-type", "application/json")
.with_body("{}")
.create();
- let z = zotapi::client(format!("http://{}", mockito::SERVER_ADDRESS));
+ let z = zotapi::client(&format!("http://{}", mockito::SERVER_ADDRESS), "testuser", "test1234");
let data = z.channel_stream();
m.assert();
assert_eq!(data, "{}");