on master help sign in
Added get version endpoint

first implementation anyway. Needs cleanup.

commit0ce23d1ce0b3dbffac2fa745213e9bf12d77b380 authorDeni Bertovic <deni@denibertovic.com> dateFri 11 Mar 2016, 12:30 (11 years ago) parent7001ae9
3 files changed+21−4
src/Docker.hs+19−2 src/Docker/Internal.hs+1−1 src/Docker/Types.hs+1−1
src/Docker.hs+19−2
@@ -1,9 +1,26 @@
11module Docker where
22
3+import Control.Applicative ((<$>), (<*>))
4+import Control.Monad.Except (catchError, throwError)
5+import Control.Monad.IO.Class (MonadIO, liftIO)
6+import Control.Monad.Reader (ask)
7+import Control.Monad.Reader (lift)
8+import Data.Aeson (decode)
9+import Data.Maybe (fromJust)
10+import Network.HTTP.Client (responseBody)
11+import Network.HTTP.Types (StdMethod (..))
12+
13+import Docker.Internal
314import Docker.Types
415
5−getDockerVersion :: Monad m => DockerT m (DockerVersion)
6−getDockerVersion = undefined
16+getDockerVersion :: DockerT IO (DockerVersion)
17+getDockerVersion = do
18+ (opts, httpHandler) <- ask
19+ let request = fromJust $ mkHttpRequest GET VersionEndpoint opts
20+ response <- liftIO $ httpHandler request
21+ let body = responseBody response
22+ let res = decode body :: Maybe DockerVersion
23+ return $ fromJust res
724
825listContainers :: Monad m => ListOpts -> DockerT m ([Container])
926listContainers = undefined
src/Docker/Internal.hs+1−1
@@ -30,7 +30,7 @@ mkHttpRequest verb e opts = request
3030 -- TODO: manager = newManager defaultManagerSettings -- We likely need
3131 -- this for TLS.
3232
33−defaultHttpHandler :: Request -> IO Response
33+defaultHttpHandler :: HttpHandler IO
3434defaultHttpHandler request = do
3535 manager <- newManager defaultManagerSettings
3636 response <- httpLbs request manager
src/Docker/Types.hs+1−1
@@ -54,7 +54,7 @@ type HttpHandler m = Request -> m Response
5454type DockerT m a = ReaderT (DockerClientOpts, HttpHandler m) (ExceptT String m) a
5555
5656runDockerT :: (Monad m) => (DockerClientOpts, HttpHandler m) -> DockerT m a -> m (Either String a)
57−runDockerT opts a = runExceptT $ runReaderT a opts
57+runDockerT (opts, h) r = runExceptT $ runReaderT r (opts, h)
5858-- runDockerT opts a = (runExceptT .) . flip runReaderT opts a
5959
6060data ListOpts = ListOpts { all :: Bool } deriving (Eq, Show)