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

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.14), base-compat (>=0.10.1 && <0.12), bytestring (>=0.10.4.0 && <0.11), dhall (>=1.29.0 && <1.30), either (>=5.0.1.1 && <5.1), http-media (>=0.7.1.2 && <0.9), megaparsec (>=7.0.4 && <8.1), prettyprinter (>=1.5.1 && <1.7), servant (>=0.17 && <0.18), 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
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 2020-01-24T10:49:33Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 1953 total (12 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2020-01-24 [all 1 reports]

Readme for servant-dhall-0.3

[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