@@ -5,6 +5,9 @@ module Docker.Client.Http where
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)
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?
110+defaultHttpHandler :: (
111+#if MIN_VERSION_http_conduit(2,3,0)
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
120+#if MIN_VERSION_http_conduit(2,3,0)
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 ..
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)
142+#if MIN_VERSION_http_conduit(2,3,0)
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