summaryrefslogtreecommitdiff
path: root/internal/api/fileserver/servefile.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/api/fileserver/servefile.go')
-rw-r--r--internal/api/fileserver/servefile.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/internal/api/fileserver/servefile.go b/internal/api/fileserver/servefile.go
index df3c83fe7..ec70ef9ae 100644
--- a/internal/api/fileserver/servefile.go
+++ b/internal/api/fileserver/servefile.go
@@ -24,6 +24,7 @@ import (
"net/http"
"strconv"
"strings"
+ "time"
"codeberg.org/gruf/go-fastcopy"
"github.com/gin-gonic/gin"
@@ -89,6 +90,10 @@ func (m *Module) ServeFile(c *gin.Context) {
if content.URL != nil {
// This is a non-local, non-proxied S3 file we're redirecting to.
+ // Derive the max-age value from how long the link has left until
+ // it expires.
+ maxAge := int(time.Until(content.URL.Expiry).Seconds())
+ c.Header("Cache-Control", "private,max-age="+strconv.Itoa(maxAge))
c.Redirect(http.StatusFound, content.URL.String())
return
}