diff options
-rw-r--r-- | Cargo.toml | 4 | ||||
-rw-r--r-- | src/lib.rs | 32 | ||||
-rw-r--r-- | tests/zotapi.rs | 18 |
3 files changed, 54 insertions, 0 deletions
@@ -4,3 +4,7 @@ version = "0.1.0" authors = ["haraldei"] [dependencies] +reqwest = "0.8" + +[dev-dependencies] +mockito = "0.12" @@ -1,3 +1,35 @@ +extern crate reqwest; + +use std::io::Read; + +const ZOTAPI_CHANNEL_STREAM_PATH : &str = "/api/z/1.0/channel/stream"; + +pub struct Client { + base_url: String, +} + +impl Client { + pub fn channel_stream(&self) -> String { + let mut res = reqwest::get(&self.channel_stream_url()).unwrap(); + let mut body = String::new(); + res.read_to_string(&mut body).unwrap(); + body + } + + fn channel_stream_url(&self) -> String { + self.base_url.clone() + ZOTAPI_CHANNEL_STREAM_PATH + } +} + +pub fn client<T>(url: T) -> Client +where + T: Into<String> +{ + Client { + base_url: url.into(), + } +} + #[cfg(test)] mod tests { #[test] diff --git a/tests/zotapi.rs b/tests/zotapi.rs new file mode 100644 index 0000000..c45673f --- /dev/null +++ b/tests/zotapi.rs @@ -0,0 +1,18 @@ +extern crate zotapi; +extern crate mockito; + +use mockito::mock; + +#[test] +fn get_channel_stream() { + let m = mock("GET", "/api/z/1.0/channel/stream") + .with_status(200) + .with_header("content-type", "application/json") + .with_body("{}") + .create(); + + let z = zotapi::client(format!("http://{}", mockito::SERVER_ADDRESS)); + let data = z.channel_stream(); + m.assert(); + assert_eq!(data, "{}"); +} |