module Network.Wai.RequestSpec.Combinators (
intP,
boolP,
floatP,
textP,
bytesP,
textPM,
intPM,
floatPM,
bytesPM,
intH,
boolH,
floatH,
textH,
bytesH,
textHM,
intHM,
floatHM,
bytesHM,
choice
) where
import Control.Applicative
import Data.ByteString
import Data.CaseInsensitive
import Data.Foldable (asum)
import Data.Text
import Network.Wai.RequestSpec.Internal.Combinators
import Network.Wai.RequestSpec.Internal.Env
import Network.Wai.RequestSpec.Internal.Parser
intP :: (Read a, Integral a) => Text -> Env -> P a
intP = param int
boolP :: Text -> Env -> P Bool
boolP = param bool
floatP :: (Read a, Fractional a) => Text -> Env -> P a
floatP = param float
textP :: Text -> Env -> P Text
textP = param pure
bytesP :: (Text -> ByteString) -> Text -> Env -> P ByteString
bytesP f = param (pure . f)
intPM :: (Read a, Integral a) => Text -> Env -> P (Maybe a)
intPM = paramM int
floatPM :: (Read a, Fractional a) => Text -> Env -> P (Maybe a)
floatPM = paramM float
textPM :: Text -> Env -> P (Maybe Text)
textPM = paramM pure
bytesPM :: (Text -> ByteString) -> Text -> Env -> P (Maybe ByteString)
bytesPM f = paramM (pure . f)
intH :: (Integral a, Read a) => CI Text -> Env -> P a
intH = header int
boolH :: CI Text -> Env -> P Bool
boolH = header bool
floatH :: (Fractional a, Read a) => CI Text -> Env -> P a
floatH = header float
textH :: CI Text -> Env -> P Text
textH = header pure
bytesH :: (Text -> ByteString) -> CI Text -> Env -> P ByteString
bytesH f = header (pure . f)
textHM :: CI Text -> Env -> P (Maybe Text)
textHM = headerM pure
intHM :: (Integral a, Read a) => CI Text -> Env -> P (Maybe a)
intHM = headerM int
floatHM :: (Fractional a, Read a) => CI Text -> Env -> P (Maybe a)
floatHM = headerM float
bytesHM :: (Text -> ByteString) -> CI Text -> Env -> P (Maybe ByteString)
bytesHM f = headerM (pure . f)
choice :: [P a] -> P a
choice = asum