http-link-header 1.0.2 → 1.0.3
raw patch · 3 files changed
+46/−3 lines, 3 filesdep +http-api-dataPVP ok
version bump matches the API change (PVP)
Dependencies added: http-api-data
API changes (from Hackage documentation)
+ Network.HTTP.Link: instance Web.Internal.HttpApiData.ToHttpApiData Network.HTTP.Link.Types.Link
+ Network.HTTP.Link: instance Web.Internal.HttpApiData.ToHttpApiData [Network.HTTP.Link.Types.Link]
Files
- http-link-header.cabal +4/−3
- library/Network/HTTP/Link.hs +9/−0
- test-suite/Network/HTTP/LinkSpec.hs +33/−0
http-link-header.cabal view
@@ -1,5 +1,5 @@ name: http-link-header-version: 1.0.2+version: 1.0.3 synopsis: A parser and writer for the HTTP Link header as specified in RFC 5988 "Web Linking". description: https://github.com/myfreeweb/http-link-header category: Web@@ -14,7 +14,7 @@ extra-source-files: README.md tested-with:- GHC == 7.10.3+ GHC == 8.0.1 source-repository head type: git@@ -27,6 +27,7 @@ , bytestring , errors , network-uri+ , http-api-data , attoparsec , bytestring-conversion default-language: Haskell2010@@ -48,12 +49,12 @@ , hspec-attoparsec default-language: Haskell2010 ghc-options: -threaded -fhpc -Wall- ghc-prof-options: -auto-all -prof hs-source-dirs: test-suite main-is: Spec.hs other-modules: Network.HTTP.Link.ParserSpec Network.HTTP.Link.WriterSpec+ Network.HTTP.LinkSpec type: exitcode-stdio-1.0 benchmark benchmarks
library/Network/HTTP/Link.hs view
@@ -9,6 +9,7 @@ ) where import Data.ByteString.Conversion+import Web.HttpApiData import safe Network.HTTP.Link.Types import safe Network.HTTP.Link.Writer import safe Network.HTTP.Link.Parser@@ -18,3 +19,11 @@ instance ToByteString Link where builder = builder . writeLink++instance ToHttpApiData [Link] where+ toUrlPiece = toUrlPiece . writeLinkHeader+ toHeader = toByteString'++instance ToHttpApiData Link where+ toUrlPiece = toUrlPiece . writeLink+ toHeader = toByteString'
+ test-suite/Network/HTTP/LinkSpec.hs view
@@ -0,0 +1,33 @@+{-# LANGUAGE OverloadedStrings, UnicodeSyntax, CPP #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++module Network.HTTP.LinkSpec where++import Test.Hspec+import Test.QuickCheck+#if !MIN_VERSION_base(4,8,0)+import Data.Monoid (mconcat)+#endif+import qualified Data.Text as T+import Data.Maybe (fromJust)+import Network.HTTP.Link++instance Arbitrary Link where+ arbitrary = do+ urlScheme ← elements ["http://", "https://", "ftp://", "git+ssh://"]+ urlDomain ← listOf1 $ elements ['a'..'z']+ urlTld ← elements ["com", "net", "org", "me", "is", "technology", "club"]+ urlPath ← listOf $ elements ['a'..'z']+ params ← listOf genParam+ return $ fromJust $ lnk (mconcat [urlScheme, urlDomain, ".", urlTld, "/", urlPath]) params+ where genParam = do+ otherParamKey ← listOf1 $ elements ['a'..'z']+ paramKey ← elements [Rel, Rev, Title, Hreflang, Anchor, Media, ContentType, Other (T.pack otherParamKey)]+ paramValue ← listOf $ elements ['a'..'z']+ return (paramKey, T.pack paramValue)++spec ∷ Spec+spec = do+ describe "writeLinkHeader → parseLinkHeader" $+ it "roundtrips successfully" $+ property $ \x → parseLinkHeader (writeLinkHeader x) == Just x