@@ -1,17 +1,22 @@
1+{-# LANGUAGE DataKinds #-}
12{-# LANGUAGE DeriveFunctor #-}
23{-# LANGUAGE FlexibleContexts #-}
4+{-# LANGUAGE GADTs #-}
35{-# LANGUAGE OverloadedStrings #-}
46{-# LANGUAGE RecordWildCards #-}
57{-# LANGUAGE TemplateHaskell #-}
8+{-# LANGUAGE TypeFamilies #-}
69
710module Network.Docker.Types where
811
912import Control.Applicative
1013import Control.Lens.TH
14+import Control.Monad.Free
1115import Data.Aeson
1216import Data.Aeson.TH
1317import Data.Bool
1418import qualified Data.ByteString.Lazy as BS
19+import qualified Data.ByteString.Lazy as L
1520import Data.Default
1621import qualified Data.Map as Map
1722import qualified Data.Text as T
@@ -23,7 +28,6 @@ import Prelude hiding (id)
2328
2429type URL = String
2530type ApiVersion = String
26−type Endpoint = String
2731
2832type Tag = String
2933type IP = String
@@ -38,6 +42,33 @@ data DockerClientOpts = DockerClientOpts {
3842 , ssl :: SSL
3943 } deriving (Show)
4044
45+data Endpoint =
46+ VersionEndpoint
47+ | ListContainersEndpoint
48+ | ListImagesEndpoint
49+ | CreateContainerEndpoint
50+ | StartContainerEndpoint String
51+ | StopContainerEndpoint String
52+ | KillContainerEndpoint String
53+ | RestartContainerEndpoint String
54+ | PauseContainerEndpoint String
55+ | UnpauseContainerEndpoint String
56+ | ContainerLogsEndpoint String
57+
58+defaultClientOpts :: DockerClientOpts
59+defaultClientOpts = DockerClientOpts
60+ { apiVersion = "v1.12"
61+ , baseUrl = "http://127.0.0.1:3128/"
62+ }
63+
64+
65+data HttpRequestF a =
66+ Get URL
67+ | Post URL Value
68+ deriving ( Functor, Show )
69+
70+
71+type HttpRequestM = Free HttpRequestF
4172
4273data SSLOptions = SSLOptions {
4374 optionsKey :: FilePath
@@ -45,8 +76,7 @@ data SSLOptions = SSLOptions {
4576 } deriving Show
4677
4778
48−data ResourceId = ResourceId { _id :: String } deriving (Show, Eq)
49−
79+data ResourceId = ResourceId { _uuid :: String } deriving (Show, Eq)
5080
5181data DockerImage = DockerImage
5282 { _imageId :: ResourceId
@@ -57,7 +87,6 @@ data DockerImage = DockerImage
5787 , _virtualSize :: Int
5888 } deriving (Show, Eq)
5989
60−
6190data DockerVersion = DockerVersion
6291 { _Version :: String
6392 , _GitCommit :: String
@@ -177,7 +206,7 @@ data StartContainerOpts = StartContainerOpts
177206 , _Privileged :: Bool
178207 , _Dns :: [T.Text]
179208 , _VolumesFrom :: [T.Text]
180− , _RestartPolicy :: RestartPolicy
209+ , _RestartPolicy :: RestartPolicy
181210 } deriving (Show)
182211
183212defaultStartOpts = StartContainerOpts
@@ -202,7 +231,7 @@ instance ToJSON StartContainerOpts where
202231 , "Privileged" .= _Privileged
203232 , "Dns" .= _Dns
204233 , "VolumesFrom" .= _VolumesFrom
205− , "RestartPolicy" .= _RestartPolicy
234+ , "RestartPolicy" .= _RestartPolicy
206235 ]
207236
208237data RestartPolicy = RestartNever