pusher-http-haskell 1.1.0.2 → 1.1.0.3
raw patch · 9 files changed
+35/−32 lines, 9 filesdep ~aesonPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: aeson
API changes (from Hackage documentation)
- Network.Pusher.Internal.Auth: authenticatePresenceWithEncoder :: ToJSON a => (a -> Text) -> Credentials -> SocketID -> Channel -> a -> AuthSignature
+ Network.Pusher.Internal.Auth: authenticatePresenceWithEncoder :: (a -> Text) -> Credentials -> SocketID -> Channel -> a -> AuthSignature
Files
- pusher-http-haskell.cabal +20/−2
- src/Network/Pusher.hs +1/−11
- src/Network/Pusher/Data.hs +0/−1
- src/Network/Pusher/Internal.hs +0/−3
- src/Network/Pusher/Internal/Auth.hs +6/−4
- src/Network/Pusher/Internal/HTTP.hs +8/−3
- src/Network/Pusher/Internal/Util.hs +0/−1
- src/Network/Pusher/Protocol.hs +0/−5
- test/Protocol.hs +0/−2
pusher-http-haskell.cabal view
@@ -1,5 +1,5 @@ name: pusher-http-haskell-version: 1.1.0.2+version: 1.1.0.3 cabal-version: >=1.18 build-type: Simple license: MIT@@ -16,7 +16,7 @@ channel can be queried. Additionally there are functions for authenticating users of private and presence channels. category: Network-tested-with: GHC == 8.0.1+tested-with: GHC >= 7.10.2 library exposed-modules: Network.Pusher,@@ -43,6 +43,15 @@ time >=1.4 && <1.7, transformers >=0.3 && <0.6, unordered-containers ==0.2.*+ ghc-options: -Wall+ if impl(ghc >= 8.0.0)+ ghc-options: -Wcompat+ -Whi-shadowing+ -Wmissing-signatures+ else+ ghc-options: -fwarn-hi-shadowing+ -fwarn-missing-signatures+ -fwarn-tabs test-suite tests default-language: Haskell2010@@ -63,3 +72,12 @@ text, transformers, unordered-containers+ ghc-options: -Wall+ if impl(ghc >= 8.0.0)+ ghc-options: -Wcompat+ -Whi-shadowing+ -Wmissing-signatures+ else+ ghc-options: -fwarn-hi-shadowing+ -fwarn-missing-signatures+ -fwarn-tabs
src/Network/Pusher.hs view
@@ -78,16 +78,8 @@ , PusherError(..) ) where -import Control.Applicative ((<$>))-import Control.Monad (when)-import Control.Monad.Trans.Except (ExceptT(ExceptT), runExceptT, throwE)+import Control.Monad.Trans.Except (ExceptT(ExceptT), runExceptT) import Control.Monad.IO.Class (MonadIO, liftIO)-import Data.Maybe (maybeToList)-import Data.Monoid ((<>))-import Network.HTTP.Client (Manager)-import qualified Data.Aeson as A-import qualified Data.ByteString as B-import qualified Data.ByteString.Lazy as BL import qualified Data.Text as T import Network.Pusher.Data@@ -115,7 +107,6 @@ , AuthString , authenticatePresence , authenticatePrivate- , makeQS ) import Network.Pusher.Internal.Util (getTime) import Network.Pusher.Protocol@@ -124,7 +115,6 @@ , ChannelsInfoQuery , FullChannelInfo , Users- , toURLParam ) import qualified Network.Pusher.Internal as Pusher import qualified Network.Pusher.Internal.HTTP as HTTP
src/Network/Pusher/Data.hs view
@@ -36,7 +36,6 @@ , SocketID ) where -import Control.Applicative ((<$>), (<*>)) import Control.Monad.IO.Class (MonadIO, liftIO) import Data.Aeson ((.:)) import Data.Foldable (asum)
src/Network/Pusher/Internal.hs view
@@ -42,10 +42,7 @@ ) import Network.Pusher.Protocol ( ChannelInfoQuery- , ChannelsInfo , ChannelsInfoQuery- , FullChannelInfo- , Users , toURLParam )
src/Network/Pusher/Internal/Auth.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-|@@ -24,11 +25,13 @@ import Data.Text.Encoding (encodeUtf8) import GHC.Exts (sortWith) import qualified Data.Aeson as A+#if MIN_VERSION_aeson(1,0,0) import qualified Data.Aeson.Text as A+#else+import qualified Data.Aeson.Encode as A+#endif import qualified Data.ByteString as B-import qualified Data.ByteString.Char8 as BC import qualified Data.ByteString.Base16 as B16-import qualified Data.ByteString.Lazy as BL import qualified Data.Text as T import qualified Data.Text.Lazy as TL import qualified Data.Text.Lazy.Builder as TL@@ -126,8 +129,7 @@ -- useful for testing because the encoder can be mocked; aeson's encoder enodes -- JSON object fields in arbitrary orders, which makes it impossible to test. authenticatePresenceWithEncoder- :: A.ToJSON a- => (a -> T.Text) -- ^The encoder of the user data.+ :: (a -> T.Text) -- ^The encoder of the user data. -> Credentials -> SocketID -> Channel
src/Network/Pusher/Internal/HTTP.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TupleSections #-} @@ -32,13 +33,11 @@ import Network.HTTP.Types.Status (statusCode, statusMessage) import qualified Data.Aeson as A import qualified Data.ByteString as B-import qualified Data.ByteString.Char8 as BC import qualified Data.ByteString.Lazy as BL import qualified Data.Text as T import qualified Network.HTTP.Client as HTTP.Client import Network.Pusher.Error (PusherError(..))-import Network.Pusher.Internal.Util (show') data RequestParams = RequestParams { requestEndpoint :: T.Text@@ -84,9 +83,15 @@ -> RequestQueryString -> Either PusherError HTTP.Client.Request mkRequest ep qs =- case HTTP.Client.parseRequest $ T.unpack ep of+ case parseRequest $ T.unpack ep of Nothing -> Left $ PusherArgumentError $ "failed to parse url: " <> ep Just req -> Right $ HTTP.Client.setQueryString (map (second Just) qs) req+ where+#if MIN_VERSION_http_client(0,4,30)+ parseRequest = HTTP.Client.parseRequest+#else+ parseRequest = HTTP.Client.parseUrl+#endif mkPost :: BL.ByteString -> HTTP.Client.Request -> HTTP.Client.Request mkPost body req =
src/Network/Pusher/Internal/Util.hs view
@@ -12,7 +12,6 @@ , show' ) where -import Control.Applicative ((<$>)) import Data.String (IsString, fromString) import Data.Time.Clock.POSIX (getPOSIXTime) import qualified Data.Aeson as A
src/Network/Pusher/Protocol.hs view
@@ -28,14 +28,9 @@ , toURLParam ) where -import Control.Applicative ((<$>), (<*>)) import Data.Aeson ((.:), (.:?))-import Data.Foldable (asum) import Data.Hashable (Hashable)-import Data.Maybe (fromMaybe)-import Data.Monoid ((<>)) import GHC.Generics (Generic)-import Test.QuickCheck (Arbitrary, arbitrary, elements) import qualified Data.Aeson as A import qualified Data.HashMap.Strict as HM import qualified Data.HashSet as HS
test/Protocol.hs view
@@ -4,8 +4,6 @@ import Test.QuickCheck (property) import qualified Data.Aeson as A import qualified Data.HashMap.Strict as HM-import qualified Data.HashSet as HS-import qualified Data.Text as T import Network.Pusher ( Channel(..)