summaryrefslogtreecommitdiff
path: root/src/kraken/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/kraken/mod.rs')
-rw-r--r--src/kraken/mod.rs40
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)
}
}