import Data.Maybe
import Data.Monoid
import Data.Monoid.Unicode
-import Data.Proxy
import Data.Tagged
import Data.Text (Text)
import Data.Time
method ← getMethod
when (method ≡ GET ∨ method ≡ HEAD)
$ setHeader "Last-Modified"
- $ flip proxy http
- $ cs timeStamp
+ $ formatUTCTime timeStamp
when (method ≡ POST)
$ abort
$ mkAbortion' InternalServerError
method ← getMethod
when (method ≡ GET ∨ method ≡ HEAD)
$ setHeader "Last-Modified"
- $ flip proxy http
- $ cs timeStamp
+ $ formatUTCTime timeStamp
when (method ≡ POST)
$ abort
$ mkAbortion' InternalServerError
ifModSince ← getHeader "If-Modified-Since"
case ifModSince of
- Just str → case fromAttempt $ ca (Tagged str ∷ Tagged HTTP Ascii) of
+ Just str → case untag' <$> (fromAttempt $ ca str) of
Just lastTime
→ when (timeStamp ≤ lastTime)
$ abort
ifUnmodSince ← getHeader "If-Unmodified-Since"
case ifUnmodSince of
- Just str → case fromAttempt $ ca (Tagged str ∷ Tagged HTTP Ascii) of
+ Just str → case untag' <$> (fromAttempt $ ca str) of
Just lastTime
→ when (timeStamp > lastTime)
$ abort
Nothing → return ()
driftTo ReceivingBody
+ where
+ untag' ∷ Tagged HTTP α → α
+ {-# INLINE untag' #-}
+ untag' = untag
-- |@'foundNoEntity' mStr@ tells the system that the 'Rsrc' found no
-- entity for the request URI. @mStr@ is an optional error message to