{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE OverloadedStrings #-}
module Network.Wai.Routing.Purescheme.Core.Header
( headerValue
, headerValue'
)
where
import Network.Wai.Routing.Purescheme.Core.Basic
import Data.ByteString (ByteString)
import qualified Data.CaseInsensitive as CI
import Network.HTTP.Types.Header (HeaderName)
import Network.Wai (requestHeaders)
headerValue :: ByteString -> (Maybe ByteString -> GenericApplication b) -> GenericApplication b
ByteString
name = HeaderName
-> (Maybe ByteString -> GenericApplication b)
-> GenericApplication b
forall b.
HeaderName
-> (Maybe ByteString -> GenericApplication b)
-> GenericApplication b
headerValue' (ByteString -> HeaderName
forall s. FoldCase s => s -> CI s
CI.mk ByteString
name)
headerValue' :: HeaderName -> (Maybe ByteString -> GenericApplication b) -> GenericApplication b
HeaderName
name Maybe ByteString -> GenericApplication b
f Request
req =
let
maybeValue :: Maybe ByteString
maybeValue = HeaderName -> [(HeaderName, ByteString)] -> Maybe ByteString
forall a b. Eq a => a -> [(a, b)] -> Maybe b
lookup HeaderName
name (Request -> [(HeaderName, ByteString)]
requestHeaders Request
req)
in
Maybe ByteString -> GenericApplication b
f Maybe ByteString
maybeValue Request
req