diff options
author | David Blajda <blajda@hotmail.com> | 2018-12-15 06:21:52 +0000 |
---|---|---|
committer | David Blajda <blajda@hotmail.com> | 2018-12-15 06:21:52 +0000 |
commit | a4c842eae14bef20d3d04ee4313251344edf431f (patch) | |
tree | 1685f11fd6bbe9f85cb51d479770b04692250c0c /src/kraken/mod.rs | |
parent | 8615cc2f030240ba2982dba893fe63f11a0c8a88 (diff) |
Deserialize Urls and Dates. Also implement custom Id types
Diffstat (limited to 'src/kraken/mod.rs')
-rw-r--r-- | src/kraken/mod.rs | 40 |
1 files changed, 30 insertions, 10 deletions
diff --git a/src/kraken/mod.rs b/src/kraken/mod.rs index 2015781..59d00c0 100644 --- a/src/kraken/mod.rs +++ b/src/kraken/mod.rs @@ -1,33 +1,53 @@ use reqwest::header; -use reqwest::r#async::{Chunk, Decoder, Request, Response}; +use std::sync::Arc; +use reqwest::r#async::RequestBuilder; use reqwest::r#async::Client as ReqwestClient; +pub use super::types; mod endpoints; mod models; + const ACCEPT: &str = "application/vnd.twitchtv.v5+json"; pub const API_DOMAIN: &str = "api.twitch.tv"; +#[derive(Clone)] pub struct Client { + inner: Arc<ClientRef>, +} + +struct ClientRef { id: String, + client: ReqwestClient } impl Client { pub fn new(id: &str) -> Client { Client { - id: id.to_owned(), + inner: Arc::new(ClientRef { + id: id.to_owned(), + client: ReqwestClient::new(), + }) + } + } + + pub fn new_with_client(id: &str, client: ReqwestClient) -> Client { + Client { + inner: Arc::new(ClientRef { + id: id.to_owned(), + client: client, + }) } } - fn create_reqwest_client(&self) -> ReqwestClient { - let mut headers = header::HeaderMap::new(); - let auth_key = &self.id; - let client_header = header::HeaderValue::from_str(auth_key).unwrap(); + fn apply_standard_headers(&self, request: RequestBuilder) + -> RequestBuilder + { + let client_header = header::HeaderValue::from_str(&self.inner.id).unwrap(); let accept_header = header::HeaderValue::from_str(ACCEPT).unwrap(); - headers.insert("Client-ID", client_header); - headers.insert("Accept", accept_header); - let client = ReqwestClient::builder().default_headers(headers).build().unwrap(); - client + request + .header("Accept", accept_header) + .header("Client-ID", client_header) } } |