diff options
author | David Blajda <blajda@hotmail.com> | 2018-12-16 21:45:58 +0000 |
---|---|---|
committer | David Blajda <blajda@hotmail.com> | 2018-12-16 21:45:58 +0000 |
commit | 23ea9413cd0e29eb451df08c5c799d64f56a1342 (patch) | |
tree | 226a2bc179e41c675aa0ed34ddc1fda7c55c277a /src/helix/namespaces/users.rs | |
parent | 27267ed98fc839b51ae4621fd1aa230f7f068bdc (diff) |
Move endpoints functions into namespaces
Diffstat (limited to 'src/helix/namespaces/users.rs')
-rw-r--r-- | src/helix/namespaces/users.rs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/helix/namespaces/users.rs b/src/helix/namespaces/users.rs new file mode 100644 index 0000000..c809b95 --- /dev/null +++ b/src/helix/namespaces/users.rs @@ -0,0 +1,52 @@ +use futures::future::Future; +use super::super::models::{DataContainer, PaginationContainer, User, Video, Clip}; +use super::super::Client; +use std::collections::BTreeMap; +const API_DOMAIN: &'static str = "api.twitch.tv"; +use super::super::Namespace; + +pub struct Users {} +type UsersNamespace = Namespace<Users>; + +impl UsersNamespace { + pub fn users(self, id: Vec<&str>, login: Vec<&str>) -> impl Future<Item=DataContainer<User>, Error=reqwest::Error> { + use self::users; + users(self.client, id, login) + } +} + +impl Client { + + pub fn users(&self) -> UsersNamespace { + UsersNamespace::new(self) + } +} + +pub fn users( + client: Client, + id: Vec<&str>, + login: Vec<&str>, + ) -> impl Future<Item = DataContainer<User>, Error = reqwest::Error> { + let url = + String::from("https://") + &String::from(API_DOMAIN) + &String::from("/helix/users"); + + let mut params = BTreeMap::new(); + for i in id { + params.insert("id", i); + } + + for log in login { + params.insert("login", log); + } + + let request = client.client().get(&url); + let request = client.apply_standard_headers(request); + let request = request.query(¶ms); + + request + .send() + .map(|mut res| { + res.json::<DataContainer<User>>() + }) + .and_then(|json| json) +} |