packages feed

http-api-data 0.3.4 → 0.3.5

raw patch · 4 files changed

+30/−1 lines, 4 files

Files

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