vw_small

Hardened fork of Vaultwarden (https://github.com/dani-garcia/vaultwarden) with fewer features.
git clone https://git.philomathiclife.com/repos/vw_small
Log | Files | Refs | README

commit 01d8056c73a77701f8064c5f424149a16abc7298
parent 5323283f98b898cb8e4c535fcdd0272d24caeec0
Author: Daniel GarcĂ­a <dani-garcia@users.noreply.github.com>
Date:   Sun, 28 Mar 2021 16:03:16 +0200

Merge pull request #1545 from RealOrangeOne/icon-client-cache

Client caching
Diffstat:
Msrc/api/icons.rs | 4++--
Msrc/util.rs | 14+++++++++-----
2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/src/api/icons.rs b/src/api/icons.rs @@ -51,7 +51,7 @@ fn icon(domain: String) -> Option<Cached<Content<Vec<u8>>>> { 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<IconUrlResult, Error> { 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 @@ -92,17 +92,21 @@ impl Fairing for CORS { } } -pub struct Cached<R>(R, &'static str); +pub struct Cached<R>(R, String); impl<R> Cached<R> { - pub const fn long(r: R) -> Cached<R> { + pub fn long(r: R) -> Cached<R> { // 7 days - Self(r, "public, max-age=604800") + Self::ttl(r, 604800) } - pub const fn short(r: R) -> Cached<R> { + pub fn short(r: R) -> Cached<R> { // 10 minutes - Self(r, "public, max-age=600") + Self(r, String::from("public, max-age=600")) + } + + pub fn ttl(r: R, ttl: u64) -> Cached<R> { + Self(r, format!("public, immutable, max-age={}", ttl)) } }