servant-0.4.1: A family of combinators for defining webservices APIs

Safe HaskellNone
LanguageHaskell2010

Servant.API.ResponseHeaders

Description

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).

Synopsis

Documentation

data Headers ls a Source

Response Header objects. You should never need to construct one directly. Instead, use addHeader.

Constructors

Headers 

Fields

getResponse :: a

The underlying value of a Headers

getHeadersHList :: HList ls

HList of headers.

Instances

(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 Source

Methods

addHeader Source

Arguments

:: v 
-> orig 
-> new

N.B.: The same header can't be added multiple times

Instances

(KnownSymbol h, ToByteString v, (~) * new (Headers ((:) * (Header h v) ([] *)) a)) => AddHeader Symbol h v a new 
(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) 

class BuildHeadersTo hs where Source

Methods

buildHeadersTo :: [Header] -> HList hs Source

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)

Instances

BuildHeadersTo ([] *) 
(FromByteString v, BuildHeadersTo xs, KnownSymbol h, (~) Bool (Contains h xs) False) => BuildHeadersTo ((:) * (Header h v) xs) 

class GetHeaders ls where Source

Methods

getHeaders :: ls -> [Header] Source

Instances

(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 Source

Equations

HeaderValMap f [] = [] 
HeaderValMap f (Header h x : xs) = Header h (f x) : HeaderValMap f xs 

data HList a where Source

Constructors

HNil :: HList [] 
HCons :: Header h x -> HList xs -> HList (Header h x : xs) 

Instances

(KnownSymbol h, ToByteString x, GetHeaders (HList xs)) => GetHeaders (HList ((:) * (Header h x) xs)) 
GetHeaders (HList ([] *))