@@ -1,17 +1,22 @@
1+{-# LANGUAGE DataKinds #-}
1{-# LANGUAGE DeriveFunctor #-}
2{-# LANGUAGE DeriveFunctor #-}
2{-# LANGUAGE FlexibleContexts #-}
3{-# LANGUAGE FlexibleContexts #-}
3{-# LANGUAGE OverloadedStrings #-}
5{-# LANGUAGE OverloadedStrings #-}
4{-# LANGUAGE RecordWildCards #-}
6{-# LANGUAGE RecordWildCards #-}
5{-# LANGUAGE TemplateHaskell #-}
7{-# LANGUAGE TemplateHaskell #-}
8+{-# LANGUAGE TypeFamilies #-}
7module Network.Docker.Types where
10module Network.Docker.Types where
9import Control.Applicative
12import Control.Applicative
10import Control.Lens.TH
13import Control.Lens.TH
14+import Control.Monad.Free
11import Data.Aeson
15import Data.Aeson
12import Data.Aeson.TH
16import Data.Aeson.TH
13import Data.Bool
17import Data.Bool
14import qualified Data.ByteString.Lazy as BS
18import qualified Data.ByteString.Lazy as BS
19+import qualified Data.ByteString.Lazy as L
15import Data.Default
20import Data.Default
16import qualified Data.Map as Map
21import qualified Data.Map as Map
17import qualified Data.Text as T
22import qualified Data.Text as T
@@ -23,7 +28,6 @@ import Prelude hiding (id)
24type URL = String
29type URL = String
25type ApiVersion = String
30type ApiVersion = String
26−type Endpoint = String
28type Tag = String
32type Tag = String
29type IP = String
33type IP = String
@@ -38,6 +42,33 @@ data DockerClientOpts = DockerClientOpts {
38 , ssl :: SSL
42 , ssl :: SSL
39 } deriving (Show)
43 } deriving (Show)
47+ | ListContainersEndpoint
49+ | CreateContainerEndpoint
50+ | StartContainerEndpoint String
51+ | StopContainerEndpoint String
52+ | KillContainerEndpoint String
53+ | RestartContainerEndpoint String
54+ | PauseContainerEndpoint String
55+ | UnpauseContainerEndpoint String
56+ | ContainerLogsEndpoint String
58+defaultClientOpts :: DockerClientOpts
59+defaultClientOpts = DockerClientOpts
60+ { apiVersion = "v1.12"
61+ , baseUrl = "http://127.0.0.1:3128/"
68+ deriving ( Functor, Show )
71+type HttpRequestM = Free HttpRequestF
42data SSLOptions = SSLOptions {
73data SSLOptions = SSLOptions {
43 optionsKey :: FilePath
74 optionsKey :: FilePath
@@ -45,8 +76,7 @@ data SSLOptions = SSLOptions {
45 } deriving Show
76 } deriving Show
48−data ResourceId = ResourceId { _id :: String } deriving (Show, Eq)
79+data ResourceId = ResourceId { _uuid :: String } deriving (Show, Eq)
51data DockerImage = DockerImage
81data DockerImage = DockerImage
52 { _imageId :: ResourceId
82 { _imageId :: ResourceId
@@ -57,7 +87,6 @@ data DockerImage = DockerImage
57 , _virtualSize :: Int
87 , _virtualSize :: Int
58 } deriving (Show, Eq)
88 } deriving (Show, Eq)
61data DockerVersion = DockerVersion
90data DockerVersion = DockerVersion
62 { _Version :: String
91 { _Version :: String
63 , _GitCommit :: String
92 , _GitCommit :: String
@@ -177,7 +206,7 @@ data StartContainerOpts = StartContainerOpts
177 , _Privileged :: Bool
206 , _Privileged :: Bool
178 , _Dns :: [T.Text]
207 , _Dns :: [T.Text]
179 , _VolumesFrom :: [T.Text]
208 , _VolumesFrom :: [T.Text]
180− , _RestartPolicy :: RestartPolicy
209+ , _RestartPolicy :: RestartPolicy
181 } deriving (Show)
210 } deriving (Show)
183defaultStartOpts = StartContainerOpts
212defaultStartOpts = StartContainerOpts
@@ -202,7 +231,7 @@ instance ToJSON StartContainerOpts where
202 , "Privileged" .= _Privileged
231 , "Privileged" .= _Privileged
203 , "Dns" .= _Dns
232 , "Dns" .= _Dns
204 , "VolumesFrom" .= _VolumesFrom
233 , "VolumesFrom" .= _VolumesFrom
205− , "RestartPolicy" .= _RestartPolicy
234+ , "RestartPolicy" .= _RestartPolicy
208data RestartPolicy = RestartNever
237data RestartPolicy = RestartNever