wai-problem-details: Problem details middleware for WAI

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

Problem details middleware for WAI.

It exposes a functions to throw exceptions of type ProblemDetailsException that implements the problem details RFC as specified in https://www.rfc-editor.org/rfc/rfc7807.


[Skip to Readme]

Properties

Versions 0.1.0.0, 0.1.0.0, 0.1.1.0
Change log None available
Dependencies aeson (>=2.1.2 && <2.2), base (>=4.16.4.0 && <4.17), bytestring (>=0.11.3 && <0.12), data-default (>=0.7.1 && <0.8), deriving-aeson (>=0.2.9 && <0.3), http-types (>=0.12.3 && <0.13), network-uri (>=2.6.4 && <2.7), text (>=1.2.5 && <1.3), wai (>=3.2.3 && <3.3) [details]
License MIT
Copyright Alexander Goussas 2023
Author Alexander Goussas
Maintainer goussasalexander@gmail.com
Category Web
Home page https://github.com/aloussase/wai-problem-details
Bug tracker https://github.com/aloussase/wai-problem-details/issues
Source repo head: git clone https://github.com/aloussase/wai-problem-details.git
Uploaded by aloussase at 2023-04-27T17:00:17Z

Modules

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for wai-problem-details-0.1.0.0

[back to package description]

wai-problem-details

Middleware for returning problem details responses as specified in https://www.rfc-editor.org/rfc/rfc7807.

{-# LANGUAGE OverloadedStrings #-}

import qualified Web.Scotty as S
import Network.Wai.Handler.Warp (run)
import Data.Function ((&))
import Data.Default
import Network.Wai.Middleware.ProblemDetails

app :: IO Application
app = S.scottyApp $ do
  S.get "/default"           $ throwProblemDetails def
  S.get "/predefined"        $ throwProblemDetails problemDetails400
  S.get "/predefined-custom" $ throwProblemDetails (problemDetails404 & setTitle "Ahooy!")

main :: IO ()
main = run 8080 =<< app

License

MIT