Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module provides facilities for adding headers to a response.
>>>
let headerVal = addHeader "some-url" 5 :: Headers '[Header "Location" String] Int
The value is added to the header specified by the type (Location
in the
example above).
- data Headers ls a = Headers {
- getResponse :: a
- getHeadersHList :: HList ls
- class AddHeader h v orig new | h v orig -> new, new -> h, new -> v, new -> orig where
- addHeader :: v -> orig -> new
- class BuildHeadersTo hs where
- buildHeadersTo :: [Header] -> HList hs
- class GetHeaders ls where
- getHeaders :: ls -> [Header]
- type family HeaderValMap f xs
- data HList a where
Documentation
data Headers ls a
Response Header objects. You should never need to construct one directly.
Instead, use addHeader
.
Headers | |
|
(KnownSymbol h, ToByteString v, (~) Bool (Contains h ((:) * fst rest)) False) => AddHeader Symbol h v (Headers ((:) * fst rest) a) (Headers ((:) * (Header h v) ((:) * fst rest)) a) | |
Functor (Headers ls) | |
(KnownSymbol h, GetHeaders (HList rest), ToByteString v) => GetHeaders (Headers ((:) * (Header h v) rest) a) | |
GetHeaders (Headers ([] *) a) |
class AddHeader h v orig new | h v orig -> new, new -> h, new -> v, new -> orig where
:: v | |
-> orig | |
-> new | N.B.: The same header can't be added multiple times |
class BuildHeadersTo hs where
buildHeadersTo :: [Header] -> HList hs
Note: if there are multiple occurences of a header in the argument, the values are interspersed with commas before deserialization (see RFC2616 Sec 4.2)
BuildHeadersTo ([] *) | |
(FromByteString v, BuildHeadersTo xs, KnownSymbol h, (~) Bool (Contains h xs) False) => BuildHeadersTo ((:) * (Header h v) xs) |
class GetHeaders ls where
getHeaders :: ls -> [Header]
(KnownSymbol h, ToByteString x, GetHeaders (HList xs)) => GetHeaders (HList ((:) * (Header h x) xs)) | |
GetHeaders (HList ([] *)) | |
(KnownSymbol h, GetHeaders (HList rest), ToByteString v) => GetHeaders (Headers ((:) * (Header h v) rest) a) | |
GetHeaders (Headers ([] *) a) |
type family HeaderValMap f xs
HeaderValMap f `[]` = `[]` | |
HeaderValMap f (Header h x : xs) = Header h (f x) : HeaderValMap f xs |
data HList a where
(KnownSymbol h, ToByteString x, GetHeaders (HList xs)) => GetHeaders (HList ((:) * (Header h x) xs)) | |
GetHeaders (HList ([] *)) |