http-api-data

Converting to/from HTTP API data like URL pieces, headers and query parameters.

http://github.com/fizruk/http-api-data

Version on this page:0.2.4
LTS Haskell 18.0:0.4.2
Stackage Nightly 2021-06-20:0.4.3@rev:2
Latest on Hackage:0.4.3@rev:2

See all snapshots http-api-data appears in

BSD-3-Clause licensed and maintained by Nickolay Kudasov
This version can be pinned in stack with:http-api-data-0.2.4@sha256:d940fc355cb09e4d18d54fe852bb8fd5ad45104d3c84836dd6667260e24a8a14,1894

Module documentation for 0.2.4

http-api-data

Hackage package Build Status

This package defines typeclasses used for converting Haskell data types to and from HTTP API data.

Examples

Booleans:

>>> toUrlPiece True
"true"
>>> parseUrlPiece "false" :: Either Text Bool
Right False
>>> parseUrlPieces ["true", "false", "undefined"] :: Either Text [Bool]
Left "could not parse: `undefined'"

Numbers:

>>> toQueryParam 45.2
"45.2"
>>> parseQueryParam "452" :: Either Text Int
Right 452
>>> toQueryParams [1..5]
["1","2","3","4","5"]
>>> parseQueryParams ["127", "255"] :: Either Text [Int8]
Left "out of bounds: `255' (should be between -128 and 127)"

Strings:

>>> toHeader "hello"
"hello"
>>> parseHeader "world" :: Either Text String
Right "world"

Calendar day:

>>> toQueryParam (fromGregorian 2015 10 03)
"2015-10-03"
>>> toGregorian <$> parseQueryParam "2016-12-01"
Right (2016,12,1)

Contributing

Contributions and bug reports are welcome!

Changes

0.2.4

  • Make parseHeader total (instead of throwing exceptions on invalid Unicode, see #30).

0.2.3

  • Add more parser helpers for Bounded Enum types.

0.2.2

  • Add instances for more time types: LocalTime, ZonedTime, UTCTime and NominalDiffTime

0.2.1

  • Add helpers for multiple URL pieces and query params:
    • toUrlPieces, parseUrlPieces
    • toQueryParams, parseQueryParams

0.2

  • Export helper functions from Web.HttpApiData:
    • parseUrlPieceMaybe, parseHeaderMaybe, parseQueryParamMaybe
    • parseUrlPieceWithPrefix, parseHeaderWithPrefix, parseQueryParamWithPrefix
    • showTextData, readTextData, parseBoundedTextData
  • Fix AMP related warnings

0.1.1

  • Add use-text-show flag to optionally use more efficient TextShow instances