@@ -1,3 +1,6 @@
1+{-# LANGUAGE DataKinds #-}
2+{-# LANGUAGE TypeFamilies #-}
3+
14module Network.Docker.Internal where
25
36import Control.Lens
@@ -27,35 +30,37 @@ getElemFromResponse k r = (^? responseBody . key k . _String) r
2730
2831getResponseStatusCode r = (^. responseStatus) r
2932
30−getEndpoint :: Endpoint -> String
31−getEndpoint VersionEndpoint = "/version"
32−getEndpoint ListContainersEndpoint = "/containers/json"
33−getEndpoint ListImagesEndpoint = "/images/json"
34−getEndpoint CreateContainerEndpoint = "/containers/create"
35−getEndpoint (StartContainerEndpoint cid) = printf "/containers/%s/start" cid
36−getEndpoint (StopContainerEndpoint cid) = printf "/containers/%s/stop" cid
37−getEndpoint (KillContainerEndpoint cid) = printf "/containers/%s/kill" cid
38−getEndpoint (RestartContainerEndpoint cid) = printf "/containers/%s/restart" cid
39−getEndpoint (PauseContainerEndpoint cid) = printf "/containers/%s/pause" cid
40−getEndpoint (UnpauseContainerEndpoint cid) = printf "/containers/%s/unpause" cid
41−getEndpoint (ContainerLogsEndpoint cid) = printf "/containers/%s/logs" cid
42−
43−fullUrl :: DockerClientOpts -> Endpoint -> URL
33+getEndpoint :: SEndpoint a -> String
34+getEndpoint SVersionEndpoint = "/version"
35+getEndpoint SListContainersEndpoint = "/containers/json"
36+getEndpoint SListImagesEndpoint = "/images/json"
37+getEndpoint SCreateContainerEndpoint = "/containers/create"
38+getEndpoint (SStartContainerEndpoint cid) = printf "/containers/%s/start" cid
39+getEndpoint (SStopContainerEndpoint cid) = printf "/containers/%s/stop" cid
40+getEndpoint (SKillContainerEndpoint cid) = printf "/containers/%s/kill" cid
41+getEndpoint (SRestartContainerEndpoint cid) = printf "/containers/%s/restart" cid
42+getEndpoint (SPauseContainerEndpoint cid) = printf "/containers/%s/pause" cid
43+getEndpoint (SUnpauseContainerEndpoint cid) = printf "/containers/%s/unpause" cid
44+getEndpoint (SContainerLogsEndpoint cid) = printf "/containers/%s/logs" cid
45+
46+fullUrl :: DockerClientOpts -> SEndpoint a -> URL
4447fullUrl clientOpts endpoint = constructUrl (baseUrl clientOpts) (apiVersion clientOpts) (getEndpoint endpoint)
4548
46−_dockerGetQuery :: DockerClientOpts -> Endpoint -> HttpRequestM Endpoint
49+_dockerGetQuery :: DockerClientOpts -> SEndpoint a -> HttpRequestM (SEndpoint a)
4750_dockerGetQuery clientOpts endpoint = Free (Get (fullUrl clientOpts endpoint))
4851
49−_dockerPostQuery :: ToJSON a => DockerClientOpts -> Endpoint -> a -> HttpRequestM Endpoint
52+_dockerPostQuery :: ToJSON b => DockerClientOpts -> SEndpoint a -> b -> HttpRequestM (SEndpoint a)
5053_dockerPostQuery clientOpts endpoint postObject = Free (Post (fullUrl clientOpts endpoint) (toJSON postObject))
5154
52−_dockerEmptyPostQuery :: DockerClientOpts -> Endpoint -> HttpRequestM Endpoint
55+_dockerEmptyPostQuery :: DockerClientOpts -> SEndpoint a -> HttpRequestM (SEndpoint a)
5356_dockerEmptyPostQuery clientOpts endpoint = Free (Post (fullUrl clientOpts endpoint) (toJSON emptyPost))
5457
55−getDockerVersionM :: DockerClientOpts -> HttpRequestM Endpoint
56−getDockerVersionM clientOpts = _dockerGetQuery clientOpts VersionEndpoint
58+getDockerVersionM :: DockerClientOpts -> SEndpoint VersionEndpoint -> HttpRequestM (SEndpoint VersionEndpoint)
59+getDockerVersionM clientOpts e = _dockerGetQuery clientOpts e
5760
58−stopContainerM :: DockerClientOpts -> Endpoint -> HttpRequestM Endpoint
61+stopContainerM :: DockerClientOpts -> SEndpoint StopContainerEndpoint -> HttpRequestM (SEndpoint StopContainerEndpoint)
5962stopContainerM clientOpts e = _dockerEmptyPostQuery clientOpts e
6063
64+listContainersM :: DockerClientOpts -> SEndpoint ListContainersEndpoint -> HttpRequestM (SEndpoint ListContainersEndpoint)
65+listContainersM clientOpts e = _dockerGetQuery clientOpts e
6166