1use actix_web::{
2 error::ParseError,
3 http::{header, header::Header},
4};
5use std::{
6 fmt,
7 future::{ready, Ready},
8};
9
10#[derive(Debug)]
11pub struct FirstAcceptLanguage(header::AcceptLanguage);
12
13impl fmt::Display for FirstAcceptLanguage {
14 fn fmt(&self, f: &mut fmt::Formatter) -> std::fmt::Result {
15 for lang in self.0.as_slice() {
16 return write!(f, "{}", lang.to_string());
17 }
18 write!(f, "{}", "")
19 }
20}
21
22impl actix_web::FromRequest for FirstAcceptLanguage {
23 type Error = ParseError;
24 type Future = Ready<Result<Self, Self::Error>>;
25
26 #[inline]
27 fn from_request(req: &actix_web::HttpRequest, _: &mut actix_web::dev::Payload) -> Self::Future {
28 match Header::parse(req) {
29 Ok(header) => ready(Ok(FirstAcceptLanguage(header))),
30 Err(e) => ready(Err(e)),
31 }
32 }
33}
34
35#[cfg(test)]
36mod tests {
37 #[test]
38 fn it_works() {
39 let result = 2 + 2;
40 assert_eq!(result, 4);
41 }
42}