servant-dhall: Servant Dhall content-type

[ bsd3, dhall, library, servant, web ] [ Propose Tags ]

Servant Dhall bindings.

Provides MimeRender and MimeUnrender instances. So you can accept and return Dhall expressions.

Note: Reading (and evaluating) Dhall expressions from untrusted sources is a security risk.


[Skip to Readme]

Modules

[Index] [Quick Jump]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1, 0.1.0.1, 0.1.0.2, 0.3
Change log CHANGELOG.md
Dependencies base (>=4.9 && <4.13), base-compat (>=0.10.1 && <0.11), bytestring (>=0.10.4.0 && <0.11), dhall (>=1.20.1 && <1.22), http-media (>=0.7.1.2 && <0.9), megaparsec (>=7.0.4 && <7.1), prettyprinter (>=1.2.0.1 && <1.3), servant (>=0.13 && <0.17), text (>=1.2.3.0 && <1.3) [details]
License BSD-3-Clause
Copyright 2018-2019 Servant Contributors
Author Servant Contributors
Maintainer haskell-servant-maintainers@googlegroups.com
Revised Revision 1 made by phadej at 2019-04-16T19:15:07Z
Category Web, Servant, Dhall
Home page http://haskell-servant.readthedocs.org/
Bug tracker http://github.com/haskell-servant/servant-dhall/issues
Source repo head: git clone http://github.com/haskell-servant/servant-dhall.git
Uploaded by phadej at 2019-02-27T21:55:40Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 1952 total (11 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2019-02-27 [all 1 reports]

Readme for servant-dhall-0.1.0.2

[back to package description]

servant-dhall - Servant Dhall bindings

servant

Note: accepting dhall expressions from untrusted sources is a security risk.

Example

Run example

cabal new-run example run

Get

% curl 'localhost:8000/get'
[ +1, +2, +3, +4, +5, +6, +7, +8, +9, +10 ] : List Integer

Post

% curl -D - -X POST -H 'Content-Type: application/x-dhall' --data-raw '[+10,+20]' 'localhost:8000/post'
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Date: Wed, 13 Jun 2018 10:41:07 GMT
Server: Warp/3.2.22
Content-Type: application/x-dhall

[ +11, +21 ] : List Integer

Error case: Unexpected type

% curl -D - -X POST -H 'Content-Type: application/x-dhall' --data-raw '[10]' 'localhost:8000/post'
curl: (7) Failed to connect to localhost port 8000: Connection refused
[FL973] ~/Documents/public-haskell/servant-dhall % curl -D - -X POST -H 'Content-Type: application/x-dhall' --data-raw '[10]' 'localhost:8000/post'
HTTP/1.1 400 Bad Request
Transfer-Encoding: chunked
Date: Wed, 13 Jun 2018 10:45:39 GMT
Server: Warp/3.2.22

Expected and actual types don't match : List Integer /= List Natural

Error case: Type error

% curl -D - -X POST -H 'Content-Type: application/x-dhall' --data-raw 'True && +1' 'localhost:8000/post'
HTTP/1.1 400 Bad Request
Transfer-Encoding: chunked
Date: Wed, 13 Jun 2018 10:51:52 GMT
Server: Warp/3.2.22

Type error: 
Error: ❰&&❱ only works on ❰Bool❱s

True && +1

(input):1:1

Error case: Imports

As deserialisation is done in pure context type-checking Dhall expressions with imports is not possible.

% curl -D - -X POST -H 'Content-Type: application/x-dhall' --data-raw 'http://example.com/dhall' 'localhost:8000/post'
HTTP/1.1 400 Bad Request
Transfer-Encoding: chunked
Date: Wed, 13 Jun 2018 10:53:52 GMT
Server: Warp/3.2.22

Import found: http://example.com/dhall