mime-sniffer 0.1.2

Detecting mime types base on content sniffer.
Documentation
## mime-sniffer [![travis build]https://travis-ci.org/flier/rust-mime-sniffer.svg?branch=master]https://travis-ci.org/flier/rust-mime-sniffer [![crate]https://img.shields.io/crates/v/mime_sniffer.svg]https://crates.io/crates/mime_sniffer

Detecting mime types base on content sniffer.

[Document](https://docs.rs/mime-sniffer/)

***The detection workflow was copied from [Chromium](https://src.chromium.org/viewvc/chrome/trunk/src/net/base/mime_sniffer.cc)***

For more detail, please read [How Mozilla determines MIME Types](https://developer.mozilla.org/en-US/docs/Mozilla/How_Mozilla_determines_MIME_Types).

## Usage

To use `mime-sniffer`, first add this to your `Cargo.toml`:

```toml
[dependencies]
mime_sniffer = "^0.1"
```

Then, add this to your crate root:

```rust
extern crate mime_sniffer;

use mime_sniffer::MimeTypeSniffer;
```

And then, use hash function with module or hasher

```rust
use mime_sniffer::MimeTypeSniffer;

assert_eq!(Some("application/pdf"), b"%PDF-1.5".sniff_mime_type());
```

## Examples

```rust
extern crate url;
#[macro_use]
extern crate mime;
extern crate mime_sniffer;

use url::Url;

use mime_sniffer::{HttpRequest, MimeTypeSniffer, MimeTypeSniffable, MimeTypeSnifferExt};

let url = Url::parse("http://localhost/notes.ppt").unwrap();
let req = HttpRequest {
    content: b"\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1",
    url: &url,
    type_hint: "text/plain",
};

assert!(req.should_sniff_mime_type());
assert_eq!(Some("application/vnd.ms-powerpoint"), req.sniff_mime_type());
assert_eq!(mime!(Application/("vnd.ms-powerpoint")),
           req.sniff_mime_type_ext().unwrap());
```

## Related

* To recognize binary file type, you may need [libmagic]https://linux.die.net/man/3/libmagic with rust binding [rust-magic]https://github.com/robo9k/rust-magic crate. [![crate]https://img.shields.io/crates/v/magic.svg]https://crates.io/crates/magic
* To guess MIME type by file extension, you may need [mime_guess]https://github.com/abonander/mime_guess crate. [![crate]https://img.shields.io/crates/v/mime_guess.svg]https://crates.io/crates/mime_guess
* To manage MIME type as strong types, you may need [mime.rs]https://github.com/hyperium/mime.rs crate. [![crate]https://img.shields.io/crates/v/mime.svg]https://crates.io/crates/mime