@@ -2,8 +2,9 @@ module Docker.Types where
3import Control.Monad.Except (ExceptT, runExceptT)
3import Control.Monad.Except (ExceptT, runExceptT)
4import Control.Monad.Reader (ReaderT, runReaderT)
4import Control.Monad.Reader (ReaderT, runReaderT)
5−import Data.Aeson (FromJSON, ToJSON, genericParseJSON,
5+import Data.Aeson (FromJSON, ToJSON, encode,
6+ genericParseJSON, genericToJSON,
6− genericToJSON, parseJSON, toJSON)
7+ parseJSON, toJSON)
7import Data.Aeson.Types (defaultOptions, fieldLabelModifier)
8import Data.Aeson.Types (defaultOptions, fieldLabelModifier)
8import qualified Data.ByteString.Lazy as BL
9import qualified Data.ByteString.Lazy as BL
9import Data.Char (toUpper)
10import Data.Char (toUpper)
@@ -15,10 +16,15 @@ import qualified Network.HTTP.Client as HTTP
15type Endpoint = Text
16type Endpoint = Text
16type URL = Text
17type URL = Text
17type ApiVersion = Text
18type ApiVersion = Text
19+type ContainerID = Text
21+type Timeout = Integer
19type Request = HTTP.Request
23type Request = HTTP.Request
20type Response = HTTP.Response BL.ByteString
24type Response = HTTP.Response BL.ByteString
26+data Signal = SIGINT | SIGKILL deriving (Eq, Show)
22data DockerClientOpts m = DockerClientOpts {
28data DockerClientOpts m = DockerClientOpts {
23 http :: Request -> m Response
29 http :: Request -> m Response
24 , apiVersion :: ApiVersion
30 , apiVersion :: ApiVersion
@@ -31,22 +37,17 @@ runDockerT :: (Monad m) => DockerClientOpts m -> DockerT m a -> m (Either String
31runDockerT opts a = runExceptT $ runReaderT a opts
37runDockerT opts a = runExceptT $ runReaderT a opts
32-- runDockerT opts a = (runExceptT .) . flip runReaderT opts a
38-- runDockerT opts a = (runExceptT .) . flip runReaderT opts a
34−data ListOpts = ListOpts
40+data ListOpts = ListOpts { all :: Bool } deriving (Eq, Show)
36− } deriving (Eq, Show, Generic)
38−instance ToJSON ListOpts
39−instance FromJSON ListOpts
41defaultClientOpts :: DockerClientOpts IO
42defaultClientOpts :: DockerClientOpts IO
42−defaultClientOpts = DockerClientOpts
43+defaultClientOpts = DockerClientOpts {
43− { http = undefined
44+ http = undefined
44 , apiVersion = "v1.22"
45 , apiVersion = "v1.22"
45 , baseUrl = "http://127.0.0.1:2375/"
46 , baseUrl = "http://127.0.0.1:2375/"
48−data DockerVersion = DockerVersion
49+data DockerVersion = DockerVersion {
49− { version :: Text
50+ version :: Text
50 , gitCommit :: Text
51 , gitCommit :: Text
51 , goVersion :: Text
52 , goVersion :: Text
52 , arch :: Text
53 , arch :: Text
@@ -67,4 +68,22 @@ data Container = Container
68data Image = Image
69data Image = Image
70−
71+data CreateOpts = CreateOpts
72+data StartOpts = StartOpts
74+data DeleteOpts = DeleteOpts {
77+ } deriving (Eq, Show)
79+type Timestamp = Integer
80+data Tail = Integer | All deriving (Eq, Show)
82+data LogOpts = LogOpts {
89+ } deriving (Eq, Show)