1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
//! This module wraps the Letterboxd API which provides easy and flexible //! access to data on the Letterboxd.com website. //! //! [Client](struct.Client.html)'s API follows the following rules: //! //! * All Letterboxd API calls are asynchronous. //! * Each method takes an optional argument `token`, which enabled //! authentication for the call. //! * Except for GET calls all methods include a path parameter. //! //! Further, most of [Client](struct.Client.html)'s methods take a request //! struct, which is then serialized to url encoded parameters and return a //! response type, which is deserialized from JSON. However, some methods omit //! the request or/and the response struct. //! //! Entities are identified in the API by Letterboxd ID (or LID), an //! alpha-numeric string value that is returned where appropriate. For films, //! lists and reviews, the LID can also be found through the Letterboxd website //! as the path portion of the entity’s shareable boxd.it link. //! //! For more information, cf. API docs at //! http://api-docs.letterboxd.com //! //! # Example //! ``` //! # extern crate futures; //! # extern crate letterboxd; //! # extern crate tokio_core; //! # //! # use futures::future::Future; //! # use tokio_core::reactor::Core; //! # //! # const USERNAME: &'static str = "some key"; //! # const PASSWORD: &'static str = "some key"; //! # //! # fn main() { //! # let api_key = String::from("some_key"); //! # let api_secret = String::from("some_secret"); //! # //! let mut core = Core::new().unwrap(); //! let client = letterboxd::Client::new(&core.handle(), api_key, api_secret); //! //! let get_token = client.auth(&USERNAME, &PASSWORD); //! let mut req = letterboxd::FilmRelationshipUpdateRequest::default(); //! req.watched = Some(true); //! let do_update = |token| { //! client.update_film_relationship("2a9q", &req, &token); // Fight Club //! }; //! // execute on core, e.g. with: //! // core.run(get_token.and_then(do_update).and_then(|response| { ... })).unwrap(); //! # } //! ``` //! extern crate crypto; extern crate hex; extern crate hyper; extern crate hyper_tls; #[macro_use] extern crate serde_derive; extern crate serde_json; extern crate serde_url_params; extern crate uuid; extern crate futures; extern crate tokio_core; #[macro_use] mod rest; mod client; mod defs; mod error; mod helper; pub use self::error::Error; pub use client::Client; pub use defs::*;