summaryrefslogtreecommitdiff
path: root/src/helix/namespaces/users.rs
diff options
context:
space:
mode:
authorDavid Blajda <blajda@hotmail.com>2018-12-16 21:45:58 +0000
committerDavid Blajda <blajda@hotmail.com>2018-12-16 21:45:58 +0000
commit23ea9413cd0e29eb451df08c5c799d64f56a1342 (patch)
tree226a2bc179e41c675aa0ed34ddc1fda7c55c277a /src/helix/namespaces/users.rs
parent27267ed98fc839b51ae4621fd1aa230f7f068bdc (diff)
Move endpoints functions into namespaces
Diffstat (limited to 'src/helix/namespaces/users.rs')
-rw-r--r--src/helix/namespaces/users.rs52
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(&params);
+
+ request
+ .send()
+ .map(|mut res| {
+ res.json::<DataContainer<User>>()
+ })
+ .and_then(|json| json)
+}