From be68a7da226743edbce5b52e506d9083e2859578 Mon Sep 17 00:00:00 2001 From: David Blajda Date: Sun, 16 Dec 2018 19:31:45 +0000 Subject: Prototype of a trait based client --- src/lib.rs | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index e0100fa..21f0cb9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,9 +2,7 @@ extern crate futures; extern crate reqwest; extern crate serde; extern crate chrono; - -#[macro_use] -extern crate serde_derive; +#[macro_use] extern crate serde_derive; pub mod helix; pub mod kraken; @@ -12,7 +10,12 @@ pub mod types; pub use self::helix::Client as HelixClient; pub use self::kraken::Client as KrakenClient; + use reqwest::r#async::Client as ReqwestClient; +use reqwest::header::HeaderMap; +use std::marker::PhantomData; +use std::sync::Arc; +use std::collections::BTreeMap; pub struct Client { pub helix: HelixClient, @@ -27,7 +30,22 @@ impl Client { kraken: KrakenClient::new_with_client(client_id, client.clone()), } } +} - pub fn nop(self) { - } +trait Request { + fn url(&self) -> String; + fn headers(&self) -> &HeaderMap; + fn query(&self) -> &BTreeMap; + fn returns(&self) -> T; +} + +pub struct GetRequest { + inner: Arc>, +} + +struct GetRequestRef { + url: String, +// headers: HeaderMap, +// query: BTreeMap, + returns: PhantomData, } -- cgit v1.2.3