@@ -7,9 +7,9 @@ module Network.Docker where
7import Control.Applicative ((<$>), (<*>))
7import Control.Applicative ((<$>), (<*>))
8import Control.Lens
8import Control.Lens
9import Control.Monad.Free
9import Control.Monad.Free
10−import Data.Aeson (FromJSON, ToJSON, Value, decode,
10+import Data.Aeson (FromJSON, ToJSON, Value, decode,
11− eitherDecode, toJSON)
11+ eitherDecode, toJSON)
12−import Data.Aeson.Lens (key, _String)
12+import Data.Aeson.Lens (key, _String)
13import Data.Aeson.TH
13import Data.Aeson.TH
14import qualified Data.ByteString.Lazy as L
14import qualified Data.ByteString.Lazy as L
15import Data.Char
15import Data.Char
@@ -28,7 +28,6 @@ import Text.Printf (printf)
29emptyPost = "" :: String
29emptyPost = "" :: String
31−<<<<<<< b865ecd79f55927c7265efcacc45692df148aa4a
32defaultClientOpts :: DockerClientOpts
31defaultClientOpts :: DockerClientOpts
33defaultClientOpts = DockerClientOpts
32defaultClientOpts = DockerClientOpts
34 { apiVersion = "v1.12"
33 { apiVersion = "v1.12"
@@ -51,21 +50,6 @@ getElemFromResponse k r = (^? responseBody . key k . _String) r
52getResponseStatusCode r = (^. responseStatus) r
51getResponseStatusCode r = (^. responseStatus) r
54−getEndpoint :: Endpoint -> String
55−getEndpoint VersionEndpoint = "/version"
56−getEndpoint ListContainersEndpoint = "/containers/json"
57−getEndpoint ListImagesEndpoint = "/images/json"
58−getEndpoint CreateContainerEndpoint = "/containers/create"
59−getEndpoint (StartContainerEndpoint cid) = printf "/containers/%s/start" cid
60−getEndpoint (StopContainerEndpoint cid) = printf "/containers/%s/stop" cid
61−getEndpoint (KillContainerEndpoint cid) = printf "/containers/%s/kill" cid
62−getEndpoint (RestartContainerEndpoint cid) = printf "/containers/%s/restart" cid
63−getEndpoint (PauseContainerEndpoint cid) = printf "/containers/%s/pause" cid
64−getEndpoint (UnpauseContainerEndpoint cid) = printf "/containers/%s/unpause" cid
65−getEndpoint (ContainerLogsEndpoint cid) = printf "/containers/%s/logs" cid
67−fullUrl :: DockerClientOpts -> Endpoint -> URL
68−fullUrl clientOpts endpoint = constructUrl (baseUrl clientOpts) (apiVersion clientOpts) (getEndpoint endpoint)
70setupSSLCtx :: SSLOptions -> IO SSLContext
54setupSSLCtx :: SSLOptions -> IO SSLContext
71setupSSLCtx (SSLOptions key cert) = do
55setupSSLCtx (SSLOptions key cert) = do
@@ -105,8 +89,6 @@ _dockerEmptyPostQuery :: DockerClientOpts -> Endpoint -> HttpRequestM Endpoint
105_dockerEmptyPostQuery clientOpts@DockerClientOpts{ssl = NoSSL} endpoint = Free (Post (fullUrl clientOpts endpoint) (toJSON emptyPost))
89_dockerEmptyPostQuery clientOpts@DockerClientOpts{ssl = NoSSL} endpoint = Free (Post (fullUrl clientOpts endpoint) (toJSON emptyPost))
106_dockerEmptyPostQuery clientOpts@DockerClientOpts{ssl = SSL sslOpts} endpoint = Free (PostSSL sslOpts (fullUrl clientOpts endpoint) (toJSON emptyPost))
90_dockerEmptyPostQuery clientOpts@DockerClientOpts{ssl = SSL sslOpts} endpoint = Free (PostSSL sslOpts (fullUrl clientOpts endpoint) (toJSON emptyPost))
108−getDockerVersionM :: DockerClientOpts -> HttpRequestM Endpoint
109−getDockerVersionM clientOpts = _dockerGetQuery clientOpts VersionEndpoint
111_dockerEmptyDeleteQuery endpoint clientOpts = delete (fullUrl clientOpts endpoint)
93_dockerEmptyDeleteQuery endpoint clientOpts = delete (fullUrl clientOpts endpoint)
@@ -125,10 +107,6 @@ getDockerVersion clientOpts = decodeResponse <$> run (getDockerVersionM clientOp
125-- startContainer :: DockerClientOpts -> String -> StartContainerOpts -> IO(Status)
107-- startContainer :: DockerClientOpts -> String -> StartContainerOpts -> IO(Status)
126-- startContainer clientOpts containerId startOpts = (^. responseStatus) <$> _dockerPostQuery (printf "/containers/%s/start" containerId) clientOpts startOpts
108-- startContainer clientOpts containerId startOpts = (^. responseStatus) <$> _dockerPostQuery (printf "/containers/%s/start" containerId) clientOpts startOpts
128−stopContainerM :: DockerClientOpts -> Endpoint -> HttpRequestM Endpoint
129−stopContainerM clientOpts e = _dockerEmptyPostQuery clientOpts e
132stopContainer :: DockerClientOpts -> String -> IO (Status)
110stopContainer :: DockerClientOpts -> String -> IO (Status)
133stopContainer clientOpts cid = (^. responseStatus) <$> run (stopContainerM clientOpts (StopContainerEndpoint cid))
111stopContainer clientOpts cid = (^. responseStatus) <$> run (stopContainerM clientOpts (StopContainerEndpoint cid))