diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c980f4..776e02a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,8 @@ -## [_Unreleased_](https://github.com/freckle/freckle-http/compare/v0.3.0.1...main) +## [_Unreleased_](https://github.com/freckle/freckle-http/compare/v0.3.1.0...main) + +## [v0.3.1.0](https://github.com/freckle/freckle-http/compare/v0.3.0.1...v0.3.1.0) + +- Add `HttpCacheSettings{forceTTL}` ## [v0.3.0.1](https://github.com/freckle/freckle-http/tree/v0.3.0.1) diff --git a/freckle-http.cabal b/freckle-http.cabal index ac748e6..490b976 100644 --- a/freckle-http.cabal +++ b/freckle-http.cabal @@ -5,7 +5,7 @@ cabal-version: 1.18 -- see: https://github.com/sol/hpack name: freckle-http -version: 0.3.0.1 +version: 0.3.1.0 synopsis: Toolkit for making HTTP requests description: Please see README.md category: HTTP diff --git a/library/Freckle/App/Http/Cache.hs b/library/Freckle/App/Http/Cache.hs index 7b820f5..c0bd29c 100644 --- a/library/Freckle/App/Http/Cache.hs +++ b/library/Freckle/App/Http/Cache.hs @@ -53,6 +53,7 @@ import Text.Read (readMaybe) data HttpCacheSettings m t = HttpCacheSettings { shared :: Bool , cacheable :: Request -> Bool + , forceTTL :: Maybe CacheTTL , defaultTTL :: CacheTTL , getCurrentTime :: m UTCTime , logDebug :: Message -> m () @@ -238,7 +239,9 @@ getCachableResponseTTL settings resp = do guard $ not settings.shared || Private `notElem` responseHeaders.cacheControl guard $ statusIsCacheable $ HTTP.responseStatus resp - pure $ fromMaybe settings.defaultTTL $ responseHeadersToTTL responseHeaders + pure $ case settings.forceTTL of + Nothing -> fromMaybe settings.defaultTTL $ responseHeadersToTTL responseHeaders + Just ttl -> ttl where responseHeaders = getResponseHeaders resp diff --git a/library/Freckle/App/Http/Cache/Memcached.hs b/library/Freckle/App/Http/Cache/Memcached.hs index 19268a6..76f80ed 100644 --- a/library/Freckle/App/Http/Cache/Memcached.hs +++ b/library/Freckle/App/Http/Cache/Memcached.hs @@ -47,6 +47,7 @@ memcachedHttpCacheSettings defaultTTL = HttpCacheSettings { shared = True , cacheable = const True + , forceTTL = Nothing , defaultTTL , getCurrentTime = liftIO getCurrentTime , logDebug = logDebugNS "http.cache" diff --git a/library/Freckle/App/Http/Cache/State.hs b/library/Freckle/App/Http/Cache/State.hs index 68114ee..7d3f36c 100644 --- a/library/Freckle/App/Http/Cache/State.hs +++ b/library/Freckle/App/Http/Cache/State.hs @@ -56,6 +56,7 @@ stateHttpCacheSettings = HttpCacheSettings { shared = False , cacheable = const True + , forceTTL = Nothing , defaultTTL = fiveMinuteTTL , getCurrentTime = liftIO getCurrentTime , logDebug = \_ -> pure () diff --git a/package.yaml b/package.yaml index 4318d2d..ac640eb 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: freckle-http -version: 0.3.0.1 +version: 0.3.1.0 maintainer: Freckle Education category: HTTP github: freckle/freckle-http