@@ -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