docker 0.5.0.1 → 0.5.1.0
raw patch · 2 files changed
+32/−6 lines, 2 filesdep +unliftio-coredep ~http-conduitdep ~http-types
Dependencies added: unliftio-core
Dependency ranges changed: http-conduit, http-types
Files
- docker.cabal +14/−3
- src/Docker/Client/Http.hs +18/−3
docker.cabal view
@@ -1,5 +1,5 @@ name: docker-version: 0.5.0.1+version: 0.5.1.0 synopsis: An API client for docker written in Haskell description: See API documentation below. homepage: https://github.com/denibertovic/docker-hs@@ -14,6 +14,11 @@ cabal-version: >=1.10 stability: experimental +-- Flag small-http-conduit+-- Description: Resolve whether http-conduit < 2.3.0.+-- Manual: False+-- Default: True+ library default-extensions: DeriveGeneric, OverloadedStrings, ScopedTypeVariables, ExplicitForAll, MultiParamTypeClasses, FlexibleContexts, GeneralizedNewtypeDeriving, RankNTypes, DeriveFunctor, FlexibleInstances, CPP hs-source-dirs: src@@ -26,13 +31,12 @@ , containers >= 0.5.0 && < 0.6.0 , data-default-class >= 0.0.1 && < 0.2.0 , http-client >= 0.4.0 && < 0.6.0- , http-types >= 0.9 && < 0.12+ , http-types >= 0.9 && < 0.13 , vector , conduit , conduit-combinators , conduit-extra , exceptions- , http-conduit , monad-control , resourcet , transformers@@ -54,6 +58,13 @@ , x509 >= 1.6.0 && < 1.8.0 , x509-store >= 1.6.0 && < 1.8.0 , x509-system >= 1.6.0 && < 1.8.0+ , http-conduit+ , unliftio-core >= 0.1.0.0 && < 0.2.0+ -- if flag(small-http-conduit)+ -- build-depends: http-conduit < 2.3.0+ -- else+ -- build-depends: http-conduit >= 2.3.0+ -- , unliftio-core default-language: Haskell2010 ghc-options: -Wall -fno-warn-name-shadowing
src/Docker/Client/Http.hs view
@@ -5,6 +5,9 @@ -- import Control.Monad.Base (MonadBase(..), liftBaseDefault) import Control.Monad.Catch (MonadMask (..))+#if MIN_VERSION_http_conduit(2,3,0)+import Control.Monad.IO.Unlift (MonadUnliftIO)+#endif import Control.Monad.Reader (ReaderT (..), runReaderT) import qualified Data.ByteString.Char8 as BSC import qualified Data.ByteString.Lazy as BL@@ -104,12 +107,20 @@ requestHeaders = [("Content-Type", "application/json; charset=utf-8")]}) $ getEndpointRequestBody e) <$> request' -- Note: Do we need to set length header? -defaultHttpHandler :: (MonadIO m, MonadMask m) => m (HttpHandler m)+defaultHttpHandler :: (+#if MIN_VERSION_http_conduit(2,3,0)+ MonadUnliftIO m, +#endif+ MonadIO m, MonadMask m) => m (HttpHandler m) defaultHttpHandler = do manager <- liftIO $ newManager defaultManagerSettings return $ httpHandler manager -httpHandler :: (MonadIO m, MonadMask m) => HTTP.Manager -> HttpHandler m+httpHandler :: (+#if MIN_VERSION_http_conduit(2,3,0)+ MonadUnliftIO m, +#endif+ MonadIO m, MonadMask m) => HTTP.Manager -> HttpHandler m httpHandler manager = HttpHandler $ \request' sink -> do -- runResourceT .. let request = NHS.setRequestManager manager request' try (NHS.httpSink request sink) >>= \res -> case res of@@ -127,7 +138,11 @@ -- -- Docker seems to ignore the hostname in requests sent over unix domain -- sockets (and the port obviously doesn't matter either)-unixHttpHandler :: (MonadIO m, MonadMask m) => FilePath -- ^ The socket to connect to+unixHttpHandler :: (+#if MIN_VERSION_http_conduit(2,3,0)+ MonadUnliftIO m, +#endif+ MonadIO m, MonadMask m) => FilePath -- ^ The socket to connect to -> m (HttpHandler m) unixHttpHandler fp = do let mSettings = defaultManagerSettings