import qualified Data.Text as T
import Data.Time
import qualified Data.Time.HTTP as HTTP
-import Data.Typeable
import Network.HTTP.Lucu.Abortion
import Network.HTTP.Lucu.Authentication
import Network.HTTP.Lucu.Config
when (method ≡ POST)
$ abort
$ mkAbortion' InternalServerError
- "Illegal computation of foundTimeStamp for POST request."
+ "Illegal call of foundTimeStamp for POST request."
let statusForIfModSince
= if method ≡ GET ∨ method ≡ HEAD then
else
fromStatusCode PreconditionFailed
- -- If-Modified-Since があればそれを見る。
ifModSince ← getHeader "If-Modified-Since"
case ifModSince of
Just str → case HTTP.fromAscii str of
$ abort
$ mkAbortion' statusForIfModSince
$ "The entity has not been modified since " ⊕ A.toText str
- Left _
- → return () -- 不正な時刻は無視
+ Left e
+ → abort $ mkAbortion' BadRequest
+ $ "Malformed If-Modified-Since: " ⊕ T.pack e
Nothing → return ()
- -- If-Unmodified-Since があればそれを見る。
ifUnmodSince ← getHeader "If-Unmodified-Since"
case ifUnmodSince of
Just str → case HTTP.fromAscii str of
$ abort
$ mkAbortion' PreconditionFailed
$ "The entity has not been modified since " ⊕ A.toText str
- Left _
- → return () -- 不正な時刻は無視
+ Left e
+ → abort $ mkAbortion' BadRequest
+ $ "Malformed If-Unmodified-Since: " ⊕ T.pack e
Nothing → return ()
driftTo ReceivingBody
-- 'isRedirection' or it raises an error.
redirect ∷ StatusCode sc ⇒ sc → URI → Resource ()
redirect sc uri
- = do when (cast sc ≡ Just NotModified ∨ (¬) (isRedirection sc))
+ = do when (sc ≈ NotModified ∨ (¬) (isRedirection sc))
$ abort
$ mkAbortion' InternalServerError
$ A.toText