http-api-data 0.3.4 → 0.3.5
raw patch · 4 files changed
+30/−1 lines, 4 files
Files
- CHANGELOG.md +6/−0
- http-api-data.cabal +1/−1
- src/Web/HttpApiData.hs +3/−0
- src/Web/Internal/HttpApiData.hs +20/−0
CHANGELOG.md view
@@ -1,3 +1,9 @@+0.3.5+---++* Minor changes:+ * Add `LenientData` which always succeeds to parse (see [#45](https://github.com/fizruk/http-api-data/pull/45)).+ 0.3.4 ---
http-api-data.cabal view
@@ -1,5 +1,5 @@ name: http-api-data-version: 0.3.4+version: 0.3.5 license: BSD3 license-file: LICENSE author: Nickolay Kudasov <nickolay.kudasov@gmail.com>
src/Web/HttpApiData.hs view
@@ -35,6 +35,9 @@ parseBoundedEnumOfI, parseBoundedTextData, + -- * Lenient data+ LenientData (..),+ -- * Other helpers showTextData, readTextData,
src/Web/Internal/HttpApiData.hs view
@@ -1,5 +1,9 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE DefaultSignatures #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-}@@ -11,6 +15,7 @@ #if __GLASGOW_HASKELL__ < 710 import Control.Applicative+import Data.Foldable (Foldable) import Data.Traversable (Traversable(traverse)) #endif @@ -48,6 +53,9 @@ import qualified Data.UUID.Types as UUID +import Data.Typeable (Typeable)+import Data.Data (Data)+ -- $setup -- >>> data BasicAuthToken = BasicAuthToken Text deriving (Show) -- >>> instance FromHttpApiData BasicAuthToken where parseHeader h = BasicAuthToken <$> parseHeaderWithPrefix "Basic " h; parseQueryParam p = BasicAuthToken <$> parseQueryParam p@@ -586,3 +594,15 @@ instance FromHttpApiData UUID.UUID where parseUrlPiece = maybe (Left "invalid UUID") Right . UUID.fromText parseHeader = maybe (Left "invalid UUID") Right . UUID.fromASCIIBytes+++-- | Lenient parameters. 'FromHttpApiData' combinators always return `Right`.+--+-- @since 0.3.5+newtype LenientData a = LenientData { getLenientData :: Either Text a }+ deriving (Eq, Ord, Show, Read, Typeable, Data, Functor, Foldable, Traversable)++instance FromHttpApiData a => FromHttpApiData (LenientData a) where+ parseUrlPiece = Right . LenientData . parseUrlPiece+ parseHeader = Right . LenientData . parseHeader+ parseQueryParam = Right . LenientData . parseQueryParam