diff options
Diffstat (limited to 'internal/web')
-rw-r--r-- | internal/web/assets.go | 5 | ||||
-rw-r--r-- | internal/web/etag.go | 2 | ||||
-rw-r--r-- | internal/web/rss.go | 12 | ||||
-rw-r--r-- | internal/web/web.go | 2 |
4 files changed, 13 insertions, 8 deletions
diff --git a/internal/web/assets.go b/internal/web/assets.go index 31d09f4be..8f662017a 100644 --- a/internal/web/assets.go +++ b/internal/web/assets.go @@ -102,6 +102,9 @@ func (m *Module) getAssetETag(filePath string, fs http.FileSystem) (string, erro // package along with the other middlewares func (m *Module) assetsCacheControlMiddleware(fs http.FileSystem) gin.HandlerFunc { return func(c *gin.Context) { + // Acquire context from gin request. + ctx := c.Request.Context() + // set this Cache-Control header to instruct clients to validate the response with us // before each reuse (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control) c.Header(cacheControlHeader, cacheControlNoCache) @@ -118,7 +121,7 @@ func (m *Module) assetsCacheControlMiddleware(fs http.FileSystem) gin.HandlerFun // either fetch etag from ttlcache or generate it eTag, err := m.getAssetETag(assetFilePath, fs) if err != nil { - log.Errorf("error getting ETag for %s: %s", assetFilePath, err) + log.Errorf(ctx, "error getting ETag for %s: %s", assetFilePath, err) return } diff --git a/internal/web/etag.go b/internal/web/etag.go index 72c3bb762..096aa9c83 100644 --- a/internal/web/etag.go +++ b/internal/web/etag.go @@ -34,7 +34,7 @@ func newETagCache() cache.Cache[string, eTagCacheEntry] { eTagCache := cache.New[string, eTagCacheEntry](0, 1000, 0) eTagCache.SetTTL(time.Hour, false) if !eTagCache.Start(time.Minute) { - log.Panic("could not start eTagCache") + log.Panic(nil, "could not start eTagCache") } return eTagCache } diff --git a/internal/web/rss.go b/internal/web/rss.go index 757c3ffb5..dccb49542 100644 --- a/internal/web/rss.go +++ b/internal/web/rss.go @@ -61,14 +61,16 @@ func (m *Module) GetRSSETag(urlPath string, lastModified time.Time, getRSSFeed f return eTag, nil } -func extractIfModifiedSince(header string) time.Time { - if header == "" { +func extractIfModifiedSince(r *http.Request) time.Time { + hdr := r.Header.Get(ifModifiedSinceHeader) + + if hdr == "" { return time.Time{} } - t, err := http.ParseTime(header) + t, err := http.ParseTime(hdr) if err != nil { - log.Errorf("couldn't parse if-modified-since %s: %s", header, err) + log.Errorf(r.Context(), "couldn't parse if-modified-since %s: %s", hdr, err) return time.Time{} } @@ -95,7 +97,7 @@ func (m *Module) rssFeedGETHandler(c *gin.Context) { } ifNoneMatch := c.Request.Header.Get(ifNoneMatchHeader) - ifModifiedSince := extractIfModifiedSince(c.Request.Header.Get(ifModifiedSinceHeader)) + ifModifiedSince := extractIfModifiedSince(c.Request) getRssFeed, accountLastPostedPublic, errWithCode := m.processor.AccountGetRSSFeedForUsername(ctx, username) if errWithCode != nil { diff --git a/internal/web/web.go b/internal/web/web.go index 0fc1644c8..08bac4583 100644 --- a/internal/web/web.go +++ b/internal/web/web.go @@ -79,7 +79,7 @@ func (m *Module) Route(r router.Router, mi ...gin.HandlerFunc) { // so that they can use the same cache control middleware. webAssetsAbsFilePath, err := filepath.Abs(config.GetWebAssetBaseDir()) if err != nil { - log.Panicf("error getting absolute path of assets dir: %s", err) + log.Panicf(nil, "error getting absolute path of assets dir: %s", err) } fs := fileSystem{http.Dir(webAssetsAbsFilePath)} assetsGroup := r.AttachGroup(assetsPathPrefix) |