Add example for mime crate parsing filenames

This commit is contained in:
Julien Delange 2018-07-12 15:23:45 -07:00 committed by Andy Gauge
commit aa840e6138
5 changed files with 45 additions and 0 deletions

0
libtest.rmeta Normal file
View file

View file

@ -32,4 +32,5 @@
[ex-toml-config]: encoding/complex.html#deserialize-a-toml-configuration-file
[ex-byteorder-le]: encoding/complex.html#read-and-write-integers-in-little-endian-byte-order
{{#include links.md}}

View file

@ -23,6 +23,7 @@
| Recipe | Crates | Categories |
|--------|--------|------------|
| [Get MIME type from string][ex-mime-from-string] | [![mime-badge]][mime] | [![cat-encoding-badge]][cat-encoding] |
| [Get MIME type from filename][ex-mime-from-filename] | [![mime-badge]][mime] | [![cat-encoding-badge]][cat-encoding] |
| [Parse the MIME type of a HTTP response][ex-http-response-mime-type] | [![mime-badge]][mime] [![reqwest-badge]][reqwest] | [![cat-net-badge]][cat-net] [![cat-encoding-badge]][cat-encoding] |
@ -39,6 +40,7 @@
[ex-url-rm-frag]: web/url.html#remove-fragment-identifiers-and-query-pairs-from-a-url
[ex-mime-from-string]: web/mime.html#get-mime-type-from-string
[ex-mime-from-filename]: web/mime.html#get-mime-type-from-filename
[ex-http-response-mime-type]: web/mime.html#parse-the-mime-type-of-a-http-response
{{#include links.md}}

View file

@ -2,6 +2,8 @@
{{#include mime/string.md}}
{{#include mime/filename.md}}
{{#include mime/request.md}}
{{#include ../links.md}}

40
src/web/mime/filename.md Normal file
View file

@ -0,0 +1,40 @@
## Get MIME type from filename
[![mime-badge]][mime] [![cat-encoding-badge]][cat-encoding]
The following example shows how to return the correct MIME type from a given
filename using the [mime] crate. The program will check for file extensions
and match against a known list. The return value is [`mime:Mime`].
```rust
extern crate mime;
use mime::Mime;
fn find_mimetype (filename : &String) -> Mime{
let parts : Vec<&str> = filename.split('.').collect();
let res = match parts.last() {
Some(v) =>
match *v {
"png" => mime::IMAGE_PNG,
"jpg" => mime::IMAGE_JPEG,
"json" => mime::APPLICATION_JSON,
&_ => mime::TEXT_PLAIN,
},
None => mime::TEXT_PLAIN,
};
return res;
}
fn main() {
let filenames = vec!("foobar.jpg", "foo.bar", "foobar.png");
for file in filenames {
let mime = find_mimetype(&file.to_owned());
println!("MIME for {}: {}", file, mime);
}
}
```
[`mime:Mime`]: https://docs.rs/mime/*/mime/struct.Mime.html