on master help sign in
Attempt to support http-conduit 2.3.0
commit527cb52fb534b3cb808f23c83c07ab2054479a46 authorJames Parker <dev@jamesparker.me> dateThu 22 Feb 2018, 00:06 (9 years ago) parent1ff078d
3 files changed+35−4
CHANGELOG.md+4 docker.cabal+13−1 src/Docker/Client/Http.hs+18−3
CHANGELOG.md+4
@@ -1,5 +1,9 @@
11# CHANGELOG
22
3+## 0.5.0.2 (2018-02-21)
4+
5+- Support http-conduit-2.3.0.
6+
37## 0.5.0.1 (2018-01-26)
48
59- Bumps upper bound for http-types (properly this time).
docker.cabal+13−1
@@ -1,5 +1,5 @@
11name: docker
2−version: 0.5.0.1
2+version: 0.5.0.2
33synopsis: An API client for docker written in Haskell
44description: See API documentation below.
55homepage: https://github.com/denibertovic/docker-hs
@@ -14,6 +14,13 @@ extra-source-files: README.md
1414cabal-version: >=1.10
1515stability: experimental
1616
17+Flag small-http-conduit
18+ Description: Resolve whether http-conduit < 2.3.0.
19+ Manual: False
20+ Default: True
21+
22+-- build-depends: unliftio-core
23+-- # http-conduit >= 2.3.0
1724library
1825 default-extensions: DeriveGeneric, OverloadedStrings, ScopedTypeVariables, ExplicitForAll, MultiParamTypeClasses, FlexibleContexts, GeneralizedNewtypeDeriving, RankNTypes, DeriveFunctor, FlexibleInstances, CPP
1926 hs-source-dirs: src
@@ -54,6 +61,11 @@ library
5461 , x509 >= 1.6.0 && < 1.8.0
5562 , x509-store >= 1.6.0 && < 1.8.0
5663 , x509-system >= 1.6.0 && < 1.8.0
64+ if flag(small-http-conduit)
65+ build-depends: http-conduit < 2.3.0
66+ else
67+ build-depends: http-conduit >= 2.3.0
68+ , unliftio-core
5769 default-language: Haskell2010
5870 ghc-options: -Wall -fno-warn-name-shadowing
5971
src/Docker/Client/Http.hs+18−3
@@ -5,6 +5,9 @@ module Docker.Client.Http where
55
66-- import Control.Monad.Base (MonadBase(..), liftBaseDefault)
77import Control.Monad.Catch (MonadMask (..))
8+#if MIN_VERSION_http_conduit(2,3,0)
9+import Control.Monad.IO.Unlift (MonadUnliftIO)
10+#endif
811import Control.Monad.Reader (ReaderT (..), runReaderT)
912import qualified Data.ByteString.Char8 as BSC
1013import qualified Data.ByteString.Lazy as BL
@@ -104,12 +107,20 @@ mkHttpRequest verb e opts = request
104107 requestHeaders = [("Content-Type", "application/json; charset=utf-8")]}) $ getEndpointRequestBody e) <$> request'
105108 -- Note: Do we need to set length header?
106109
107−defaultHttpHandler :: (MonadIO m, MonadMask m) => m (HttpHandler m)
110+defaultHttpHandler :: (
111+#if MIN_VERSION_http_conduit(2,3,0)
112+ MonadUnliftIO m,
113+#endif
114+ MonadIO m, MonadMask m) => m (HttpHandler m)
108115defaultHttpHandler = do
109116 manager <- liftIO $ newManager defaultManagerSettings
110117 return $ httpHandler manager
111118
112−httpHandler :: (MonadIO m, MonadMask m) => HTTP.Manager -> HttpHandler m
119+httpHandler :: (
120+#if MIN_VERSION_http_conduit(2,3,0)
121+ MonadUnliftIO m,
122+#endif
123+ MonadIO m, MonadMask m) => HTTP.Manager -> HttpHandler m
113124httpHandler manager = HttpHandler $ \request' sink -> do -- runResourceT ..
114125 let request = NHS.setRequestManager manager request'
115126 try (NHS.httpSink request sink) >>= \res -> case res of
@@ -127,7 +138,11 @@ httpHandler manager = HttpHandler $ \request' sink -> do -- runResourceT ..
127138--
128139-- Docker seems to ignore the hostname in requests sent over unix domain
129140-- sockets (and the port obviously doesn't matter either)
130−unixHttpHandler :: (MonadIO m, MonadMask m) => FilePath -- ^ The socket to connect to
141+unixHttpHandler :: (
142+#if MIN_VERSION_http_conduit(2,3,0)
143+ MonadUnliftIO m,
144+#endif
145+ MonadIO m, MonadMask m) => FilePath -- ^ The socket to connect to
131146 -> m (HttpHandler m)
132147unixHttpHandler fp = do
133148 let mSettings = defaultManagerSettings