servant-server-0.11: A family of combinators for defining webservices APIs and serving them

Safe Haskell | None
Language | Haskell2010

Servant.Server.Internal.ServantErr

Synopsis

- data ServantErr = ServantErr {
  - errHTTPCode :: Int
  - errReasonPhrase :: String
  - errBody :: ByteString
  - errHeaders :: [Header]
  }
- responseServantErr :: ServantErr -> Response
- err300 :: ServantErr
- err301 :: ServantErr
- err302 :: ServantErr
- err303 :: ServantErr
- err304 :: ServantErr
- err305 :: ServantErr
- err307 :: ServantErr
- err400 :: ServantErr
- err401 :: ServantErr
- err402 :: ServantErr
- err403 :: ServantErr
- err404 :: ServantErr
- err405 :: ServantErr
- err406 :: ServantErr
- err407 :: ServantErr
- err409 :: ServantErr
- err410 :: ServantErr
- err411 :: ServantErr
- err412 :: ServantErr
- err413 :: ServantErr
- err414 :: ServantErr
- err415 :: ServantErr
- err416 :: ServantErr
- err417 :: ServantErr
- err418 :: ServantErr
- err422 :: ServantErr
- err500 :: ServantErr
- err501 :: ServantErr
- err502 :: ServantErr
- err503 :: ServantErr
- err504 :: ServantErr
- err505 :: ServantErr

# Documentation

data ServantErr #

Constructors

ServantErr |
Fields errHTTPCode :: Int errReasonPhrase :: String errBody :: ByteString errHeaders :: [Header]

Instances

Eq ServantErr # |
Methods (==) :: ServantErr -> ServantErr -> Bool # (/=) :: ServantErr -> ServantErr -> Bool #
Read ServantErr # |
Methods readsPrec :: Int -> ReadS ServantErr # readList :: ReadS [ServantErr] # readPrec :: ReadPrec ServantErr # readListPrec :: ReadPrec [ServantErr] #
Show ServantErr # |
Methods showsPrec :: Int -> ServantErr -> ShowS # show :: ServantErr -> String # showList :: [ServantErr] -> ShowS #
Exception ServantErr # |
Methods toException :: ServantErr -> SomeException # fromException :: SomeException -> Maybe ServantErr # displayException :: ServantErr -> String #
MonadError ServantErr Handler # |
Methods throwError :: ServantErr -> Handler a # catchError :: Handler a -> (ServantErr -> Handler a) -> Handler a #

responseServantErr :: ServantErr -> Response #

err300 :: ServantErr #

`err300` Multiple Choices

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err300 { errBody = "I can't choose." }

err301 :: ServantErr #

`err301` Moved Permanently

Example:

    failingHandler :: Handler ()
    failingHandler = throwError err301

err302 :: ServantErr #

`err302` Found

Example:

    failingHandler :: Handler ()
    failingHandler = throwError err302

err303 :: ServantErr #

`err303` See Other

Example:

    failingHandler :: Handler ()
    failingHandler = throwError err303

err304 :: ServantErr #

`err304` Not Modified

Example:

    failingHandler :: Handler ()
    failingHandler = throwError err304

err305 :: ServantErr #

`err305` Use Proxy

Example:

    failingHandler :: Handler ()
    failingHandler = throwError err305

err307 :: ServantErr #

`err307` Temporary Redirect

Example:

    failingHandler :: Handler ()
    failingHandler = throwError err307

err400 :: ServantErr #

`err400` Bad Request

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err400 { errBody = "Your request makes no sense to me." }

err401 :: ServantErr #

`err401` Unauthorized

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err401 { errBody = "Your credentials are invalid." }

err402 :: ServantErr #

`err402` Payment Required

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err402 { errBody = "You have 0 credits. Please give me $$$." }

err403 :: ServantErr #

`err403` Forbidden

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err403 { errBody = "Please login first." }

err404 :: ServantErr #

`err404` Not Found

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err404 { errBody = "(╯°□°）╯︵ ┻━┻)." }

err405 :: ServantErr #

`err405` Method Not Allowed

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err405 { errBody = "Your account privileges does not allow for this.  Please pay $$$." }

err406 :: ServantErr #

`err406` Not Acceptable

Example:

    failingHandler :: Handler ()
    failingHandler = throwError err406

err407 :: ServantErr #

`err407` Proxy Authentication Required

Example:

    failingHandler :: Handler ()
    failingHandler = throwError err407

err409 :: ServantErr #

`err409` Conflict

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err409 { errBody = "Transaction conflicts with 59879cb56c7c159231eeacdd503d755f7e835f74" }

err410 :: ServantErr #

`err410` Gone

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err410 { errBody = "I know it was here at some point, but.. I blame bad luck." }

err411 :: ServantErr #

`err411` Length Required

Example:

    failingHandler :: Handler ()
    failingHandler = throwError err411

err412 :: ServantErr #

`err412` Precondition Failed

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err412 { errBody = "Precondition fail: x < 42 && y > 57" }

err413 :: ServantErr #

`err413` Request Entity Too Large

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err413 { errBody = "Request exceeded 64k." }

err414 :: ServantErr #

`err414` Request-URI Too Large

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err414 { errBody = "Maximum length is 64." }

err415 :: ServantErr #

`err415` Unsupported Media Type

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err415 { errBody = "Supported media types:  gif, png" }

err416 :: ServantErr #

`err416` Request range not satisfiable

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err416 { errBody = "Valid range is [0, 424242]." }

err417 :: ServantErr #

`err417` Expectation Failed

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err417 { errBody = "I found a quux in the request.  This isn't going to work." }

err418 :: ServantErr #

`err418` Expectation Failed

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err418 { errBody = "Apologies, this is not a webserver but a teapot." }

err422 :: ServantErr #

`err422` Unprocessable Entity

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err422 { errBody = "I understood your request, but can't process it." }

err500 :: ServantErr #

`err500` Internal Server Error

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err500 { errBody = "Exception in module A.B.C:55.  Have a great day!" }

err501 :: ServantErr #

`err501` Not Implemented

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err501 { errBody = "/v1/foo is not supported with quux in the request." }

err502 :: ServantErr #

`err502` Bad Gateway

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err502 { errBody = "Tried gateway foo, bar, and baz.  None responded." }

err503 :: ServantErr #

`err503` Service Unavailable

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err503 { errBody = "We're rewriting in PHP." }

err504 :: ServantErr #

`err504` Gateway Time-out

Example:

    failingHandler :: Handler ()
    failingHandler = throwError $ err504 { errBody = "Backend foobar did not respond in 5 seconds." }

err505 :: ServantErr #

`err505` HTTP Version not supported

Example usage:

    failingHandler :: Handler ()
    failingHandler = throwError $ err505 { errBody = "I support HTTP/4.0 only." }