diff --git a/slack-web.cabal b/slack-web.cabal index 4946954..4e0280f 100644 --- a/slack-web.cabal +++ b/slack-web.cabal @@ -1,5 +1,5 @@ name: slack-web -version: 0.2.0.10 +version: 0.2.0.11 build-type: Simple cabal-version: 1.20 @@ -50,9 +50,9 @@ library , http-api-data >= 0.3 && < 0.5 , http-client >= 0.5 && < 0.7 , http-client-tls >= 0.3 && < 0.4 - , servant >= 0.12 && < 0.16 - , servant-client >= 0.12 && < 0.16 - , servant-client-core >= 0.12 && < 0.16 + , servant >= 0.12 && < 0.17 + , servant-client >= 0.12 && < 0.17 + , servant-client-core >= 0.12 && < 0.17 , text >= 1.2 && < 1.3 , transformers , mtl diff --git a/src/Web/Slack.hs b/src/Web/Slack.hs index 5606d6c..ae8deec 100644 --- a/src/Web/Slack.hs +++ b/src/Web/Slack.hs @@ -66,8 +66,7 @@ import Servant.API -- servant-client import Servant.Client hiding (Response, baseUrl) -import Servant.Client.Core (Request, appendToQueryString, ServantError) -import Servant.Client.Core.Internal.Auth +import Servant.Client.Core (Request, appendToQueryString) -- slack-web import qualified Web.Slack.Api as Api @@ -87,6 +86,14 @@ mkClientEnv :: Manager -> BaseUrl -> ClientEnv mkClientEnv = ClientEnv #endif +#if MIN_VERSION_servant(0,16,0) +import Servant.Client.Core (AuthenticatedRequest, AuthClientData, mkAuthenticatedRequest, ClientError) +#else +import Servant.Client.Core.Internal.Auth +import Servant.Client.Core (ServantError) +type ClientError = ServantError +#endif + class HasManager a where getManager :: a -> Manager @@ -555,7 +562,7 @@ mkSlackAuthenticateReq :: (MonadReader env m, HasToken env) => m (AuthenticatedRequest (AuthProtect "token")) mkSlackAuthenticateReq = flip mkAuthenticatedRequest authenticateReq . getToken <$> ask -unnestErrors :: Either ServantError (ResponseJSON a) -> Response a +unnestErrors :: Either ClientError (ResponseJSON a) -> Response a unnestErrors (Right (ResponseJSON (Right a))) = Right a unnestErrors (Right (ResponseJSON (Left (ResponseSlackError serv)))) = Left (Common.SlackError serv) diff --git a/src/Web/Slack/Common.hs b/src/Web/Slack/Common.hs index 1254309..6f8116d 100644 --- a/src/Web/Slack/Common.hs +++ b/src/Web/Slack/Common.hs @@ -4,6 +4,7 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE OverloadedLists #-} +{-# LANGUAGE CPP #-} ---------------------------------------------------------------------- -- | @@ -52,6 +53,9 @@ import Web.Slack.Util -- text import Data.Text (Text) +#if !MIN_VERSION_servant(0,16,0) +type ClientError = ServantError +#endif -- | -- @@ -138,7 +142,7 @@ $(deriveFromJSON (jsonOpts "historyRsp") ''HistoryRsp) -- | -- Errors that can be triggered by a slack request. data SlackClientError - = ServantError ServantError + = ServantError ClientError -- ^ errors from the network connection | SlackError Text -- ^ errors returned by the slack API