on master help sign in
Adds back some of Internal module
87d3b5aDeni Bertovic
docker.cabal+3−1
@@ -17,7 +17,7 @@ stability: experimental
17library
17library
18 default-extensions: DeriveGeneric, OverloadedStrings, ConstraintKinds FlexibleContexts
18 default-extensions: DeriveGeneric, OverloadedStrings, ConstraintKinds FlexibleContexts
19 hs-source-dirs: src
19 hs-source-dirs: src
20− exposed-modules: Docker, Docker.Types
20+ exposed-modules: Docker, Docker.Types, Docker.Internal
21 -- other-modules: Network.Docker.Internal
21 -- other-modules: Network.Docker.Internal
22 build-depends: base >= 4.7 && < 5
22 build-depends: base >= 4.7 && < 5
23 , lens
23 , lens
@@ -26,6 +26,8 @@ library
26 , bytestring
26 , bytestring
27 , text
27 , text
28 , http-client
28 , http-client
29+ , http-types
30+ , blaze-builder
29 , containers
31 , containers
30 , network-uri
32 , network-uri
31 , mtl
33 , mtl
src/Docker/Internal.hsnew file+44
@@ -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+
src/Docker/Types.hs+14−1
@@ -16,7 +16,20 @@ import qualified Data.Text as T
16import GHC.Generics (Generic)
16import GHC.Generics (Generic)
17import qualified Network.HTTP.Client as HTTP
17import qualified Network.HTTP.Client as HTTP
18
18
19−type Endpoint = Text
19+data Endpoint =
20+ VersionEndpoint
21+ | ListContainersEndpoint ListOpts
22+ | ListImagesEndpoint ListOpts
23+ | CreateContainerEndpoint
24+ | StartContainerEndpoint ContainerID
25+ | StopContainerEndpoint ContainerID
26+ | KillContainerEndpoint ContainerID
27+ | RestartContainerEndpoint ContainerID
28+ | PauseContainerEndpoint ContainerName
29+ | UnpauseContainerEndpoint ContainerID
30+ | ContainerLogsEndpoint ContainerID LogOpts
31+ | DeleteContainerEndpoint ContainerID DeleteOpts
32+
20type URL = Text
33type URL = Text
21type ApiVersion = Text
34type ApiVersion = Text
22type ContainerID = Text
35type ContainerID = Text