Hello community,

here is the log from the commit of package ghc-http-api-data for 
openSUSE:Factory checked in at 2018-10-25 08:16:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-http-api-data (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-http-api-data.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-http-api-data"

Thu Oct 25 08:16:50 2018 rev:12 rq:642867 version:0.3.10

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-http-api-data/ghc-http-api-data.changes      
2018-07-21 10:21:54.763005331 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-http-api-data.new/ghc-http-api-data.changes 
2018-10-25 08:17:22.388043687 +0200
@@ -1,0 +2,21 @@
+Wed Oct 10 19:24:02 UTC 2018 - [email protected]
+
+- Update http-api-data to version 0.3.10.
+  0.3.10
+  ---
+
+  * Fix 'SetCookie' instances
+    (see [#86](https://github.com/fizruk/http-api-data/pull/86))
+  * Add support for `Fixed`
+    (see [#78](https://github.com/fizruk/http-api-data/pull/87))
+
+  0.3.9
+  ---
+
+  * GHC-8.6 support
+  * Remove dependency on `uri-bytestring` and use functions from `http-types` 
instead
+    (see [#75](https://github.com/fizruk/http-api-data/pull/78))
+  * Add support for `SetCookie`
+    (see [#74](https://github.com/fizruk/http-api-data/pull/74))
+
+-------------------------------------------------------------------

Old:
----
  http-api-data-0.3.8.1.tar.gz

New:
----
  http-api-data-0.3.10.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-http-api-data.spec ++++++
--- /var/tmp/diff_new_pack.Umdt9S/_old  2018-10-25 08:17:22.988043426 +0200
+++ /var/tmp/diff_new_pack.Umdt9S/_new  2018-10-25 08:17:22.992043424 +0200
@@ -12,14 +12,14 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
 %global pkg_name http-api-data
 %bcond_with tests
 Name:           ghc-%{pkg_name}
-Version:        0.3.8.1
+Version:        0.3.10
 Release:        0
 Summary:        Converting to/from HTTP API data like URL pieces, headers and 
query parameters
 License:        BSD-2-Clause
@@ -32,6 +32,7 @@
 BuildRequires:  ghc-bytestring-devel
 BuildRequires:  ghc-cabal-doctest-devel
 BuildRequires:  ghc-containers-devel
+BuildRequires:  ghc-cookie-devel
 BuildRequires:  ghc-hashable-devel
 BuildRequires:  ghc-http-types-devel
 BuildRequires:  ghc-rpm-macros
@@ -39,7 +40,6 @@
 BuildRequires:  ghc-time-devel
 BuildRequires:  ghc-time-locale-compat-devel
 BuildRequires:  ghc-unordered-containers-devel
-BuildRequires:  ghc-uri-bytestring-devel
 BuildRequires:  ghc-uuid-types-devel
 %if %{with tests}
 BuildRequires:  ghc-HUnit-devel

++++++ http-api-data-0.3.8.1.tar.gz -> http-api-data-0.3.10.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/http-api-data-0.3.8.1/CHANGELOG.md 
new/http-api-data-0.3.10/CHANGELOG.md
--- old/http-api-data-0.3.8.1/CHANGELOG.md      2018-03-15 00:11:02.000000000 
+0100
+++ new/http-api-data-0.3.10/CHANGELOG.md       2018-10-05 13:27:14.000000000 
+0200
@@ -1,3 +1,20 @@
+0.3.10
+---
+
+* Fix 'SetCookie' instances
+  (see [#86](https://github.com/fizruk/http-api-data/pull/86))
+* Add support for `Fixed`
+  (see [#78](https://github.com/fizruk/http-api-data/pull/87))
+
+0.3.9
+---
+
+* GHC-8.6 support
+* Remove dependency on `uri-bytestring` and use functions from `http-types` 
instead
+  (see [#75](https://github.com/fizruk/http-api-data/pull/78))
+* Add support for `SetCookie`
+  (see [#74](https://github.com/fizruk/http-api-data/pull/74))
+
 0.3.8.1
 ---
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/http-api-data-0.3.8.1/http-api-data.cabal 
new/http-api-data-0.3.10/http-api-data.cabal
--- old/http-api-data-0.3.8.1/http-api-data.cabal       2018-03-15 
00:11:02.000000000 +0100
+++ new/http-api-data-0.3.10/http-api-data.cabal        2018-10-05 
13:27:14.000000000 +0200
@@ -1,19 +1,22 @@
+cabal-version:   >= 1.10
 name:            http-api-data
-version:         0.3.8.1
-license:         BSD3
-license-file:    LICENSE
-author:          Nickolay Kudasov <[email protected]>
-maintainer:      Nickolay Kudasov <[email protected]>
+version:         0.3.10
+
 synopsis:        Converting to/from HTTP API data like URL pieces, headers and 
query parameters.
+category:        Web
 description:
   This package defines typeclasses used for converting Haskell data types to 
and from HTTP API data.
   .
   Please see README.md
+
+license:         BSD3
+license-file:    LICENSE
+author:          Nickolay Kudasov <[email protected]>
+maintainer:      Nickolay Kudasov <[email protected]>
 homepage:        http://github.com/fizruk/http-api-data
-category:        Web
 stability:       unstable
-cabal-version:   >= 1.10
 build-type:      Custom
+
 extra-source-files:
   include/overlapping-compat.h
   test/*.hs
@@ -24,12 +27,13 @@
   GHC==7.10.3,
   GHC==8.0.2,
   GHC==8.2.2,
-  GHC==8.4.1
+  GHC==8.4.3,
+  GHC==8.6.1
 
 custom-setup
   setup-depends:
-    base >= 4.7 && <4.12,
-    Cabal >= 1.18 && <2.3,
+    base,
+    Cabal,
     cabal-doctest >=1.0.6 && <1.1
 
 flag use-text-show
@@ -40,24 +44,32 @@
 library
     hs-source-dirs: src/
     include-dirs:   include/
-    build-depends:   base                  >= 4.7      && < 4.12
-                   , attoparsec            >= 0.13.0.1 && < 0.14
-                   , attoparsec-iso8601    >= 1.0.0.0  && < 1.1
+
+    -- GHC bundled
+    build-depends:   base                  >= 4.7      && < 4.13
                    , bytestring            >= 0.10.4.0 && < 0.11
-                   , containers            >= 0.5.5.1  && < 0.6
-                   , hashable              >= 1.1.2.4  && < 1.3
-                   , http-types            >= 0.8.6    && < 0.13
-                   , text                  >= 1.1.1.3  && < 1.3
+                   , containers            >= 0.5.5.1  && < 0.7
+                   , text                  >= 1.2.3.0  && < 1.3
                    , time                  >= 1.4.2    && < 1.9
-                   , time-locale-compat    >= 0.1.1.0  && < 0.2
-                   , unordered-containers  >= 0.2.6.0  && < 0.3
-                   , uri-bytestring        >= 0.1.7    && < 0.4
-                   , uuid-types            >= 1.0.2    && <1.1
+
+    -- other-dependencies
+    build-depends:
+                     attoparsec            >= 0.13.2.2 && < 0.14
+                   , attoparsec-iso8601    >= 1.0.0.0  && < 1.1
+                   , cookie                >= 0.4.3    && < 0.4.5
+                   , hashable              >= 1.2.7.0  && < 1.3
+                   , http-types            >= 0.12.1   && < 0.13
+                   , time-locale-compat    >= 0.1.1.5  && < 0.2
+                   , unordered-containers  >= 0.2.9.0  && < 0.3
+                   , uuid-types            >= 1.0.3    && <1.1
+
     if !impl(ghc >= 8.0)
-      build-depends: semigroups            >= 0.16     && < 0.19
+      build-depends: semigroups            >= 0.18.5   && < 0.19
+
     if flag(use-text-show)
       cpp-options: -DUSE_TEXT_SHOW
-      build-depends: text-show        >= 2
+      build-depends: text-show        >= 3.7.4 && <3.8
+
     exposed-modules:
       Web.HttpApiData
       Web.FormUrlEncoded
@@ -76,26 +88,30 @@
     hs-source-dirs: test
     ghc-options:   -Wall
     default-language: Haskell2010
-    build-tool-depends: hspec-discover:hspec-discover >= 2.4.7 && <2.5
-    build-depends:   HUnit
-                   , hspec >= 2.4.7
-                   , base
+    build-tool-depends: hspec-discover:hspec-discover >= 2.5.5 && <2.6
+    -- inherited  depndencies
+    build-depends:
+                     base
                    , bytestring
-                   , QuickCheck >=2.9
-                   , quickcheck-instances >= 0.3.12
                    , unordered-containers
                    , http-api-data
                    , text
                    , time
                    , bytestring
                    , uuid-types
+                   , cookie
+
+    build-depends:   HUnit                >= 1.6.0.0 && <1.7
+                   , hspec                >= 2.5.5   && <2.6
+                   , QuickCheck           >= 2.11.3  && <2.13
+                   , quickcheck-instances >= 0.3.19  && <0.4
 
 test-suite doctests
   ghc-options:      -Wall
   build-depends:
     base,
     directory >= 1.0,
-    doctest >= 0.11 && <0.16,
+    doctest >= 0.16.0 && <0.17,
     filepath
   default-language: Haskell2010
   hs-source-dirs:   test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/http-api-data-0.3.8.1/src/Web/FormUrlEncoded.hs 
new/http-api-data-0.3.10/src/Web/FormUrlEncoded.hs
--- old/http-api-data-0.3.8.1/src/Web/FormUrlEncoded.hs 2018-03-15 
00:11:02.000000000 +0100
+++ new/http-api-data-0.3.10/src/Web/FormUrlEncoded.hs  2018-10-05 
13:27:14.000000000 +0200
@@ -47,5 +47,5 @@
   urlDecodeParams,
 ) where
 
-import Web.Internal.FormUrlEncoded
+import           Web.Internal.FormUrlEncoded
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/http-api-data-0.3.8.1/src/Web/HttpApiData.hs 
new/http-api-data-0.3.10/src/Web/HttpApiData.hs
--- old/http-api-data-0.3.8.1/src/Web/HttpApiData.hs    2018-03-15 
00:11:02.000000000 +0100
+++ new/http-api-data-0.3.10/src/Web/HttpApiData.hs     2018-10-05 
13:27:14.000000000 +0200
@@ -43,7 +43,7 @@
   readTextData,
 ) where
 
-import Web.Internal.HttpApiData
+import           Web.Internal.HttpApiData
 
 -- $setup
 --
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/http-api-data-0.3.8.1/src/Web/Internal/FormUrlEncoded.hs 
new/http-api-data-0.3.10/src/Web/Internal/FormUrlEncoded.hs
--- old/http-api-data-0.3.8.1/src/Web/Internal/FormUrlEncoded.hs        
2018-03-15 00:11:02.000000000 +0100
+++ new/http-api-data-0.3.10/src/Web/Internal/FormUrlEncoded.hs 2018-10-05 
13:27:14.000000000 +0200
@@ -1,5 +1,5 @@
-{-# LANGUAGE ConstraintKinds            #-}
 {-# LANGUAGE CPP                        #-}
+{-# LANGUAGE ConstraintKinds            #-}
 {-# LANGUAGE DataKinds                  #-}
 {-# LANGUAGE DefaultSignatures          #-}
 {-# LANGUAGE DeriveGeneric              #-}
@@ -18,14 +18,14 @@
 module Web.Internal.FormUrlEncoded where
 
 #if __GLASGOW_HASKELL__ < 710
-import Control.Applicative
-import Data.Traversable
+import           Control.Applicative
+import           Data.Traversable
 #endif
 
 
 import           Control.Arrow              ((***))
 import           Control.Monad              ((<=<))
-import           Data.ByteString.Builder    (toLazyByteString, shortByteString)
+import           Data.ByteString.Builder    (shortByteString, toLazyByteString)
 import qualified Data.ByteString.Lazy       as BSL
 import qualified Data.ByteString.Lazy.Char8 as BSL8
 import qualified Data.Foldable              as F
@@ -39,30 +39,30 @@
 import           Data.Map                   (Map)
 import qualified Data.Map                   as Map
 import           Data.Monoid
-import qualified Data.Semigroup             as Semi
 import           Data.Ord                   (comparing)
+import qualified Data.Semigroup             as Semi
 
 import           Data.Text                  (Text)
 import qualified Data.Text                  as Text
-import qualified Data.Text.Lazy             as Lazy
 import           Data.Text.Encoding         as Text
 import           Data.Text.Encoding.Error   (lenientDecode)
+import qualified Data.Text.Lazy             as Lazy
 
-import           Data.Time
 import           Data.Proxy
+import           Data.Time
 import           Data.Word
 
 #if MIN_VERSION_base(4,8,0)
-import Data.Void
-import Numeric.Natural
+import           Data.Void
+import           Numeric.Natural
 #endif
 
-import           GHC.Exts                   (IsList (..), Constraint)
+import           GHC.Exts                   (Constraint, IsList (..))
 import           GHC.Generics
 import           GHC.TypeLits
-import           URI.ByteString             (urlEncodeQuery, urlDecodeQuery)
+import           Network.HTTP.Types.URI     (urlDecode, urlEncodeBuilder)
 
-import Web.Internal.HttpApiData
+import           Web.Internal.HttpApiData
 
 -- $setup
 -- >>> :set -XDeriveGeneric
@@ -543,10 +543,10 @@
 urlEncodeParams :: [(Text, Text)] -> BSL.ByteString
 urlEncodeParams = toLazyByteString . mconcat . intersperse (shortByteString 
"&") . map encodePair
   where
-    escape = urlEncodeQuery . Text.encodeUtf8
+    escape = urlEncodeBuilder True . Text.encodeUtf8
 
     encodePair (k, "") = escape k
-    encodePair (k, v) = escape k <> shortByteString "=" <> escape v
+    encodePair (k, v)  = escape k <> shortByteString "=" <> escape v
 
 -- | Decode an @application/x-www-form-urlencoded@ 'BSL.ByteString' to a 
'Form'.
 --
@@ -590,7 +590,7 @@
   where
     pairs = map (BSL8.split '=') (BSL8.split '&' bs)
 
-    unescape = Text.decodeUtf8With lenientDecode . urlDecodeQuery . 
BSL.toStrict
+    unescape = Text.decodeUtf8With lenientDecode . urlDecode True . 
BSL.toStrict
 
     parsePair p =
       case map unescape p of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/http-api-data-0.3.8.1/src/Web/Internal/HttpApiData.hs 
new/http-api-data-0.3.10/src/Web/Internal/HttpApiData.hs
--- old/http-api-data-0.3.8.1/src/Web/Internal/HttpApiData.hs   2018-03-15 
00:11:02.000000000 +0100
+++ new/http-api-data-0.3.10/src/Web/Internal/HttpApiData.hs    2018-10-05 
13:27:14.000000000 +0200
@@ -1,12 +1,12 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DefaultSignatures #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE DeriveFoldable #-}
-{-# LANGUAGE DeriveTraversable #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE CPP                  #-}
+{-# LANGUAGE DefaultSignatures    #-}
+{-# LANGUAGE DeriveDataTypeable   #-}
+{-# LANGUAGE DeriveFoldable       #-}
+{-# LANGUAGE DeriveFunctor        #-}
+{-# LANGUAGE DeriveTraversable    #-}
+{-# LANGUAGE FlexibleInstances    #-}
+{-# LANGUAGE OverloadedStrings    #-}
+{-# LANGUAGE ScopedTypeVariables  #-}
 {-# LANGUAGE TypeSynonymInstances #-}
 -- |
 -- Convert Haskell values to and from HTTP API data
@@ -14,52 +14,61 @@
 module Web.Internal.HttpApiData where
 
 #if __GLASGOW_HASKELL__ < 710
-import Control.Applicative
-import Data.Foldable (Foldable)
-import Data.Traversable (Traversable(traverse))
+import           Control.Applicative
+import           Data.Foldable                (Foldable)
+import           Data.Traversable             (Traversable (traverse))
 #endif
 
-import Control.Arrow ((&&&), left)
-import Control.Monad ((<=<))
+import           Control.Arrow                (left, (&&&))
+import           Control.Monad                ((<=<))
 
-import Data.Monoid
-import Data.ByteString (ByteString)
-import qualified Data.ByteString as BS
-
-import Data.Int
-import Data.Word
-
-import Data.Text (Text)
-import Data.Text.Encoding (encodeUtf8, decodeUtf8')
-import Data.Text.Read (signed, decimal, rational, Reader)
-import qualified Data.Text as T
-import qualified Data.Text.Lazy as L
-
-import Data.Time.Locale.Compat
-import Data.Time
-import Data.Version
+import           Data.ByteString              (ByteString)
+import qualified Data.ByteString              as BS
+import qualified Data.ByteString.Lazy         as LBS
+import           Data.Monoid
+
+import qualified Data.Fixed                   as F
+import           Data.Int
+import           Data.Word
+
+import           Data.Text                    (Text)
+import qualified Data.Text                    as T
+import           Data.Text.Encoding           (decodeUtf8With, decodeUtf8', 
encodeUtf8)
+import           Data.Text.Encoding.Error     (lenientDecode)
+import qualified Data.Text.Lazy               as L
+import           Data.Text.Read               (Reader, decimal, rational,
+                                               signed)
+
+import           Data.Time
+#if __GLASGOW_HASKELL__ < 710
+import           Data.Time.Locale.Compat
+#endif
+import           Data.Version
 
 #if MIN_VERSION_base(4,8,0)
-import Data.Void
-import Numeric.Natural
+import           Data.Void
+import           Numeric.Natural
 #endif
 
-import Text.Read (readMaybe)
-import Text.ParserCombinators.ReadP (readP_to_S)
+import           Text.ParserCombinators.ReadP (readP_to_S)
+import           Text.Read                    (readMaybe)
 
 #if USE_TEXT_SHOW
-import TextShow (TextShow, showt)
+import           TextShow                     (TextShow, showt)
 #endif
 
-import qualified Data.UUID.Types as UUID
+import qualified Data.UUID.Types              as UUID
 
-import Data.Typeable (Typeable)
-import Data.Data (Data)
-import qualified Data.ByteString.Builder as BS
-import qualified Network.HTTP.Types as H
+import qualified Data.ByteString.Builder      as BS
+import           Data.Data                    (Data)
+import           Data.Typeable                (Typeable)
+import qualified Network.HTTP.Types           as H
 
-import qualified Data.Attoparsec.Text as Atto
-import qualified Data.Attoparsec.Time as Atto
+import qualified Data.Attoparsec.Text         as Atto
+import qualified Data.Attoparsec.Time         as Atto
+
+import           Web.Cookie                   (SetCookie, parseSetCookie,
+                                               renderSetCookie)
 
 
 -- $setup
@@ -445,6 +454,8 @@
 instance ToHttpApiData Word32   where toUrlPiece = showt; toEncodedUrlPiece = 
unsafeToEncodedUrlPiece
 instance ToHttpApiData Word64   where toUrlPiece = showt; toEncodedUrlPiece = 
unsafeToEncodedUrlPiece
 
+instance F.HasResolution a => ToHttpApiData (F.Fixed a) where toUrlPiece = 
showt; toEncodedUrlPiece = unsafeToEncodedUrlPiece
+
 -- |
 -- >>> toUrlPiece (fromGregorian 2015 10 03)
 -- "2015-10-03"
@@ -530,6 +541,20 @@
   toUrlPiece (Left x)  = "left " <> toUrlPiece x
   toUrlPiece (Right x) = "right " <> toUrlPiece x
 
+-- | /Note:/ this instance works correctly for alphanumeric name and value
+--
+-- >>> let Right c = parseUrlPiece "SESSID=r2t5uvjq435r4q7ib3vtdjq120" :: 
Either Text SetCookie
+-- >>> toUrlPiece c
+-- "SESSID=r2t5uvjq435r4q7ib3vtdjq120"
+--
+-- >>> toHeader c
+-- "SESSID=r2t5uvjq435r4q7ib3vtdjq120"
+--
+instance ToHttpApiData SetCookie where
+  toUrlPiece = decodeUtf8With lenientDecode . toHeader
+  toHeader = LBS.toStrict . BS.toLazyByteString . renderSetCookie
+  -- toEncodedUrlPiece = renderSetCookie -- doesn't do things.
+
 -- |
 -- >>> parseUrlPiece "_" :: Either Text ()
 -- Right ()
@@ -584,6 +609,9 @@
 instance FromHttpApiData Text     where parseUrlPiece = Right
 instance FromHttpApiData L.Text   where parseUrlPiece = Right . L.fromStrict
 
+instance F.HasResolution a => FromHttpApiData (F.Fixed a) where
+    parseUrlPiece = runReader rational
+
 -- |
 -- >>> toGregorian <$> parseUrlPiece "2016-12-01"
 -- Right (2016,12,1)
@@ -664,6 +692,14 @@
     parseHeader     = Right . LenientData . parseHeader
     parseQueryParam = Right . LenientData . parseQueryParam
 
+-- | /Note:/ this instance works correctly for alphanumeric name and value
+--
+-- >>> parseUrlPiece "SESSID=r2t5uvjq435r4q7ib3vtdjq120" :: Either Text 
SetCookie
+-- Right (SetCookie {setCookieName = "SESSID", setCookieValue = 
"r2t5uvjq435r4q7ib3vtdjq120", setCookiePath = Nothing, setCookieExpires = 
Nothing, setCookieMaxAge = Nothing, setCookieDomain = Nothing, 
setCookieHttpOnly = False, setCookieSecure = False, setCookieSameSite = 
Nothing})
+instance FromHttpApiData SetCookie where
+  parseUrlPiece = parseHeader  . encodeUtf8
+  parseHeader   = Right . parseSetCookie
+
 -------------------------------------------------------------------------------
 -- Attoparsec helpers
 -------------------------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/http-api-data-0.3.8.1/test/Web/Internal/HttpApiDataSpec.hs 
new/http-api-data-0.3.10/test/Web/Internal/HttpApiDataSpec.hs
--- old/http-api-data-0.3.8.1/test/Web/Internal/HttpApiDataSpec.hs      
2018-03-15 00:11:02.000000000 +0100
+++ new/http-api-data-0.3.10/test/Web/Internal/HttpApiDataSpec.hs       
2018-10-05 13:27:14.000000000 +0200
@@ -3,15 +3,19 @@
 module Web.Internal.HttpApiDataSpec (spec) where
 
 import Control.Applicative
+import qualified Data.Fixed as F
 import Data.Int
+import Data.Char
 import Data.Word
 import Data.Time
 import qualified Data.Text as T
+import qualified Data.Text.Encoding as TE
 import qualified Data.Text.Lazy as L
 import qualified Data.ByteString as BS
 import Data.ByteString.Builder (toLazyByteString)
 import Data.Version
 import qualified Data.UUID.Types as UUID
+import Web.Cookie (SetCookie, defaultSetCookie, setCookieName, setCookieValue)
 
 import Data.Proxy
 
@@ -39,30 +43,24 @@
 encodedUrlPieceProp :: ToHttpApiData a => a -> Property
 encodedUrlPieceProp x = toLazyByteString (toEncodedUrlPiece (toUrlPiece x)) 
=== toLazyByteString (toEncodedUrlPiece x)
 
-
+-- | Check 'ToHttpApiData' and 'FromHttpApiData' compatibility
 checkUrlPiece :: forall a. (Eq a, ToHttpApiData a, FromHttpApiData a, Show a, 
Arbitrary a) => Proxy a -> String -> Spec
-checkUrlPiece _ name = prop name (toUrlPiece <=> parseUrlPiece :: a -> 
Property)
+checkUrlPiece _ = checkUrlPiece' (arbitrary :: Gen a)
 
--- | Check with given generator
 checkUrlPiece' :: forall a. (Eq a, ToHttpApiData a, FromHttpApiData a, Show a) 
=> Gen a -> String -> Spec
-checkUrlPiece' gen name = prop name $ forAll gen (toUrlPiece <=> parseUrlPiece)
+checkUrlPiece' gen name = describe name $ do
+    prop "toUrlPiece <=> parseUrlPiece" $ forAll gen (toUrlPiece <=> 
parseUrlPiece :: a -> Property)
+    prop "toQueryParam <=> parseQueryParam" $ forAll gen (toQueryParam <=> 
parseQueryParam :: a -> Property)
+    prop "toHeader <=> parseHeader" $ forAll gen (toHeader <=> parseHeader :: 
a -> Property)
+    prop "toEncodedUrlPiece encodes correctly" $ forAll gen encodedUrlPieceProp
 
 -- | Check case insensitivity for @parseUrlPiece@.
 checkUrlPieceI :: forall a. (Eq a, ToHttpApiData a, FromHttpApiData a, 
Arbitrary a) => Proxy a -> String -> Spec
 checkUrlPieceI _ = checkUrlPiece (Proxy :: Proxy (RandomCase a))
 
--- | Check that 'toEncodedUrlPiece' is equivallent to default implementation.
-checkEncodedUrlPiece :: forall a. (Show a, ToHttpApiData a, Arbitrary a) => 
Proxy a -> String -> Spec
-checkEncodedUrlPiece _ = checkEncodedUrlPiece' (arbitrary :: Gen a)
-
--- | Check that 'toEncodedUrlPiece' is equivallent to default implementation.
--- Use a given generator.
-checkEncodedUrlPiece' :: forall a. (Show a, ToHttpApiData a) => Gen a -> 
String -> Spec
-checkEncodedUrlPiece' gen name = prop name $ forAll gen encodedUrlPieceProp
-
 spec :: Spec
 spec = do
-  describe "toUrlPiece <=> parseUrlPiece" $ do
+  describe "Instances" $ do
     checkUrlPiece  (Proxy :: Proxy ())        "()"
     checkUrlPiece  (Proxy :: Proxy Char)      "Char"
     checkUrlPieceI (Proxy :: Proxy Bool)      "Bool"
@@ -89,6 +87,15 @@
     checkUrlPiece' nominalDiffTimeGen         "NominalDiffTime"
     checkUrlPiece  (Proxy :: Proxy Version)   "Version"
     checkUrlPiece' uuidGen                    "UUID"
+    checkUrlPiece' setCookieGen               "Cookie"
+
+    checkUrlPiece  (Proxy :: Proxy F.Uni)   "Uni"
+    checkUrlPiece  (Proxy :: Proxy F.Deci)  "Deci"
+    checkUrlPiece  (Proxy :: Proxy F.Centi) "Centi"
+    checkUrlPiece  (Proxy :: Proxy F.Milli) "Milli"
+    checkUrlPiece  (Proxy :: Proxy F.Micro) "Micro"
+    checkUrlPiece  (Proxy :: Proxy F.Nano)  "Nano"
+    checkUrlPiece  (Proxy :: Proxy F.Pico)  "Pico"
 
     checkUrlPiece  (Proxy :: Proxy (Maybe String))            "Maybe String"
     checkUrlPieceI (Proxy :: Proxy (Maybe Integer))           "Maybe Integer"
@@ -99,43 +106,6 @@
     checkUrlPiece  (Proxy :: Proxy Natural)   "Natural"
 #endif
 
-  describe "toEncodedUrlPiece encodes correctly" $ do
-    checkEncodedUrlPiece  (Proxy :: Proxy ())        "()"
-    checkEncodedUrlPiece  (Proxy :: Proxy Char)      "Char"
-    checkEncodedUrlPiece  (Proxy :: Proxy Bool)      "Bool"
-    checkEncodedUrlPiece  (Proxy :: Proxy Ordering)  "Ordering"
-    checkEncodedUrlPiece  (Proxy :: Proxy Int)       "Int"
-    checkEncodedUrlPiece  (Proxy :: Proxy Int8)      "Int8"
-    checkEncodedUrlPiece  (Proxy :: Proxy Int16)     "Int16"
-    checkEncodedUrlPiece  (Proxy :: Proxy Int32)     "Int32"
-    checkEncodedUrlPiece  (Proxy :: Proxy Int64)     "Int64"
-    checkEncodedUrlPiece  (Proxy :: Proxy Integer)   "Integer"
-    checkEncodedUrlPiece  (Proxy :: Proxy Word)      "Word"
-    checkEncodedUrlPiece  (Proxy :: Proxy Word8)     "Word8"
-    checkEncodedUrlPiece  (Proxy :: Proxy Word16)    "Word16"
-    checkEncodedUrlPiece  (Proxy :: Proxy Word32)    "Word32"
-    checkEncodedUrlPiece  (Proxy :: Proxy Word64)    "Word64"
-    checkEncodedUrlPiece  (Proxy :: Proxy String)    "String"
-    checkEncodedUrlPiece  (Proxy :: Proxy T.Text)    "Text.Strict"
-    checkEncodedUrlPiece  (Proxy :: Proxy L.Text)    "Text.Lazy"
-    checkEncodedUrlPiece  (Proxy :: Proxy Day)       "Day"
-    checkEncodedUrlPiece' timeOfDayGen               "TimeOfDay"
-    checkEncodedUrlPiece' localTimeGen               "LocalTime"
-    checkEncodedUrlPiece' zonedTimeGen               "ZonedTime"
-    checkEncodedUrlPiece' utcTimeGen                 "UTCTime"
-    checkEncodedUrlPiece' nominalDiffTimeGen         "NominalDiffTime"
-    checkEncodedUrlPiece  (Proxy :: Proxy Version)   "Version"
-    checkEncodedUrlPiece' uuidGen                    "UUID"
-
-    checkEncodedUrlPiece  (Proxy :: Proxy (Maybe String))            "Maybe 
String"
-    checkEncodedUrlPiece  (Proxy :: Proxy (Maybe Integer))           "Maybe 
Integer"
-    checkEncodedUrlPiece  (Proxy :: Proxy (Either Integer T.Text))   "Either 
Integer Text"
-    checkEncodedUrlPiece  (Proxy :: Proxy (Either Version Day))      "Either 
Version Day"
-
-#if MIN_VERSION_base(4,8,0)
-    checkEncodedUrlPiece  (Proxy :: Proxy Natural)   "Natural"
-#endif
-
   it "bad integers are rejected" $ do
     parseUrlPieceMaybe (T.pack "123hello") `shouldBe` (Nothing :: Maybe Int)
 
@@ -170,3 +140,9 @@
 
 nominalDiffTimeGen :: Gen NominalDiffTime
 nominalDiffTimeGen = fromInteger <$> arbitrary
+
+setCookieGen :: Gen SetCookie
+setCookieGen = do
+    n <- TE.encodeUtf8 . T.pack . filter isAlphaNum <$> arbitrary
+    v <- TE.encodeUtf8 . T.pack . filter isAlphaNum <$> arbitrary
+    return $ defaultSetCookie { setCookieName = n, setCookieValue = v }


Reply via email to