servant-checked-exceptions-core-2.0.0.0: Checked exceptions for Servant APIs.

CopyrightDennis Gosnell 2017
LicenseBSD3
MaintainerDennis Gosnell (cdep.illabout@gmail.com)
Stabilityexperimental
Portabilityunknown
Safe HaskellNone
LanguageHaskell2010

Servant.Checked.Exceptions.Internal.Servant.API

Description

This module defines the Throws and Throwing types.

Synopsis

Documentation

data Throws (e :: *) Source #

Throws is used in Servant API definitions and signifies that an API will throw the given error.

Here is an example of how to create an API that potentially returns a String as an error, or an Int on success:

>>> import Servant.API (Get, JSON, (:>))
>>> type API = Throws String :> Get '[JSON] Int

data NoThrow Source #

NoThrow is used to indicate that an API will not throw an error, but that it will still return a response wrapped in a Envelope.

Examples

Create an API using NoThrow:

>>> import Servant.API (Get, JSON, (:>))
>>> type API = NoThrow :> Get '[JSON] Int

A servant-server handler for this type would look like the following:

  apiHandler :: Handler (Envelope '[] Int)
  apiHandler = pureSuccEnvelope 3

data Throwing (e :: [*]) Source #

This is used internally and should not be used by end-users.

type family ThrowingNonterminal api where ... Source #

Used by the HasServer and HasClient instances for Throwing es :> api :> apis to detect Throwing es followed immediately by Throws e.

Equations

ThrowingNonterminal (Throwing es :> (Throws e :> api)) = Throwing (Snoc es e) :> api 
ThrowingNonterminal (Throwing es :> (c :> api)) = c :> (Throwing es :> api) 

class ErrStatus e where Source #

Minimal complete definition

toErrStatus

Methods

toErrStatus :: e -> Status Source #

type family AllErrStatus (es :: [k]) :: Constraint where ... Source #

Equations

AllErrStatus '[] = () 
AllErrStatus (a ': as) = (ErrStatus a, AllErrStatus as) 
>>> :set -XDataKinds
>>> :set -XTypeOperators