Skip to content

Commit

Permalink
Merge pull request #522 from hyperium/header-convenient-constructors
Browse files Browse the repository at this point in the history
Header convenient constructors
  • Loading branch information
seanmonstar committed May 12, 2015
2 parents a74bb68 + b6114ec commit 871f37a
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 8 deletions.
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ use std::io::Read;

use hyper::Client;
use hyper::header::Connection;
use hyper::header::ConnectionOption;

fn main() {
// Create a client.
Expand All @@ -65,7 +64,7 @@ fn main() {
// Creating an outgoing request.
let mut res = client.get("http://www.gooogle.com/")
// set a header
.header(Connection(vec![ConnectionOption::Close]))
.header(Connection::close())
// let 'er go!
.send().unwrap();

Expand Down
3 changes: 1 addition & 2 deletions examples/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ use std::io;

use hyper::Client;
use hyper::header::Connection;
use hyper::header::ConnectionOption::Close;

fn main() {
env_logger::init().unwrap();
Expand All @@ -24,7 +23,7 @@ fn main() {
let mut client = Client::new();

let mut res = client.get(&*url)
.header(Connection(vec![Close]))
.header(Connection::close())
.send().unwrap();

println!("Response: {}", res.status);
Expand Down
12 changes: 12 additions & 0 deletions src/header/common/connection.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,18 @@ header! {
}
}

impl Connection {
/// A constructor to easily create a `Connection: close` header.
pub fn close() -> Connection {
Connection(vec![ConnectionOption::Close])
}

/// A constructor to easily create a `Connection: keep-alive` header.
pub fn keep_alive() -> Connection {
Connection(vec![ConnectionOption::KeepAlive])
}
}

bench_header!(close, Connection, { vec![b"close".to_vec()] });
bench_header!(keep_alive, Connection, { vec![b"keep-alive".to_vec()] });
bench_header!(header, Connection, { vec![b"authorization".to_vec()] });
26 changes: 26 additions & 0 deletions src/header/common/content_type.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,30 @@ header! {
}
}

impl ContentType {
/// A constructor to easily create a `Content-Type: application/json; charset=utf-8` header.
pub fn json() -> ContentType {
ContentType(mime!(Application/Json; Charset=Utf8))
}

/// A constructor to easily create a `Content-Type: text/plain; charset=utf-8` header.
pub fn plaintext() -> ContentType {
ContentType(mime!(Text/Plain; Charset=Utf8))
}

/// A constructor to easily create a `Content-Type: text/html; charset=utf-8` header.
pub fn html() -> ContentType {
ContentType(mime!(Text/Html; Charset=Utf8))
}

/// A constructor to easily create a `Content-Type: image/jpeg` header.
pub fn jpeg() -> ContentType {
ContentType(mime!(Image/Jpeg))
}

/// A constructor to easily create a `Content-Type: image/png` header.
pub fn png() -> ContentType {
ContentType(mime!(Image/Png))
}
}
bench_header!(bench, ContentType, { vec![b"application/json; charset=utf-8".to_vec()] });
10 changes: 6 additions & 4 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -139,14 +139,16 @@ extern crate num_cpus;
extern crate traitobject;
extern crate typeable;

#[macro_use]
extern crate mime as mime_crate;

#[macro_use]
extern crate log;

#[cfg(all(test, feature = "nightly"))]
extern crate test;


pub use mimewrapper::mime;
pub use url::Url;
pub use client::Client;
pub use error::{Result, Error};
Expand Down Expand Up @@ -185,9 +187,9 @@ pub mod uri;
pub mod version;


mod mimewrapper {
/// Re-exporting the mime crate, for convenience.
extern crate mime;
/// Re-exporting the mime crate, for convenience.
pub mod mime {
pub use mime_crate::*;
}

#[allow(unconditional_recursion)]
Expand Down

0 comments on commit 871f37a

Please sign in to comment.