# Geeny API Interface Library ## Introduction `geeny-api-rs` is a Rust Crate for consuming the Geeny APIs as a client. `geeny-api-rs` is based on [Reqwest](https://docs.rs/reqwest). ## Installation & Configuration In your `Cargo.toml`, add the following lines: ```toml [dependencies] geeny-api = "0.2" ``` In your main project file (likely `lib.rs` or `main.rs`), add the following line: ```rust,ignore extern crate geeny_api; ``` ## Components ### Connect API The Geeny Connect APIs, used for authentication, are exposed via the `geeny_api::ConnectApi` structure and related methods. #### Example ```rust,no_run extern crate geeny_api; use geeny_api::ConnectApi; use geeny_api::models::*; fn main() { let api = ConnectApi::default(); // first, obtain a token let log_req = AuthLoginRequest { email: "demo@email.com".into(), password: "S3cureP@ssword!".into(), }; // Login let response = api.login(&log_req).unwrap(); println!("Your token is: {}", response.token); // Check token validity let _ = api.check_token(&response); // Refresh a Token let new_response = api.refresh_token(&response).unwrap(); } ``` ### Things API The Geeny Things APIs, used for creation, deletion, and management of Things, ThingTypes, and MessageTypes, are exposed via the `geeny_api::ThingsApi` structure and related methods. #### Example ```rust,no_run extern crate geeny_api; use geeny_api::ThingsApi; use geeny_api::models::*; fn main() { let api = ThingsApi::default(); let token = "...".to_string(); // from ConnectApi.login() // Display all thing types for tt in api.get_thing_types(&token).unwrap() { println!("thing type: {:?}", tt); } // Display all message types for mt in api.get_message_types(&token).unwrap() { println!(": {:?}", mt); } // Display all things for thng in api.get_things(&token).unwrap() { println!(": {:?}", thng); } } ``` ## Requirements This crate has been tested with Stable Rust versions 1.19.0 and above. ## License Copyright (C) 2017 Telefónica Germany Next GmbH, Charlottenstrasse 4, 10969 Berlin. This project is licensed under the terms of the [Mozilla Public License Version 2.0](LICENSE.md). Contact: devsupport@geeny.io ### Third Party Components This crate makes use of the following third party components with the following licenses: | License | Count | Dependencies | | :------ | :---- | :----------- | | Apache-2.0 | 1 | openssl | | Apache-2.0/MIT | 47 | antidote, backtrace, backtrace-sys, bitflags, bitflags, cfg-if, core-foundation, core-foundation-sys, custom_derive, dtoa, error-chain, foreign-types, gcc, httparse, hyper-native-tls, idna, itoa, lazy_static, libc, log, native-tls, num-traits, num_cpus, percent-encoding, pkg-config, quote, rand, reqwest, rustc-demangle, security-framework, security-framework-sys, serde, serde_derive, serde_derive_internals, serde_json, serde_urlencoded, syn, synom, tempdir, time, traitobject, unicode-bidi, unicode-normalization, unicode-xid, url, uuid, vcpkg | | BSD-3-Clause | 3 | adler32, magenta, magenta-sys | | MIT | 20 | advapi32-sys, base64, conv, crypt32-sys, dbghelp-sys, hyper, kernel32-sys, language-tags, libflate, matches, mime, openssl-sys, redox_syscall, schannel, secur32-sys, typeable, unicase, version_check, winapi, winapi-build | | MIT/Unlicense | 1 | byteorder |