#![cfg_attr(feature="clippy", feature(plugin))]
#![cfg_attr(feature="clippy", plugin(clippy))]
#![deny(
missing_docs,
trivial_casts, trivial_numeric_casts,
unsafe_code,
unused_import_braces, unused_qualifications
)]
extern crate url;
#[macro_use]
extern crate json;
extern crate rand;
extern crate hyper;
extern crate colored;
extern crate httparse;
#[macro_use]
extern crate lazy_static;
extern crate difference;
mod api;
#[doc(hidden)]
pub mod mock;
mod resource;
mod util;
pub use api::options::Options;
pub use api::http::{HttpApi, HttpRequest};
pub use mock::{
MockResponse, MockRequest, MockProvider,
MockResponseProvider, MockRequestResponse
};
pub use resource::http::{
HttpEndpoint,
HttpResponse,
HttpHeader,
HttpBody,
HttpQueryString,
HttpFormData
};
#[macro_export]
macro_rules! responses {
( $( $x:expr ),* ) => (
{
let mut temp_vec = Vec::<Box<$crate::MockResponse>>::new();
$(
temp_vec.push(Box::new($x));
)*
temp_vec
}
);
( $( $x:expr, )* ) => ( responses![ $($x ),* ] )
}
#[macro_export]
macro_rules! mocks {
( $( $x:expr ),* ) => (
{
let mut temp_vec = Vec::<Box<$crate::MockProvider>>::new();
$(
temp_vec.push(Box::new($x));
)*
temp_vec
}
);
( $( $x:expr, )* ) => ( mocks![ $($x ),* ] )
}
#[macro_export]
macro_rules! headers {
( $( $x:expr ),* ) => (
{
let mut temp_vec = Vec::<$crate::HttpHeader>::new();
$(
temp_vec.push($x.into());
)*
temp_vec
}
);
( $( $x:expr, )* ) => ( headers![ $($x ),* ] )
}
#[macro_export]
macro_rules! query {
{} => ($crate::HttpQueryString::new(vec![]));
{ $( $key:expr => $value:expr ),* } => ({
let mut items = Vec::new();
$(
items.push(($key, $value).into());
)*
$crate::HttpQueryString::new(items)
});
( $( $key:expr => $value:expr, )* ) => ( query![ $($key => $value),* ] )
}
#[macro_export]
macro_rules! form {
{} => ($crate::HttpFormData::new(vec![]));
{ $( $key:expr => $value:expr ),* } => ({
let mut fields = Vec::new();
$(
fields.push(($key, $value).into());
)*
$crate::HttpFormData::new(fields)
});
( $( $key:expr => $value:expr, )* ) => ( form![ $($key => $value),* ] )
}