diff --git a/src/api/icons.rs b/src/api/icons.rs index 5abcf375..14cfa25f 100644 --- a/src/api/icons.rs +++ b/src/api/icons.rs @@ -51,7 +51,7 @@ fn icon(domain: String) -> Option>>> { return None; } - get_icon(&domain).map(|icon| Cached::long(Content(ContentType::new("image", "x-icon"), icon))) + get_icon(&domain).map(|icon| Cached::ttl(Content(ContentType::new("image", "x-icon"), icon), CONFIG.icon_cache_ttl())) } /// Returns if the domain provided is valid or not. @@ -472,7 +472,7 @@ fn get_icon_url(domain: &str) -> Result { let dom = html5ever::parse_document(markup5ever_rcdom::RcDom::default(), Default::default()) .from_utf8() .read_from(&mut limited_reader)?; - + get_favicons_node(&dom.document, &mut iconlist, &url); } else { // Add the default favicon.ico to the list with just the given domain diff --git a/src/util.rs b/src/util.rs index de663583..40256eb7 100644 --- a/src/util.rs +++ b/src/util.rs @@ -92,17 +92,21 @@ impl Fairing for CORS { } } -pub struct Cached(R, &'static str); +pub struct Cached(R, String); impl Cached { - pub const fn long(r: R) -> Cached { + pub fn long(r: R) -> Cached { // 7 days - Self(r, "public, max-age=604800") + Self::ttl(r, 604800) } - pub const fn short(r: R) -> Cached { + pub fn short(r: R) -> Cached { // 10 minutes - Self(r, "public, max-age=600") + Self(r, String::from("public, max-age=600")) + } + + pub fn ttl(r: R, ttl: u64) -> Cached { + Self(r, format!("public, immutable, max-age={}", ttl)) } }