content: -- |
  -- Convert Haskell values to and from HTTP API data
  -- such as URL pieces, headers and query parameters.
  module Web.HttpApiData (
    -- * Examples
    -- $examples
  
    -- * Classes
    ToHttpApiData (..),
    FromHttpApiData (..),
  
    -- * @'Maybe'@ parsers
    parseUrlPieceMaybe,
    parseHeaderMaybe,
    parseQueryParamMaybe,
  
    -- * Prefix parsers
    parseUrlPieceWithPrefix,
    parseHeaderWithPrefix,
    parseQueryParamWithPrefix,
  
    -- * Multiple URL pieces
    toUrlPieces,
    parseUrlPieces,
  
    -- * Multiple query params
    toQueryParams,
    parseQueryParams,
  
    -- * Parsers for @'Bounded'@ @'Enum'@s
    parseBoundedUrlPiece,
    parseBoundedQueryParam,
    parseBoundedHeader,
    parseBoundedEnumOf,
    parseBoundedEnumOfI,
    parseBoundedTextData,
  
    -- * Lenient data
    LenientData (..),
  
    -- * Other helpers
    showTextData,
    readTextData,
  ) where
  
  import           Web.Internal.HttpApiData
  
  -- $setup
  --
  -- >>> :set -XOverloadedStrings
  -- >>> import Control.Applicative
  -- >>> import Data.Time.Compat
  -- >>> import Data.Int
  -- >>> import Data.Text (Text)
  -- >>> import Data.Version
  
  -- $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] :: [Text]
  -- ["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)
  
  