1
0
mirror of https://github.com/fafhrd91/actix-web synced 2025-03-14 12:16:26 +01:00

119 lines
3.6 KiB
Rust
Raw Normal View History

2018-04-09 21:57:40 -07:00
//! Http client api
//!
//! ```rust
2018-04-09 21:57:40 -07:00
//! # extern crate actix_web;
//! # extern crate futures;
2018-05-29 10:31:37 -07:00
//! # extern crate tokio;
2018-04-09 21:57:40 -07:00
//! # use futures::Future;
//! # use std::process;
2018-06-19 12:07:07 +06:00
//! use actix_web::{actix, client};
2018-04-09 21:57:40 -07:00
//!
//! fn main() {
2018-06-19 12:07:07 +06:00
//! actix::run(
//! || client::get("http://www.rust-lang.org") // <- Create request builder
2018-04-09 21:57:40 -07:00
//! .header("User-Agent", "Actix-web")
//! .finish().unwrap()
//! .send() // <- Send http request
//! .map_err(|_| ())
//! .and_then(|response| { // <- server http response
//! println!("Response: {:?}", response);
2018-06-19 12:07:07 +06:00
//! # actix::System::current().stop();
2018-04-09 21:57:40 -07:00
//! Ok(())
//! })
2018-06-17 04:09:07 +06:00
//! );
2018-04-09 21:57:40 -07:00
//! }
//! ```
2018-01-30 13:04:52 -08:00
mod connector;
2018-01-27 22:03:03 -08:00
mod parser;
2018-04-13 16:02:01 -07:00
mod pipeline;
mod request;
2018-01-27 22:03:03 -08:00
mod response;
mod writer;
2018-01-27 22:03:03 -08:00
2018-05-17 12:20:20 -07:00
pub use self::connector::{
ClientConnector, ClientConnectorError, ClientConnectorStats, Connect, Connection,
Pause, Resume,
};
2018-04-13 16:02:01 -07:00
pub(crate) use self::parser::{HttpResponseParser, HttpResponseParserError};
2018-06-25 10:58:04 +06:00
pub(crate) use self::pipeline::Pipeline;
2018-02-19 03:11:11 -08:00
pub use self::pipeline::{SendRequest, SendRequestError};
pub use self::request::{ClientRequest, ClientRequestBuilder};
pub use self::response::ClientResponse;
2018-02-19 03:11:11 -08:00
pub(crate) use self::writer::HttpClientWriter;
use error::ResponseError;
use http::Method;
use httpresponse::HttpResponse;
/// Convert `SendRequestError` to a `HttpResponse`
impl ResponseError for SendRequestError {
fn error_response(&self) -> HttpResponse {
match *self {
2018-05-10 09:37:38 -07:00
SendRequestError::Timeout => HttpResponse::GatewayTimeout(),
SendRequestError::Connector(_) => HttpResponse::BadGateway(),
_ => HttpResponse::InternalServerError(),
2018-04-13 16:02:01 -07:00
}.into()
}
}
/// Create request builder for `GET` requests
///
///
/// ```rust
/// # extern crate actix_web;
/// # extern crate futures;
/// # extern crate tokio;
/// # extern crate env_logger;
/// # use futures::Future;
/// # use std::process;
2018-06-19 12:07:07 +06:00
/// use actix_web::{actix, client};
///
/// fn main() {
2018-06-19 12:07:07 +06:00
/// actix::run(
/// || client::get("http://www.rust-lang.org") // <- Create request builder
/// .header("User-Agent", "Actix-web")
/// .finish().unwrap()
/// .send() // <- Send http request
/// .map_err(|_| ())
2018-05-29 10:31:37 -07:00
/// .and_then(|response| { // <- server http response
/// println!("Response: {:?}", response);
2018-06-19 12:07:07 +06:00
/// # actix::System::current().stop();
/// Ok(())
2018-06-01 09:37:14 -07:00
/// }),
/// );
/// }
/// ```
pub fn get<U: AsRef<str>>(uri: U) -> ClientRequestBuilder {
let mut builder = ClientRequest::build();
builder.method(Method::GET).uri(uri);
builder
}
/// Create request builder for `HEAD` requests
pub fn head<U: AsRef<str>>(uri: U) -> ClientRequestBuilder {
let mut builder = ClientRequest::build();
builder.method(Method::HEAD).uri(uri);
builder
}
/// Create request builder for `POST` requests
pub fn post<U: AsRef<str>>(uri: U) -> ClientRequestBuilder {
let mut builder = ClientRequest::build();
builder.method(Method::POST).uri(uri);
builder
}
/// Create request builder for `PUT` requests
pub fn put<U: AsRef<str>>(uri: U) -> ClientRequestBuilder {
let mut builder = ClientRequest::build();
builder.method(Method::PUT).uri(uri);
builder
}
/// Create request builder for `DELETE` requests
pub fn delete<U: AsRef<str>>(uri: U) -> ClientRequestBuilder {
let mut builder = ClientRequest::build();
builder.method(Method::DELETE).uri(uri);
builder
}