use super::templates::ErrorTemplate; use rocket::{ http::Header, response::{self, Responder}, Response, }; use std::borrow::Cow; #[derive(Responder)] #[response(status = 200, content_type = "font/woff2")] pub struct RawWoff2Font(pub Cow<'static, [u8]>); #[derive(Responder)] #[response(status = 200, content_type = "font/woff")] pub struct RawWoffFont(pub Cow<'static, [u8]>); #[derive(Responder)] pub struct ErrorTemplateResponder<'a> { template: ErrorTemplate<'a>, } pub struct CachedResponse { inner: T, } impl<'r, T> Responder<'r, 'static> for CachedResponse where T: Responder<'r, 'static>, { fn respond_to(self, request: &'r rocket::Request<'_>) -> response::Result<'static> { Response::build_from(self.inner.respond_to(request)?) .header(Header::new("Cache-Control", "max-age=31536000, immutable")) .ok() } } impl<'r, T> From for CachedResponse where T: Responder<'r, 'static>, { fn from(value: T) -> Self { CachedResponse { inner: value } } }