servant-cassava-0.10.2: Servant CSV content-type for cassava
Safe HaskellNone
LanguageHaskell2010

Servant.CSV.Cassava

Description

A CSV empty datatype with MimeRender and MimeUnrender instances for cassava's encoding and decoding classes.

>>> type Eg = Get '[CSV' 'HasHeader MyEncodeOptions] [(Int, String)]

Default encoding and decoding options are also provided, along with the CSV type synonym that uses them.

>>> type EgDefault = Get '[CSV] [(Int, String)]
Synopsis

Documentation

class EncodeList (hasHeader :: HasHeader) a where Source #

A class to determine how to encode a list of elements

Currently, it's not possible to encode without headers using encodeDefaultOrderedByNameWith.

Methods

encodeList :: Proxy hasHeader -> EncodeOptions -> [a] -> ByteString Source #

data TabSeparatedOpts Source #

Options that work for tab delimited data, with content type text/tab-separated-values;charset=utf-8

Instances

Instances details
Generic TabSeparatedOpts Source # 
Instance details

Defined in Servant.CSV.Cassava

Associated Types

type Rep TabSeparatedOpts :: Type -> Type #

EncodeOpts TabSeparatedOpts Source # 
Instance details

Defined in Servant.CSV.Cassava

type Rep TabSeparatedOpts Source # 
Instance details

Defined in Servant.CSV.Cassava

type Rep TabSeparatedOpts = D1 ('MetaData "TabSeparatedOpts" "Servant.CSV.Cassava" "servant-cassava-0.10.2-ABvMqIz1xbeBAYGSKupgXG" 'False) (V1 :: Type -> Type)

data DefaultOpts Source #

Default options, instances providing defaultDecodeOptions and defaultEncodeOptions, and content type text/csv;charset=utf-8

Instances

Instances details
Generic DefaultOpts Source # 
Instance details

Defined in Servant.CSV.Cassava

Associated Types

type Rep DefaultOpts :: Type -> Type #

EncodeOpts DefaultOpts Source # 
Instance details

Defined in Servant.CSV.Cassava

type Rep DefaultOpts Source # 
Instance details

Defined in Servant.CSV.Cassava

type Rep DefaultOpts = D1 ('MetaData "DefaultOpts" "Servant.CSV.Cassava" "servant-cassava-0.10.2-ABvMqIz1xbeBAYGSKupgXG" 'False) (V1 :: Type -> Type)

class SHasHeaderI (hasHeader :: HasHeader) where Source #

Class to provide SHasHeader implicitly.

Methods

shasheader :: SHasHeader hasHeader Source #

Instances

Instances details
SHasHeaderI 'NoHeader Source # 
Instance details

Defined in Servant.CSV.Cassava

SHasHeaderI 'HasHeader Source # 
Instance details

Defined in Servant.CSV.Cassava

data SHasHeader (hasHeader :: HasHeader) where Source #

'HasHeader singleton.

data CSV' (hasHeader :: HasHeader) opt Source #

Instances

Instances details
EncodeOpts opt => Accept (CSV' hasHeader opt :: Type) Source #

Content type can be determined to coincide with encode opts.

Instance details

Defined in Servant.CSV.Cassava

Methods

contentType :: Proxy (CSV' hasHeader opt) -> MediaType #

contentTypes :: Proxy (CSV' hasHeader opt) -> NonEmpty MediaType #

(EncodeOpts opt, EncodeList hasHeader a) => MimeRender (CSV' hasHeader opt :: Type) (Vector a) Source # 
Instance details

Defined in Servant.CSV.Cassava

Methods

mimeRender :: Proxy (CSV' hasHeader opt) -> Vector a -> ByteString #

(EncodeOpts opt, EncodeList hasHeader a) => MimeRender (CSV' hasHeader opt :: Type) [a] Source # 
Instance details

Defined in Servant.CSV.Cassava

Methods

mimeRender :: Proxy (CSV' hasHeader opt) -> [a] -> ByteString #

(FromRecord a, EncodeOpts opt, SHasHeaderI hasHeader) => MimeUnrender (CSV' hasHeader opt :: Type) (Vector a) Source #

Decode with decodeWith.

Instance details

Defined in Servant.CSV.Cassava

Methods

mimeUnrender :: Proxy (CSV' hasHeader opt) -> ByteString -> Either String (Vector a) #

mimeUnrenderWithType :: Proxy (CSV' hasHeader opt) -> MediaType -> ByteString -> Either String (Vector a) #

(FromRecord a, EncodeOpts opt, SHasHeaderI hasHeader) => MimeUnrender (CSV' hasHeader opt :: Type) [a] Source #

Decode with decodeWith.

Instance details

Defined in Servant.CSV.Cassava

Methods

mimeUnrender :: Proxy (CSV' hasHeader opt) -> ByteString -> Either String [a] #

mimeUnrenderWithType :: Proxy (CSV' hasHeader opt) -> MediaType -> ByteString -> Either String [a] #

(ToNamedRecord a, EncodeOpts opt, SHasHeaderI hasHeader) => MimeRender (CSV' hasHeader opt :: Type) (Header, Vector a) Source #

Encode with encodeByNameWith. The Header param is used for determining the order of headers and fields.

Instance details

Defined in Servant.CSV.Cassava

Methods

mimeRender :: Proxy (CSV' hasHeader opt) -> (Header, Vector a) -> ByteString #

(ToNamedRecord a, EncodeOpts opt, SHasHeaderI hasHeader) => MimeRender (CSV' hasHeader opt :: Type) (Header, [a]) Source #

Encode with encodeByNameWith. The Header param is used for determining the order of headers and fields.

Instance details

Defined in Servant.CSV.Cassava

Methods

mimeRender :: Proxy (CSV' hasHeader opt) -> (Header, [a]) -> ByteString #

(FromNamedRecord a, EncodeOpts opt) => MimeUnrender (CSV' 'HasHeader opt :: Type) (Header, Vector a) Source # 
Instance details

Defined in Servant.CSV.Cassava

(FromNamedRecord a, EncodeOpts opt) => MimeUnrender (CSV' 'HasHeader opt :: Type) (Header, [a]) Source #

Decode with decodeByNameWith.

Instance details

Defined in Servant.CSV.Cassava

encodeOpts' :: forall opt hasHeader. (EncodeOpts opt, SHasHeaderI hasHeader) => Proxy opt -> Proxy hasHeader -> EncodeOptions Source #

data HasHeader #

Is the CSV data preceded by a header?

Constructors

HasHeader

The CSV data is preceded by a header

NoHeader

The CSV data is not preceded by a header