libravatar 0.4.0.1 → 0.4.0.2
raw patch · 3 files changed
+50/−23 lines, 3 filesdep ~dnsPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: dns
API changes (from Hackage documentation)
Files
- NEWS.md +3/−4
- libravatar.cabal +12/−12
- src/Network/Libravatar.hs +35/−7
NEWS.md view
@@ -3,14 +3,13 @@ -libravatar 0.4.0.1 2017-07-29+libravatar 0.4.0.2 2017-12-20 ================================ General, build and documentation changes: -* Replace mention of 'defOpts' with 'def' in doc comment-* Build with GHC 8 and latest LTS-* Update homepage and bug report URLs+* The `dns` package has a new major release with breaking changes, we now+ support that new version New APIs, features and enhancements:
libravatar.cabal view
@@ -1,12 +1,12 @@ name: libravatar-version: 0.4.0.1+version: 0.4.0.2 cabal-version: >=1.10 build-type: Simple license: PublicDomain license-file: COPYING copyright: ♡ Copying is an act of love. Please copy, reuse and share. maintainer: fr33domlover@riseup.net-homepage: https://rel4.seek-together.space/projects/libravatar/+homepage: https://hub.darcs.net/fr33domlover/libravatar bug-reports: fr33domlover@riseup.net synopsis: Use Libravatar, the decentralized avatar delivery service description:@@ -24,22 +24,22 @@ source-repository head type: darcs- location: http://hub.darcs.net/fr33domlover/libravatar+ location: https://hub.darcs.net/fr33domlover/libravatar library exposed-modules: Network.Libravatar build-depends: base >=4.7 && <5,- bytestring >=0.10.8.1,- cryptonite >=0.21,- data-default-class >=0.1.2.0,- dns >=2.0.10,- memory >=0.14.6,- random >=1.1,- text >=1.2.2.1,- uri-bytestring >=0.2.3.3,- url >=2.1.3+ bytestring >=0.10.8.1 && <0.11,+ cryptonite ==0.23.*,+ data-default-class >=0.1.2.0 && <0.2,+ dns >=2.0.13 && <2.1,+ memory >=0.14.10 && <0.15,+ random ==1.1.*,+ text >=1.2.2.2 && <1.3,+ uri-bytestring >=0.2.3.3 && <0.3,+ url >=2.1.3 && <2.2 default-language: Haskell2010 hs-source-dirs: src ghc-options: -Wall
src/Network/Libravatar.hs view
@@ -1,6 +1,6 @@ {- This file is part of libravatar for Haskell. -- - Written in 2015, 2016 by fr33domlover <fr33domlover@riseup.net>.+ - Written in 2015, 2016, 2017 by fr33domlover <fr33domlover@riseup.net>. - - ♡ Copying is an act of love. Please copy, reuse and share. -@@ -97,6 +97,9 @@ import Data.Maybe (catMaybes, fromMaybe) import Data.Monoid ((<>)) import Data.Text (Text)+#if MIN_VERSION_dns(3,0,0)+import Data.Word (Word16)+#endif import Network.DNS.Lookup import Network.DNS.Resolver import Network.DNS.Types (DNSError, Domain)@@ -193,7 +196,7 @@ def = DefaultSize -- | Avatar details in addition to the user address itself. Define by starting--- with 'def' and override fields using record syntax.+-- with 'defOpts' and override fields using record syntax. data AvatarOptions = AvatarOptions { -- | Whether the avatar URL should be secure (use HTTPS). optSecure :: Bool@@ -300,7 +303,14 @@ -- Get a random list item, with distribution based on weights. Weights must be -- non-negative. Any negative weights will just be treated as zero weights.-weightedRandom :: (a -> Int) -> [a] -> IO a+weightedRandom+#if MIN_VERSION_dns(3,0,0)+ :: (a -> Word16)+#else+ :: (a -> Int)+#endif+ -> [a]+ -> IO a weightedRandom getw l = let wlist = map getw l wlist' = map (max 0) wlist@@ -316,14 +326,27 @@ -- Ensure we are getting a (mostly) valid hostname and port number from the DNS -- resolver+#if MIN_VERSION_dns(3,0,0)+targetSane :: Domain -> Word16 -> Bool+#else targetSane :: Domain -> Int -> Bool+#endif targetSane target port = not (BC.null target) && BC.any NU.ok_host target &&+#if MIN_VERSION_dns(3,0,0)+ 1 <= port+#else 1 <= port && port <= 65535+#endif -- Get the right (target, port) pair from a list of SRV records-srvHostname :: [(Int, Int, Int, Domain)] -> IO (Maybe (Domain, Int))+srvHostname+#if MIN_VERSION_dns(3,0,0)+ :: [(Word16, Word16, Word16, Domain)] -> IO (Maybe (Domain, Word16))+#else+ :: [(Int, Int, Int, Domain)] -> IO (Maybe (Domain, Int))+#endif srvHostname [] = return Nothing srvHostname [(_, _, port, target)] = return $ Just (target, port) srvHostname records =@@ -343,9 +366,14 @@ -- Pick the right server and return its normalized hostname, i.e. only include -- the port number if it's necessary-normalizedTarget :: [(Int, Int, Int, Domain)]- -> Bool- -> IO (Maybe NU.Host)+normalizedTarget+#if MIN_VERSION_dns(3,0,0)+ :: [(Word16, Word16, Word16, Domain)]+#else+ :: [(Int, Int, Int, Domain)]+#endif+ -> Bool+ -> IO (Maybe NU.Host) normalizedTarget records https = do tp <- srvHostname records let sane = maybe False (uncurry targetSane) tp