vornix_core/response/
language.rs

1use actix_web::dev::Payload;
2use actix_web::{FromRequest, HttpRequest};
3use futures::future::{ready, Ready};
4
5pub struct LanguageExtractor(pub String);
6
7impl FromRequest for LanguageExtractor {
8    type Error = actix_web::Error;
9    type Future = Ready<Result<Self, Self::Error>>;
10
11    fn from_request(req: &HttpRequest, _payload: &mut Payload) -> Self::Future {
12        // Obtener el idioma desde el header Accept-Language
13        let language = req
14            .headers()
15            .get("Accept-Language")
16            .and_then(|lang| lang.to_str().ok())
17            .unwrap_or("en")
18            .to_string();
19
20        // Devolver el extractor de idioma
21        ready(Ok(LanguageExtractor(language))) // No debe llevar punto y coma
22    }
23}