aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/embed.rs9
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()
}