@@ -1,9 +1,26 @@
1module Docker where
1module Docker where
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 (..))
13+import Docker.Internal
3import Docker.Types
14import Docker.Types
5−getDockerVersion :: Monad m => DockerT m (DockerVersion)
16+getDockerVersion :: DockerT IO (DockerVersion)
6−getDockerVersion = undefined
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
8listContainers :: Monad m => ListOpts -> DockerT m ([Container])
25listContainers :: Monad m => ListOpts -> DockerT m ([Container])
9listContainers = undefined
26listContainers = undefined