From 848cd1dbec7ecbe6df3928bcdac9b332532d1748 Mon Sep 17 00:00:00 2001
From: Steven Noonan <steven@uplinklabs.net>
Date: Tue, 18 Dec 2018 13:33:31 -0800
Subject: [PATCH] add environment variables for ICON_CACHE_TTL and
 ICON_CACHE_NEGTTL

These aren't used yet, but will be utilized by the icon caching service
in a subsequent patch.

Signed-off-by: Steven Noonan <steven@uplinklabs.net>
---
 .env        | 5 +++++
 src/main.rs | 8 ++++++++
 2 files changed, 13 insertions(+)

diff --git a/.env b/.env
index 7ad0e89d..6e1ab169 100644
--- a/.env
+++ b/.env
@@ -10,6 +10,11 @@
 # ICON_CACHE_FOLDER=data/icon_cache
 # ATTACHMENTS_FOLDER=data/attachments
 
+## Cache time-to-live for successfully obtained icons, in seconds (0 is "forever")
+# ICON_CACHE_TTL=2592000
+## Cache time-to-live for icons which weren't available, in seconds (0 is "forever")
+# ICON_CACHE_NEGTTL=259200
+
 ## Web vault settings
 # WEB_VAULT_FOLDER=web-vault/
 # WEB_VAULT_ENABLED=true
diff --git a/src/main.rs b/src/main.rs
index 963f82fb..160d2f5f 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -255,6 +255,9 @@ pub struct Config {
     icon_cache_folder: String,
     attachments_folder: String,
 
+    icon_cache_ttl: u64,
+    icon_cache_negttl: u64,
+
     private_rsa_key: String,
     private_rsa_key_pem: String,
     public_rsa_key: String,
@@ -304,6 +307,11 @@ impl Config {
             icon_cache_folder: get_env_or("ICON_CACHE_FOLDER", format!("{}/{}", &df, "icon_cache")),
             attachments_folder: get_env_or("ATTACHMENTS_FOLDER", format!("{}/{}", &df, "attachments")),
 
+            // icon_cache_ttl defaults to 30 days (30 * 24 * 60 * 60 seconds)
+            icon_cache_ttl: get_env_or("ICON_CACHE_TTL", 2592000u64),
+            // icon_cache_negttl defaults to 3 days (3 * 24 * 60 * 60 seconds)
+            icon_cache_negttl: get_env_or("ICON_CACHE_NEGTTL", 259200u64),
+
             private_rsa_key: format!("{}.der", &key),
             private_rsa_key_pem: format!("{}.pem", &key),
             public_rsa_key: format!("{}.pub.der", &key),
-- 
GitLab