weeb_api 0.2.0

A Rust library for the Weeb.sh API.
Documentation
//! # weeb-api.rs
//!
//! An unofficial Rust library acting as a wrapper around the Weeb.sh API, offering
//! implementations for both asynchronous hyper(v0.11) and synchronous
//! reqwest(0.8.0).
//!
//! **note:** This library requires the use of a Weeb.sh token.
//!
//! ### Compile features
//!
//! - **hyper-support**: Compiles with `hyper` support
//! - **reqwest-support**: Compiles with `reqwest` support (*default)
//!
//! ### Installation
//!
//! Add the following to your `Cargo.toml` file.
//!
//! ```toml
//! [dependencies]
//! weeb_api = "0.2"
//! ```
//!
//! To enable both `hyper` and `reqwest` support:
//!
//! ```toml
//! [dependencies.weeb_api]
//! version = "0.2"
//! features = ["hyper-support", "reqwest support"]
//! ```
//!
//! To enable `hyper` but not `reqwest` support:
//!
//! ```toml
//! [dependencies.weeb_api]
//! version = "0.2"
//! default-features = false
//! features = ["hyper-support"]
//! ```
//!
//! ### Examples
//!
//! Using reqwest, search for a random image using the token and type provided by
//! user input:
//!
//! ```rust,no_run
//! extern crate weeb_api;
//! # #[cfg(feature = "reqwest")]
//! extern crate reqwest;
//!
//! use std::io::{self, Write};
//!
//! # #[cfg(feature = "reqwest")]
//! fn main() {
//!     use weeb_api::{ImageParams, WeebApiReqwestRequester};
//!     use reqwest::Client;
//!     use std::io::{self, Write};
//!
//!     // Create the reqwest Client.
//!     let client = Client::new();
//!
//!     // Read the token from the users input.
//!     let token = ask("Input your API token:");
//!     let token_trimmed = token.trim();
//!
//!     if token_trimmed.is_empty() {
//!         println!("No token give. Shutting down.");
//!
//!         return;
//!     }
//!
//!     // Get a type to get a random image for from the users input.
//!     let input = ask("Input a type to get a random image URL for:");
//!     let input_trimmed = input.trim();
//!
//!     if input_trimmed.is_empty() {
//!         println!("No type given. Shutting down.");
//!
//!         return;
//!     }
//!
//!     let params = ImageParams::kind(input_trimmed);
//!     let response = client.get_image_random(token_trimmed, params)
//!         .expect("Error getting random image");
//!
//!     println!("Response URL: {}", response.url);
//! }
//! #
//! # #[cfg(not(feature = "reqwest"))]
//! # fn main() { }
//!
//! fn ask(question: &str) -> String {
//!     print!("{}\n>", question);
//!     let _ = io::stdout().flush();
//!
//!     let mut input = String::new();
//!     io::stdin().read_line(&mut input).expect("Error processing input");
//!
//!     input
//! }
//! ```
//!
//! For more examples, refer to the [examples] folder.
//!
//! ### License
//!
//! ISC. View the full license [here][license file].
//!
//! [examples]: https://github.com/shinonome-cafe/weeb-api.rs/blob/master/examples
//! [license file]: https://github.com/shinonome-cafe/weeb-api.rs/blob/master/LICENSE.md
#![deny(missing_docs)]

#[macro_use] extern crate serde_derive;

extern crate serde;
extern crate serde_json;

#[cfg(feature = "futures")]
extern crate futures;
#[cfg(feature = "hyper")]
extern crate hyper;
#[cfg(feature = "reqwest")]
extern crate reqwest;

pub mod bridge;
pub mod constants;
pub mod model;
pub mod utils;

mod error;
mod image_params;
#[cfg(feature = "reqwest")]
mod upload_params;

pub use error::{Error, Result};
pub use image_params::ImageParams;
#[cfg(feature = "reqwest")]
pub use upload_params::UploadParams;

#[cfg(feature = "reqwest")]
pub use bridge::reqwest::WeebApiRequester as WeebApiReqwestRequester;
#[cfg(feature = "hyper")]
pub use bridge::hyper::WeebApiRequester as WeebApiHyperRequester;