webgear-server-0.2.0: Composable, type-safe library to build HTTP API servers

Copyright(c) Raghu Kaippully 2020
LicenseMPL-2.0
Maintainerrkaippully@gmail.com
Safe HaskellNone
LanguageHaskell2010

WebGear.Middlewares.Params

Contents

Description

Middlewares for handling query parameters

Synopsis

Traits

type QueryParam (name :: Symbol) val = QueryParam' Required Strict name val Source #

Capture a query parameter with a specified name and convert it to a value of type val via FromHttpApiData.

data QueryParam' (e :: Existence) (p :: ParseStyle) (name :: Symbol) val Source #

Capture a query parameter with a specified name and convert it to a value of type val via FromHttpApiData. The type parameter e denotes whether the query parameter is required to be present. The parse style parameter p determines whether the conversion is applied strictly or leniently.

Instances
(KnownSymbol name, FromHttpApiData val, Monad m) => Trait (QueryParam' Required Strict name val :: Type) Request m Source # 
Instance details

Defined in WebGear.Middlewares.Params

Associated Types

type Attribute (QueryParam' Required Strict name val) Request :: Type Source #

type Absence (QueryParam' Required Strict name val) Request :: Type Source #

(KnownSymbol name, FromHttpApiData val, Monad m) => Trait (QueryParam' Required Lenient name val :: Type) Request m Source # 
Instance details

Defined in WebGear.Middlewares.Params

(KnownSymbol name, FromHttpApiData val, Monad m) => Trait (QueryParam' Optional Strict name val :: Type) Request m Source # 
Instance details

Defined in WebGear.Middlewares.Params

Associated Types

type Attribute (QueryParam' Optional Strict name val) Request :: Type Source #

type Absence (QueryParam' Optional Strict name val) Request :: Type Source #

(KnownSymbol name, FromHttpApiData val, Monad m) => Trait (QueryParam' Optional Lenient name val :: Type) Request m Source # 
Instance details

Defined in WebGear.Middlewares.Params

type Attribute (QueryParam' Required Strict name val :: Type) Request Source # 
Instance details

Defined in WebGear.Middlewares.Params

type Attribute (QueryParam' Required Strict name val :: Type) Request = val
type Attribute (QueryParam' Required Lenient name val :: Type) Request Source # 
Instance details

Defined in WebGear.Middlewares.Params

type Attribute (QueryParam' Optional Strict name val :: Type) Request Source # 
Instance details

Defined in WebGear.Middlewares.Params

type Attribute (QueryParam' Optional Lenient name val :: Type) Request Source # 
Instance details

Defined in WebGear.Middlewares.Params

type Absence (QueryParam' Required Strict name val :: Type) Request Source # 
Instance details

Defined in WebGear.Middlewares.Params

type Absence (QueryParam' Required Lenient name val :: Type) Request Source # 
Instance details

Defined in WebGear.Middlewares.Params

type Absence (QueryParam' Optional Strict name val :: Type) Request Source # 
Instance details

Defined in WebGear.Middlewares.Params

type Absence (QueryParam' Optional Lenient name val :: Type) Request Source # 
Instance details

Defined in WebGear.Middlewares.Params

Middlewares

queryParam :: forall name val m req a. (KnownSymbol name, FromHttpApiData val, MonadRouter m) => RequestMiddleware' m req (QueryParam name val ': req) a Source #

A middleware to extract a query parameter and convert it to a value of type val using FromHttpApiData.

Example usage:

queryParam @"limit" @Int handler

The associated trait attribute has type val. This middleware will respond with a 400 Bad Request response if the query parameter is not found or could not be parsed.

optionalQueryParam :: forall name val m req a. (KnownSymbol name, FromHttpApiData val, MonadRouter m) => RequestMiddleware' m req (QueryParam' Optional Strict name val ': req) a Source #

A middleware to extract an optional query parameter and convert it to a value of type val using FromHttpApiData.

Example usage:

optionalQueryParam @"limit" @Int handler

The associated trait attribute has type Maybe val; a Nothing value indicates a missing param. A 400 Bad Request response is returned if the query parameter could not be parsed.

lenientQueryParam :: forall name val m req a. (KnownSymbol name, FromHttpApiData val, MonadRouter m) => RequestMiddleware' m req (QueryParam' Required Lenient name val ': req) a Source #

A middleware to extract a query parameter and convert it to a value of type val using FromHttpApiData.

Example usage:

lenientQueryParam @"limit" @Int handler

The associated trait attribute has type Either Text val. A 400 Bad Request reponse is returned if the query parameter is missing. The parsing is done leniently; the trait attribute is set to Left Text in case of parse errors or Right val on success.

optionalLenientQueryParam :: forall name val m req a. (KnownSymbol name, FromHttpApiData val, MonadRouter m) => RequestMiddleware' m req (QueryParam' Optional Lenient name val ': req) a Source #

A middleware to extract an optional query parameter and convert it to a value of type val using FromHttpApiData.

Example usage:

optionalLenientHeader @"Content-Length" @Integer handler

The associated trait attribute has type Maybe (Either Text val). This middleware never fails.