servant-foreign-0.5: Helpers for generating clients for servant APIs in any programming language

Safe HaskellNone
LanguageHaskell2010

Servant.Foreign

Description

Generalizes all the data needed to make code generation work with arbitrary programming languages.

Synopsis

Documentation

class HasForeign layout where

Associated Types

type Foreign layout :: *

Methods

foreignFor :: Proxy layout -> Req -> Foreign layout

Instances

HasForeign Raw 
(HasForeign a, HasForeign b) => HasForeign ((:<|>) a b) 
Elem JSON list => HasForeign (Get list a) 
Elem JSON list => HasForeign (Post list a) 
Elem JSON list => HasForeign (Delete list a) 
Elem JSON list => HasForeign (Put list a) 
(KnownSymbol sym, HasForeign sublayout) => HasForeign ((:>) * * (Capture * sym a) sublayout) 
(KnownSymbol sym, HasForeign sublayout) => HasForeign ((:>) * * (Header sym a) sublayout) 
HasForeign sublayout => HasForeign ((:>) * * HttpVersion sublayout) 
(KnownSymbol sym, HasForeign sublayout) => HasForeign ((:>) * * (QueryParam * sym a) sublayout) 
(KnownSymbol sym, HasForeign sublayout) => HasForeign ((:>) * * (QueryParams * sym a) sublayout) 
(KnownSymbol sym, HasForeign sublayout) => HasForeign ((:>) * * (QueryFlag sym) sublayout) 
(Elem JSON list, HasForeign sublayout) => HasForeign ((:>) * * (ReqBody * list a) sublayout) 
HasForeign sublayout => HasForeign ((:>) * * RemoteHost sublayout) 
HasForeign sublayout => HasForeign ((:>) * * IsSecure sublayout) 
HasForeign sublayout => HasForeign ((:>) * * Vault sublayout) 
(KnownSymbol path, HasForeign sublayout) => HasForeign ((:>) Symbol * path sublayout) 

newtype Segment

Constructors

Segment 

Instances

data SegmentType

Constructors

Static Text

a static path segment. like "/foo"

Cap Arg

a capture. like "/:userid"

type FunctionName = [Text]

data QueryArg

Constructors

QueryArg 

Fields

_argName :: Arg
 
_argType :: ArgType
 

Instances

data HeaderArg

Constructors

HeaderArg 

Fields

headerArgName :: Text
 
ReplaceHeaderArg 

Fields

headerArgName :: Text
 
headerPattern :: Text
 

data ArgType

Constructors

Normal 
Flag 
List 

Instances

data Req

Instances

concatCase :: FunctionName -> Text

Function name builder that simply concat each part together

snakeCase :: FunctionName -> Text

Function name builder using the snake_case convention. each part is separated by a single underscore character.

camelCase :: FunctionName -> Text

Function name builder using the CamelCase convention. each part begins with an upper case character.

argName :: Lens' QueryArg Arg

path :: Lens' Url Path

reqUrl :: Lens' Req Url

reqBody :: Lens' Req Bool

reqMethod :: Lens' Req Method

queryStr :: Lens' Url [QueryArg]