| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Servant.API.Modifiers
Synopsis
- data Required
- data Optional
- type FoldRequired (mods :: [Type]) = FoldRequired' 'False mods
- type family FoldRequired' (acc :: Bool) (mods :: [Type]) :: Bool where ...
- data Lenient
- data Strict
- type FoldLenient (mods :: [Type]) = FoldLenient' 'False mods
- type family FoldLenient' (acc :: Bool) (mods :: [Type]) :: Bool where ...
- type RequiredArgument (mods :: [Type]) a = If (FoldRequired mods) a (Maybe a)
- foldRequiredArgument :: forall (mods :: [Type]) a r. SBoolI (FoldRequired mods) => Proxy mods -> (a -> r) -> (Maybe a -> r) -> RequiredArgument mods a -> r
- unfoldRequiredArgument :: forall (mods :: [Type]) m a. (Monad m, SBoolI (FoldRequired mods), SBoolI (FoldLenient mods)) => Proxy mods -> m (RequiredArgument mods a) -> (Text -> m (RequiredArgument mods a)) -> Maybe (Either Text a) -> m (RequiredArgument mods a)
- type RequestArgument (mods :: [Type]) a = If (FoldRequired mods) (If (FoldLenient mods) (Either Text a) a) (Maybe (If (FoldLenient mods) (Either Text a) a))
- unfoldRequestArgument :: forall (mods :: [Type]) m a. (Monad m, SBoolI (FoldRequired mods), SBoolI (FoldLenient mods)) => Proxy mods -> m (RequestArgument mods a) -> (Text -> m (RequestArgument mods a)) -> Maybe (Either Text a) -> m (RequestArgument mods a)
Required / optional argument
Optional argument. Wrapped in Maybe.
Instances
| (KnownSymbol h, ToHttpApiData v) => AddHeader h v (Headers (fst ': rest) a) (Headers (Header h v ': (fst ': rest)) a) # | |
Defined in Servant.API.ResponseHeaders Methods addOptionalHeader :: ResponseHeader h v -> Headers (fst ': rest) a -> Headers (Header h v ': (fst ': rest)) a | |
| HasResponseHeader h a (Header h a ': rest) # | |
Defined in Servant.API.ResponseHeaders Methods hlistLookupHeader :: HList (Header h a ': rest) -> ResponseHeader h a | |
| (FromHttpApiData v, BuildHeadersTo xs, KnownSymbol h) => BuildHeadersTo (Header h v ': xs) # | |
Defined in Servant.API.ResponseHeaders Methods buildHeadersTo :: [Header] -> HList (Header h v ': xs) # | |
| (KnownSymbol h, GetHeadersFromHList rest, ToHttpApiData v) => GetHeaders' (Header h v ': rest) # | |
Defined in Servant.API.ResponseHeaders Methods getHeaders' :: Headers (Header h v ': rest) a -> [Header] | |
type FoldRequired (mods :: [Type]) = FoldRequired' 'False mods #
Fold modifier list to decide whether argument is required.
>>>:kind! FoldRequired '[Required, Description "something"]FoldRequired '[Required, Description "something"] :: Bool = 'True
>>>:kind! FoldRequired '[Required, Optional]FoldRequired '[Required, Optional] :: Bool = 'False
>>>:kind! FoldRequired '[]FoldRequired '[] :: Bool = 'False
type family FoldRequired' (acc :: Bool) (mods :: [Type]) :: Bool where ... #
Implementation of FoldRequired.
Equations
| FoldRequired' acc ('[] :: [Type]) = acc | |
| FoldRequired' acc (Required ': mods) = FoldRequired' 'True mods | |
| FoldRequired' acc (Optional ': mods) = FoldRequired' 'False mods | |
| FoldRequired' acc (mod ': mods) = FoldRequired' acc mods |
Lenient / strict parsing
Strictly parsed argument. Not wrapped.
Instances
| (KnownSymbol h, ToHttpApiData v) => AddHeader h v (Headers (fst ': rest) a) (Headers (Header h v ': (fst ': rest)) a) # | |
Defined in Servant.API.ResponseHeaders Methods addOptionalHeader :: ResponseHeader h v -> Headers (fst ': rest) a -> Headers (Header h v ': (fst ': rest)) a | |
| HasResponseHeader h a (Header h a ': rest) # | |
Defined in Servant.API.ResponseHeaders Methods hlistLookupHeader :: HList (Header h a ': rest) -> ResponseHeader h a | |
| (FromHttpApiData v, BuildHeadersTo xs, KnownSymbol h) => BuildHeadersTo (Header h v ': xs) # | |
Defined in Servant.API.ResponseHeaders Methods buildHeadersTo :: [Header] -> HList (Header h v ': xs) # | |
| (KnownSymbol h, GetHeadersFromHList rest, ToHttpApiData v) => GetHeaders' (Header h v ': rest) # | |
Defined in Servant.API.ResponseHeaders Methods getHeaders' :: Headers (Header h v ': rest) a -> [Header] | |
type FoldLenient (mods :: [Type]) = FoldLenient' 'False mods #
Fold modifier list to decide whether argument should be parsed strictly or leniently.
>>>:kind! FoldLenient '[]FoldLenient '[] :: Bool = 'False
type family FoldLenient' (acc :: Bool) (mods :: [Type]) :: Bool where ... #
Implementation of FoldLenient.
Equations
| FoldLenient' acc ('[] :: [Type]) = acc | |
| FoldLenient' acc (Lenient ': mods) = FoldLenient' 'True mods | |
| FoldLenient' acc (Strict ': mods) = FoldLenient' 'False mods | |
| FoldLenient' acc (mod ': mods) = FoldLenient' acc mods |
Utilities
type RequiredArgument (mods :: [Type]) a = If (FoldRequired mods) a (Maybe a) #
Arguments
| :: forall (mods :: [Type]) a r. SBoolI (FoldRequired mods) | |
| => Proxy mods | |
| -> (a -> r) | |
| -> (Maybe a -> r) | |
| -> RequiredArgument mods a | |
| -> r |
Fold a RequiredAgument into a value
Arguments
| :: forall (mods :: [Type]) m a. (Monad m, SBoolI (FoldRequired mods), SBoolI (FoldLenient mods)) | |
| => Proxy mods | |
| -> m (RequiredArgument mods a) | error when argument is required |
| -> (Text -> m (RequiredArgument mods a)) | error when argument is strictly parsed |
| -> Maybe (Either Text a) | value |
| -> m (RequiredArgument mods a) |
Unfold a value into a RequiredArgument.
type RequestArgument (mods :: [Type]) a = If (FoldRequired mods) (If (FoldLenient mods) (Either Text a) a) (Maybe (If (FoldLenient mods) (Either Text a) a)) #
Arguments
| :: forall (mods :: [Type]) m a. (Monad m, SBoolI (FoldRequired mods), SBoolI (FoldLenient mods)) | |
| => Proxy mods | |
| -> m (RequestArgument mods a) | error when argument is required |
| -> (Text -> m (RequestArgument mods a)) | error when argument is strictly parsed |
| -> Maybe (Either Text a) | value |
| -> m (RequestArgument mods a) |
Unfold a value into a RequestArgument.