diff options
Diffstat (limited to 'src/embed.rs')
-rw-r--r-- | src/embed.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/embed.rs b/src/embed.rs index b7d44aa..b3342cd 100644 --- a/src/embed.rs +++ b/src/embed.rs @@ -68,23 +68,24 @@ pub async fn r_embed<'a>( } #[get("/v1/image?<k>")] -pub async fn r_image(state: &State<Arc<Logic>>, k: &str) -> MyResult<CachedFile> { +pub async fn r_image(state: &State<Arc<Logic>>, k: &str) -> MyResult<CachedImage> { let info = state .config .ads .get(&k.to_owned()) .ok_or(anyhow!("ad does not exist"))?; - Ok(CachedFile( + Ok(CachedImage( File::open(state.config.ad_dir.join(&info.image)).await?, )) } -pub struct CachedFile(File); -impl<'r> Responder<'r, 'static> for CachedFile { +pub struct CachedImage(File); +impl<'r> Responder<'r, 'static> for CachedImage { fn respond_to(self, _req: &'r Request<'_>) -> response::Result<'static> { Response::build() .status(Status::Ok) .header(Header::new("cache-control", "max-age=3600, public")) + .header(Header::new("content-type", "image/webp")) .streamed_body(self.0) .ok() } |