@@ -0,0 +1,44 @@
1+module Docker.Internal where
2+
3+
4+import Blaze.ByteString.Builder (toByteString)
5+import Data.ByteString as BS
6+import Data.ByteString (ByteString)
7+import Data.Text as T
8+import Data.Text (Text)
9+import Data.Text.Encoding (decodeUtf8, encodeUtf8)
10+import Network.HTTP.Types (Query, encodePath,
11+ encodePathSegments)
12+
13+
14+import Docker.Types
15+
16+mkHttpRequest :: DockerClientOpts -> Request
17+mkHttpRequest = undefined
18+
19+encodeURL :: [Text] -> Text
20+encodeURL ps = decodeUtf8 $ toByteString $ encodePathSegments ps
21+
22+encodeURLWithQuery :: [Text] -> Query -> Text
23+encodeURLWithQuery ps q = decodeUtf8 $ toByteString $ encodePath ps q
24+
25+encodeQ = encodeUtf8 . T.pack . show
26+
27+getEndpoint :: Endpoint -> Text
28+getEndpoint VersionEndpoint = encodeURL ["version"]
29+getEndpoint (ListContainersEndpoint lsOpts) = encodeURL ["containers", "json"]
30+getEndpoint (ListImagesEndpoint lsOpts) = encodeURL ["images", "json"]
31+getEndpoint CreateContainerEndpoint = encodeURL ["containers", "create"]
32+getEndpoint (StartContainerEndpoint cid) = encodeURL ["containers", cid, "start"]
33+getEndpoint (StopContainerEndpoint cid) = encodeURL ["containers", cid, "stop"]
34+getEndpoint (KillContainerEndpoint cid) = encodeURL ["containers", cid, "kill"]
35+getEndpoint (RestartContainerEndpoint cid) = encodeURL ["containers", cid, "restart"]
36+getEndpoint (PauseContainerEndpoint cid) = encodeURL ["containers", cid, "pause"]
37+getEndpoint (UnpauseContainerEndpoint cid) = encodeURL ["containers", cid, "unpause"]
38+getEndpoint (ContainerLogsEndpoint cid (LogOpts follow stdout stderr since timestamps tail)) =
39+ encodeURLWithQuery ["containers", cid, "logs"] query
40+ where query = [("stdout", Just (encodeQ stdout)), ("stderr", Just (encodeQ stderr)), ("follow", Just (encodeQ follow))]
41+getEndpoint (DeleteContainerEndpoint cid (DeleteOpts removeVolumes force)) =
42+ encodeURLWithQuery ["containers", cid] query
43+ where query = [("v", Just (encodeQ removeVolumes)), ("force", Just (encodeQ force))]
44+