trillium_http/
util.rs

1use crate::{Headers, KnownHeaderName};
2use encoding_rs::Encoding;
3use mime::Mime;
4use std::str::FromStr;
5
6/// a utility function for extracting a character encoding from a set
7/// of [`Headers`][trillium::Headers]
8pub fn encoding(headers: &Headers) -> &'static Encoding {
9    headers
10        .get_str(KnownHeaderName::ContentType)
11        .and_then(|c| Mime::from_str(c).ok())
12        .and_then(|m| {
13            m.params()
14                .find(|(name, _)| name.as_str() == "charset")
15                .and_then(|(_, v)| Encoding::for_label(v.as_str().as_bytes()))
16        })
17        .unwrap_or(encoding_rs::WINDOWS_1252)
18}