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