on master help sign in
Attempt to support http-conduit 2.3.0
527cb52James Parker
CHANGELOG.md+4
@@ -1,5 +1,9 @@
1# CHANGELOG
1# CHANGELOG
2
2
3+## 0.5.0.2 (2018-02-21)
4+
5+- Support http-conduit-2.3.0.
6+
3## 0.5.0.1 (2018-01-26)
7## 0.5.0.1 (2018-01-26)
4
8
5- Bumps upper bound for http-types (properly this time).
9- Bumps upper bound for http-types (properly this time).
docker.cabal+13−1
@@ -1,5 +1,5 @@
1name: docker
1name: docker
2−version: 0.5.0.1
2+version: 0.5.0.2
3synopsis: An API client for docker written in Haskell
3synopsis: An API client for docker written in Haskell
4description: See API documentation below.
4description: See API documentation below.
5homepage: https://github.com/denibertovic/docker-hs
5homepage: https://github.com/denibertovic/docker-hs
@@ -14,6 +14,13 @@ extra-source-files: README.md
14cabal-version: >=1.10
14cabal-version: >=1.10
15stability: experimental
15stability: experimental
16
16
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
17library
24library
18 default-extensions: DeriveGeneric, OverloadedStrings, ScopedTypeVariables, ExplicitForAll, MultiParamTypeClasses, FlexibleContexts, GeneralizedNewtypeDeriving, RankNTypes, DeriveFunctor, FlexibleInstances, CPP
25 default-extensions: DeriveGeneric, OverloadedStrings, ScopedTypeVariables, ExplicitForAll, MultiParamTypeClasses, FlexibleContexts, GeneralizedNewtypeDeriving, RankNTypes, DeriveFunctor, FlexibleInstances, CPP
19 hs-source-dirs: src
26 hs-source-dirs: src
@@ -54,6 +61,11 @@ library
54 , x509 >= 1.6.0 && < 1.8.0
61 , x509 >= 1.6.0 && < 1.8.0
55 , x509-store >= 1.6.0 && < 1.8.0
62 , x509-store >= 1.6.0 && < 1.8.0
56 , x509-system >= 1.6.0 && < 1.8.0
63 , 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
57 default-language: Haskell2010
69 default-language: Haskell2010
58 ghc-options: -Wall -fno-warn-name-shadowing
70 ghc-options: -Wall -fno-warn-name-shadowing
59
71
src/Docker/Client/Http.hs+18−3
@@ -5,6 +5,9 @@ module Docker.Client.Http where
5
5
6-- import Control.Monad.Base (MonadBase(..), liftBaseDefault)
6-- import Control.Monad.Base (MonadBase(..), liftBaseDefault)
7import Control.Monad.Catch (MonadMask (..))
7import Control.Monad.Catch (MonadMask (..))
8+#if MIN_VERSION_http_conduit(2,3,0)
9+import Control.Monad.IO.Unlift (MonadUnliftIO)
10+#endif
8import Control.Monad.Reader (ReaderT (..), runReaderT)
11import Control.Monad.Reader (ReaderT (..), runReaderT)
9import qualified Data.ByteString.Char8 as BSC
12import qualified Data.ByteString.Char8 as BSC
10import qualified Data.ByteString.Lazy as BL
13import qualified Data.ByteString.Lazy as BL
@@ -104,12 +107,20 @@ mkHttpRequest verb e opts = request
104 requestHeaders = [("Content-Type", "application/json; charset=utf-8")]}) $ getEndpointRequestBody e) <$> request'
107 requestHeaders = [("Content-Type", "application/json; charset=utf-8")]}) $ getEndpointRequestBody e) <$> request'
105 -- Note: Do we need to set length header?
108 -- Note: Do we need to set length header?
106
109
110+defaultHttpHandler :: (
111+#if MIN_VERSION_http_conduit(2,3,0)
112+ MonadUnliftIO m,
113+#endif
107−defaultHttpHandler :: (MonadIO m, MonadMask m) => m (HttpHandler m)
114+ MonadIO m, MonadMask m) => m (HttpHandler m)
108defaultHttpHandler = do
115defaultHttpHandler = do
109 manager <- liftIO $ newManager defaultManagerSettings
116 manager <- liftIO $ newManager defaultManagerSettings
110 return $ httpHandler manager
117 return $ httpHandler manager
111
118
119+httpHandler :: (
120+#if MIN_VERSION_http_conduit(2,3,0)
121+ MonadUnliftIO m,
122+#endif
112−httpHandler :: (MonadIO m, MonadMask m) => HTTP.Manager -> HttpHandler m
123+ MonadIO m, MonadMask m) => HTTP.Manager -> HttpHandler m
113httpHandler manager = HttpHandler $ \request' sink -> do -- runResourceT ..
124httpHandler manager = HttpHandler $ \request' sink -> do -- runResourceT ..
114 let request = NHS.setRequestManager manager request'
125 let request = NHS.setRequestManager manager request'
115 try (NHS.httpSink request sink) >>= \res -> case res of
126 try (NHS.httpSink request sink) >>= \res -> case res of
@@ -127,7 +138,11 @@ httpHandler manager = HttpHandler $ \request' sink -> do -- runResourceT ..
127--
138--
128-- Docker seems to ignore the hostname in requests sent over unix domain
139-- Docker seems to ignore the hostname in requests sent over unix domain
129-- sockets (and the port obviously doesn't matter either)
140-- sockets (and the port obviously doesn't matter either)
141+unixHttpHandler :: (
142+#if MIN_VERSION_http_conduit(2,3,0)
143+ MonadUnliftIO m,
144+#endif
130−unixHttpHandler :: (MonadIO m, MonadMask m) => FilePath -- ^ The socket to connect to
145+ MonadIO m, MonadMask m) => FilePath -- ^ The socket to connect to
131 -> m (HttpHandler m)
146 -> m (HttpHandler m)
132unixHttpHandler fp = do
147unixHttpHandler fp = do
133 let mSettings = defaultManagerSettings
148 let mSettings = defaultManagerSettings