webgear-core-1.2.0: Composable, type-safe library to build HTTP APIs
Safe HaskellSafe-Inferred
LanguageHaskell2010

WebGear.Core.Trait.Cookie

Description

Traits and middlewares to handle cookies in requests and responses.

Synopsis

Traits

data Cookie (e :: Existence) (name :: Symbol) (val :: Type) Source #

Trait for a cookie in HTTP requests

Constructors

Cookie 

Instances

Instances details
Trait (Cookie 'Optional name val) Request Source # 
Instance details

Defined in WebGear.Core.Trait.Cookie

Associated Types

type Attribute (Cookie 'Optional name val) Request Source #

Trait (Cookie 'Required name val) Request Source # 
Instance details

Defined in WebGear.Core.Trait.Cookie

Associated Types

type Attribute (Cookie 'Required name val) Request Source #

TraitAbsence (Cookie 'Optional name val) Request Source # 
Instance details

Defined in WebGear.Core.Trait.Cookie

Associated Types

type Absence (Cookie 'Optional name val) Request Source #

TraitAbsence (Cookie 'Required name val) Request Source # 
Instance details

Defined in WebGear.Core.Trait.Cookie

Associated Types

type Absence (Cookie 'Required name val) Request Source #

type Absence (Cookie 'Optional name val) Request Source # 
Instance details

Defined in WebGear.Core.Trait.Cookie

type Absence (Cookie 'Required name val) Request Source # 
Instance details

Defined in WebGear.Core.Trait.Cookie

type Attribute (Cookie 'Optional name val) Request Source # 
Instance details

Defined in WebGear.Core.Trait.Cookie

type Attribute (Cookie 'Optional name val) Request = Maybe val
type Attribute (Cookie 'Required name val) Request Source # 
Instance details

Defined in WebGear.Core.Trait.Cookie

type Attribute (Cookie 'Required name val) Request = val
type Prerequisite (Cookie e name val) ts Request Source # 
Instance details

Defined in WebGear.Core.Trait.Cookie

type Prerequisite (Cookie e name val) ts Request = HasTrait (RequestHeader e 'Strict "Cookie" Text) ts

data SetCookie (e :: Existence) (name :: Symbol) Source #

Trait for a cookie in HTTP responses

Constructors

SetCookie 

Instances

Instances details
Trait (SetCookie 'Optional name) Response Source # 
Instance details

Defined in WebGear.Core.Trait.Cookie

Associated Types

type Attribute (SetCookie 'Optional name) Response Source #

Trait (SetCookie 'Required name) Response Source # 
Instance details

Defined in WebGear.Core.Trait.Cookie

Associated Types

type Attribute (SetCookie 'Required name) Response Source #

type Attribute (SetCookie 'Optional name) Response Source # 
Instance details

Defined in WebGear.Core.Trait.Cookie

type Attribute (SetCookie 'Required name) Response Source # 
Instance details

Defined in WebGear.Core.Trait.Cookie

Middlewares

cookie Source #

Arguments

:: forall name val h ts. (ArrowChoice h, Get h (Cookie Required name val) Request, HasTrait (RequestHeader Required Strict "Cookie" Text) ts) 
=> h (Request `With` ts, Either CookieNotFound CookieParseError) Response

Error handler

-> Middleware h ts (Cookie Required name val : ts) 

Extract a cookie and convert it to a value of type val.

The associated trait attribute has type val.

Example usage:

cookie @"name" @Integer errorHandler okHandler

optionalCookie Source #

Arguments

:: forall name val h ts. (ArrowChoice h, Get h (Cookie Optional name val) Request, HasTrait (RequestHeader Optional Strict "Cookie" Text) ts) 
=> h (Request `With` ts, CookieParseError) Response

Error handler

-> Middleware h ts (Cookie Optional name val : ts) 

Extract an optional cookie and convert it to a value of type val.

The associated trait attribute has type Maybe val; a Nothing value indicates that the cookie is missing from the request.

Example usage:

optionalCookie @"name" @Integer errorHandler okHandler

setCookie :: forall name h ts. Set h (SetCookie Required name) Response => h (Response `With` ts, SetCookie) (Response `With` (SetCookie Required name : ts)) Source #

Set a cookie value in a response.

Example usage:

response' <- setCookie @"name" -< (response, cookie)

setOptionalCookie :: forall name h ts. Set h (SetCookie Optional name) Response => h (Response `With` ts, Maybe SetCookie) (Response `With` (SetCookie Optional name : ts)) Source #

Set an optional cookie value in a response.

Setting the cookie to Nothing will remove it from the response if it was previously set. The cookie will be considered as optional in all relevant places (such as documentation).

Example usage:

response' <- setOptionalCookie @"name" -< (response, cookie)