packages feed

docker 0.1.0.0 → 0.1.0.1

raw patch · 10 files changed

+353/−351 lines, 10 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Docker: _dockerEmptyPostQuery :: Endpoint -> DockerClientOpts -> IO (Response ByteString)
- Docker: _dockerGetQuery :: Endpoint -> DockerClientOpts -> IO (Response ByteString)
- Docker: _dockerPostQuery :: ToJSON a => Endpoint -> DockerClientOpts -> a -> IO (Response ByteString)
- Docker: constructRelativeUrl :: String -> String
- Docker: constructUrl :: URL -> ApiVersion -> Endpoint -> URL
- Docker: createContainer :: DockerClientOpts -> CreateContainerOpts -> IO (Maybe Text)
- Docker: decodeResponse :: (FromJSON a, Functor f) => f (Response ByteString) -> f (Maybe a)
- Docker: defaultClientOpts :: DockerClientOpts
- Docker: emptyPost :: String
- Docker: fullUrl :: DockerClientOpts -> Endpoint -> URL
- Docker: getContainerLogs :: DockerClientOpts -> String -> IO (ByteString)
- Docker: getContainerLogsStream :: DockerClientOpts -> String -> IO ()
- Docker: getDockerContainers :: DockerClientOpts -> IO (Maybe [DockerContainer])
- Docker: getDockerImages :: DockerClientOpts -> IO (Maybe [DockerImage])
- Docker: getDockerVersion :: DockerClientOpts -> IO (Maybe DockerVersion)
- Docker: getOutOfResponse :: AsValue body0 => Text -> Response body0 -> Maybe Text
- Docker: getResponseStatusCode :: Response body -> Status
- Docker: killContainer :: DockerClientOpts -> String -> IO (Status)
- Docker: pauseContainer :: DockerClientOpts -> String -> IO (Status)
- Docker: restartContainer :: DockerClientOpts -> String -> IO (Status)
- Docker: startContainer :: DockerClientOpts -> String -> StartContainerOpts -> IO (Status)
- Docker: stopContainer :: DockerClientOpts -> String -> IO (Status)
- Docker: unpauseContainer :: DockerClientOpts -> String -> IO (Status)
- Docker.Options: dopts :: Options
- Docker.Types: CreateContainerOpts :: String -> String -> Int -> Int -> Bool -> Bool -> Bool -> Maybe Object -> Bool -> Bool -> Bool -> Maybe Object -> [String] -> String -> Maybe Object -> Maybe Object -> String -> Bool -> Maybe Object -> CreateContainerOpts
- Docker.Types: DockerClientOpts :: ApiVersion -> URL -> DockerClientOpts
- Docker.Types: DockerContainer :: ResourceId -> ResourceId -> String -> Int -> [String] -> String -> Maybe [PortMap] -> DockerContainer
- Docker.Types: DockerImage :: ResourceId -> Int -> Maybe String -> [Tag] -> Int -> Int -> DockerImage
- Docker.Types: DockerVersion :: String -> String -> String -> String -> String -> DockerVersion
- Docker.Types: PortMap :: IP -> Port -> Port -> PortType -> PortMap
- Docker.Types: ResourceId :: String -> ResourceId
- Docker.Types: StartContainerOpts :: [Text] -> [Text] -> [(Text, Text)] -> [(Text, [(Text, Text)])] -> Bool -> Bool -> [Text] -> [Text] -> StartContainerOpts
- Docker.Types: _Arch :: DockerVersion -> String
- Docker.Types: _Binds :: StartContainerOpts -> [Text]
- Docker.Types: _Dns :: StartContainerOpts -> [Text]
- Docker.Types: _GitCommit :: DockerVersion -> String
- Docker.Types: _GoVersion :: DockerVersion -> String
- Docker.Types: _KernelVersion :: DockerVersion -> String
- Docker.Types: _Links :: StartContainerOpts -> [Text]
- Docker.Types: _LxcConf :: StartContainerOpts -> [(Text, Text)]
- Docker.Types: _PortBindings :: StartContainerOpts -> [(Text, [(Text, Text)])]
- Docker.Types: _Privileged :: StartContainerOpts -> Bool
- Docker.Types: _PublishAllPorts :: StartContainerOpts -> Bool
- Docker.Types: _Version :: DockerVersion -> String
- Docker.Types: _VolumesFrom :: StartContainerOpts -> [Text]
- Docker.Types: _attachStderr :: CreateContainerOpts -> Bool
- Docker.Types: _attachStdin :: CreateContainerOpts -> Bool
- Docker.Types: _attachStdout :: CreateContainerOpts -> Bool
- Docker.Types: _cmd :: CreateContainerOpts -> [String]
- Docker.Types: _command :: DockerContainer -> String
- Docker.Types: _containerCreatedAt :: DockerContainer -> Int
- Docker.Types: _containerId :: DockerContainer -> ResourceId
- Docker.Types: _containerImageId :: DockerContainer -> ResourceId
- Docker.Types: _disableNetwork :: CreateContainerOpts -> Bool
- Docker.Types: _env :: CreateContainerOpts -> Maybe Object
- Docker.Types: _exposedPorts :: CreateContainerOpts -> Maybe Object
- Docker.Types: _hostname :: CreateContainerOpts -> String
- Docker.Types: _id :: ResourceId -> String
- Docker.Types: _image :: CreateContainerOpts -> String
- Docker.Types: _imageCreatedAt :: DockerImage -> Int
- Docker.Types: _imageId :: DockerImage -> ResourceId
- Docker.Types: _ip :: PortMap -> IP
- Docker.Types: _memory :: CreateContainerOpts -> Int
- Docker.Types: _memorySwap :: CreateContainerOpts -> Int
- Docker.Types: _names :: DockerContainer -> [String]
- Docker.Types: _openStdin :: CreateContainerOpts -> Bool
- Docker.Types: _parentId :: DockerImage -> Maybe String
- Docker.Types: _portSpecs :: CreateContainerOpts -> Maybe Object
- Docker.Types: _ports :: DockerContainer -> Maybe [PortMap]
- Docker.Types: _privatePort :: PortMap -> Port
- Docker.Types: _publicPort :: PortMap -> Port
- Docker.Types: _repoTags :: DockerImage -> [Tag]
- Docker.Types: _size :: DockerImage -> Int
- Docker.Types: _status :: DockerContainer -> String
- Docker.Types: _stdinOnce :: CreateContainerOpts -> Bool
- Docker.Types: _tty :: CreateContainerOpts -> Bool
- Docker.Types: _type :: PortMap -> PortType
- Docker.Types: _user :: CreateContainerOpts -> String
- Docker.Types: _virtualSize :: DockerImage -> Int
- Docker.Types: _volumes :: CreateContainerOpts -> Maybe Object
- Docker.Types: _volumesFrom :: CreateContainerOpts -> Maybe Object
- Docker.Types: _workingDir :: CreateContainerOpts -> String
- Docker.Types: apiVersion :: DockerClientOpts -> ApiVersion
- Docker.Types: attachStderr :: Lens' CreateContainerOpts Bool
- Docker.Types: attachStdin :: Lens' CreateContainerOpts Bool
- Docker.Types: attachStdout :: Lens' CreateContainerOpts Bool
- Docker.Types: baseUrl :: DockerClientOpts -> URL
- Docker.Types: class HasResourceId t_aaOh where id = (resourceId . go_aaOj) where go_aaOj _f_aaOk (ResourceId __id'_aaOl) = ((\ __id_aaOm -> ResourceId __id_aaOm) <$> (_f_aaOk __id'_aaOl))
- Docker.Types: cmd :: Lens' CreateContainerOpts [String]
- Docker.Types: command :: Lens' DockerContainer String
- Docker.Types: containerCreatedAt :: Lens' DockerContainer Int
- Docker.Types: containerId :: Lens' DockerContainer ResourceId
- Docker.Types: containerImageId :: Lens' DockerContainer ResourceId
- Docker.Types: data CreateContainerOpts
- Docker.Types: data DockerClientOpts
- Docker.Types: data DockerContainer
- Docker.Types: data DockerImage
- Docker.Types: data DockerVersion
- Docker.Types: data PortMap
- Docker.Types: data ResourceId
- Docker.Types: data StartContainerOpts
- Docker.Types: defaultCreateOpts :: CreateContainerOpts
- Docker.Types: defaultStartOpts :: StartContainerOpts
- Docker.Types: disableNetwork :: Lens' CreateContainerOpts Bool
- Docker.Types: env :: Lens' CreateContainerOpts (Maybe Object)
- Docker.Types: exposedPorts :: Lens' CreateContainerOpts (Maybe Object)
- Docker.Types: hostname :: Lens' CreateContainerOpts String
- Docker.Types: id :: HasResourceId t_aaOh => Lens' t_aaOh String
- Docker.Types: image :: Lens' CreateContainerOpts String
- Docker.Types: imageCreatedAt :: Lens' DockerImage Int
- Docker.Types: imageId :: Lens' DockerImage ResourceId
- Docker.Types: instance Eq DockerContainer
- Docker.Types: instance Eq DockerImage
- Docker.Types: instance Eq DockerVersion
- Docker.Types: instance Eq PortMap
- Docker.Types: instance Eq ResourceId
- Docker.Types: instance FromJSON DockerContainer
- Docker.Types: instance FromJSON DockerImage
- Docker.Types: instance FromJSON DockerVersion
- Docker.Types: instance FromJSON PortMap
- Docker.Types: instance HasResourceId DockerContainer
- Docker.Types: instance HasResourceId DockerImage
- Docker.Types: instance HasResourceId ResourceId
- Docker.Types: instance Show CreateContainerOpts
- Docker.Types: instance Show DockerClientOpts
- Docker.Types: instance Show DockerContainer
- Docker.Types: instance Show DockerImage
- Docker.Types: instance Show DockerVersion
- Docker.Types: instance Show PortMap
- Docker.Types: instance Show ResourceId
- Docker.Types: instance Show StartContainerOpts
- Docker.Types: instance ToJSON CreateContainerOpts
- Docker.Types: instance ToJSON DockerVersion
- Docker.Types: instance ToJSON StartContainerOpts
- Docker.Types: memory :: Lens' CreateContainerOpts Int
- Docker.Types: memorySwap :: Lens' CreateContainerOpts Int
- Docker.Types: names :: Lens' DockerContainer [String]
- Docker.Types: openStdin :: Lens' CreateContainerOpts Bool
- Docker.Types: parentId :: Lens' DockerImage (Maybe String)
- Docker.Types: portSpecs :: Lens' CreateContainerOpts (Maybe Object)
- Docker.Types: ports :: Lens' DockerContainer (Maybe [PortMap])
- Docker.Types: repoTags :: Lens' DockerImage [Tag]
- Docker.Types: resourceId :: HasResourceId t_aaOh => Lens' t_aaOh ResourceId
- Docker.Types: size :: Lens' DockerImage Int
- Docker.Types: status :: Lens' DockerContainer String
- Docker.Types: stdinOnce :: Lens' CreateContainerOpts Bool
- Docker.Types: tty :: Lens' CreateContainerOpts Bool
- Docker.Types: type ApiVersion = String
- Docker.Types: type Endpoint = String
- Docker.Types: type IP = String
- Docker.Types: type Port = Int
- Docker.Types: type PortType = String
- Docker.Types: type Tag = String
- Docker.Types: type URL = String
- Docker.Types: user :: Lens' CreateContainerOpts String
- Docker.Types: virtualSize :: Lens' DockerImage Int
- Docker.Types: volumes :: Lens' CreateContainerOpts (Maybe Object)
- Docker.Types: volumesFrom :: Lens' CreateContainerOpts (Maybe Object)
- Docker.Types: workingDir :: Lens' CreateContainerOpts String
- Docker.Utils: strip_underscore :: String -> String
+ Network.Docker: _dockerEmptyPostQuery :: Endpoint -> DockerClientOpts -> IO (Response ByteString)
+ Network.Docker: _dockerGetQuery :: Endpoint -> DockerClientOpts -> IO (Response ByteString)
+ Network.Docker: _dockerPostQuery :: ToJSON a => Endpoint -> DockerClientOpts -> a -> IO (Response ByteString)
+ Network.Docker: constructRelativeUrl :: String -> String
+ Network.Docker: constructUrl :: URL -> ApiVersion -> Endpoint -> URL
+ Network.Docker: createContainer :: DockerClientOpts -> CreateContainerOpts -> IO (Maybe Text)
+ Network.Docker: decodeResponse :: (FromJSON a, Functor f) => f (Response ByteString) -> f (Maybe a)
+ Network.Docker: defaultClientOpts :: DockerClientOpts
+ Network.Docker: emptyPost :: String
+ Network.Docker: fullUrl :: DockerClientOpts -> Endpoint -> URL
+ Network.Docker: getContainerLogs :: DockerClientOpts -> String -> IO (ByteString)
+ Network.Docker: getContainerLogsStream :: DockerClientOpts -> String -> IO ()
+ Network.Docker: getDockerContainers :: DockerClientOpts -> IO (Maybe [DockerContainer])
+ Network.Docker: getDockerImages :: DockerClientOpts -> IO (Maybe [DockerImage])
+ Network.Docker: getDockerVersion :: DockerClientOpts -> IO (Maybe DockerVersion)
+ Network.Docker: getOutOfResponse :: AsValue body0 => Text -> Response body0 -> Maybe Text
+ Network.Docker: getResponseStatusCode :: Response body -> Status
+ Network.Docker: killContainer :: DockerClientOpts -> String -> IO (Status)
+ Network.Docker: pauseContainer :: DockerClientOpts -> String -> IO (Status)
+ Network.Docker: restartContainer :: DockerClientOpts -> String -> IO (Status)
+ Network.Docker: startContainer :: DockerClientOpts -> String -> StartContainerOpts -> IO (Status)
+ Network.Docker: stopContainer :: DockerClientOpts -> String -> IO (Status)
+ Network.Docker: unpauseContainer :: DockerClientOpts -> String -> IO (Status)
+ Network.Docker.Options: dopts :: Options
+ Network.Docker.Types: CreateContainerOpts :: String -> String -> Int -> Int -> Bool -> Bool -> Bool -> Maybe Object -> Bool -> Bool -> Bool -> Maybe Object -> [String] -> String -> Maybe Object -> Maybe Object -> String -> Bool -> Maybe Object -> CreateContainerOpts
+ Network.Docker.Types: DockerClientOpts :: ApiVersion -> URL -> DockerClientOpts
+ Network.Docker.Types: DockerContainer :: ResourceId -> ResourceId -> String -> Int -> [String] -> String -> Maybe [PortMap] -> DockerContainer
+ Network.Docker.Types: DockerImage :: ResourceId -> Int -> Maybe String -> [Tag] -> Int -> Int -> DockerImage
+ Network.Docker.Types: DockerVersion :: String -> String -> String -> String -> String -> DockerVersion
+ Network.Docker.Types: PortMap :: IP -> Port -> Port -> PortType -> PortMap
+ Network.Docker.Types: ResourceId :: String -> ResourceId
+ Network.Docker.Types: StartContainerOpts :: [Text] -> [Text] -> [(Text, Text)] -> [(Text, [(Text, Text)])] -> Bool -> Bool -> [Text] -> [Text] -> StartContainerOpts
+ Network.Docker.Types: _Arch :: DockerVersion -> String
+ Network.Docker.Types: _Binds :: StartContainerOpts -> [Text]
+ Network.Docker.Types: _Dns :: StartContainerOpts -> [Text]
+ Network.Docker.Types: _GitCommit :: DockerVersion -> String
+ Network.Docker.Types: _GoVersion :: DockerVersion -> String
+ Network.Docker.Types: _KernelVersion :: DockerVersion -> String
+ Network.Docker.Types: _Links :: StartContainerOpts -> [Text]
+ Network.Docker.Types: _LxcConf :: StartContainerOpts -> [(Text, Text)]
+ Network.Docker.Types: _PortBindings :: StartContainerOpts -> [(Text, [(Text, Text)])]
+ Network.Docker.Types: _Privileged :: StartContainerOpts -> Bool
+ Network.Docker.Types: _PublishAllPorts :: StartContainerOpts -> Bool
+ Network.Docker.Types: _Version :: DockerVersion -> String
+ Network.Docker.Types: _VolumesFrom :: StartContainerOpts -> [Text]
+ Network.Docker.Types: _attachStderr :: CreateContainerOpts -> Bool
+ Network.Docker.Types: _attachStdin :: CreateContainerOpts -> Bool
+ Network.Docker.Types: _attachStdout :: CreateContainerOpts -> Bool
+ Network.Docker.Types: _cmd :: CreateContainerOpts -> [String]
+ Network.Docker.Types: _command :: DockerContainer -> String
+ Network.Docker.Types: _containerCreatedAt :: DockerContainer -> Int
+ Network.Docker.Types: _containerId :: DockerContainer -> ResourceId
+ Network.Docker.Types: _containerImageId :: DockerContainer -> ResourceId
+ Network.Docker.Types: _disableNetwork :: CreateContainerOpts -> Bool
+ Network.Docker.Types: _env :: CreateContainerOpts -> Maybe Object
+ Network.Docker.Types: _exposedPorts :: CreateContainerOpts -> Maybe Object
+ Network.Docker.Types: _hostname :: CreateContainerOpts -> String
+ Network.Docker.Types: _id :: ResourceId -> String
+ Network.Docker.Types: _image :: CreateContainerOpts -> String
+ Network.Docker.Types: _imageCreatedAt :: DockerImage -> Int
+ Network.Docker.Types: _imageId :: DockerImage -> ResourceId
+ Network.Docker.Types: _ip :: PortMap -> IP
+ Network.Docker.Types: _memory :: CreateContainerOpts -> Int
+ Network.Docker.Types: _memorySwap :: CreateContainerOpts -> Int
+ Network.Docker.Types: _names :: DockerContainer -> [String]
+ Network.Docker.Types: _openStdin :: CreateContainerOpts -> Bool
+ Network.Docker.Types: _parentId :: DockerImage -> Maybe String
+ Network.Docker.Types: _portSpecs :: CreateContainerOpts -> Maybe Object
+ Network.Docker.Types: _ports :: DockerContainer -> Maybe [PortMap]
+ Network.Docker.Types: _privatePort :: PortMap -> Port
+ Network.Docker.Types: _publicPort :: PortMap -> Port
+ Network.Docker.Types: _repoTags :: DockerImage -> [Tag]
+ Network.Docker.Types: _size :: DockerImage -> Int
+ Network.Docker.Types: _status :: DockerContainer -> String
+ Network.Docker.Types: _stdinOnce :: CreateContainerOpts -> Bool
+ Network.Docker.Types: _tty :: CreateContainerOpts -> Bool
+ Network.Docker.Types: _type :: PortMap -> PortType
+ Network.Docker.Types: _user :: CreateContainerOpts -> String
+ Network.Docker.Types: _virtualSize :: DockerImage -> Int
+ Network.Docker.Types: _volumes :: CreateContainerOpts -> Maybe Object
+ Network.Docker.Types: _volumesFrom :: CreateContainerOpts -> Maybe Object
+ Network.Docker.Types: _workingDir :: CreateContainerOpts -> String
+ Network.Docker.Types: apiVersion :: DockerClientOpts -> ApiVersion
+ Network.Docker.Types: attachStderr :: Lens' CreateContainerOpts Bool
+ Network.Docker.Types: attachStdin :: Lens' CreateContainerOpts Bool
+ Network.Docker.Types: attachStdout :: Lens' CreateContainerOpts Bool
+ Network.Docker.Types: baseUrl :: DockerClientOpts -> URL
+ Network.Docker.Types: class HasResourceId t_aaOh where id = (resourceId . go_aaOj) where go_aaOj _f_aaOk (ResourceId __id'_aaOl) = ((\ __id_aaOm -> ResourceId __id_aaOm) <$> (_f_aaOk __id'_aaOl))
+ Network.Docker.Types: cmd :: Lens' CreateContainerOpts [String]
+ Network.Docker.Types: command :: Lens' DockerContainer String
+ Network.Docker.Types: containerCreatedAt :: Lens' DockerContainer Int
+ Network.Docker.Types: containerId :: Lens' DockerContainer ResourceId
+ Network.Docker.Types: containerImageId :: Lens' DockerContainer ResourceId
+ Network.Docker.Types: data CreateContainerOpts
+ Network.Docker.Types: data DockerClientOpts
+ Network.Docker.Types: data DockerContainer
+ Network.Docker.Types: data DockerImage
+ Network.Docker.Types: data DockerVersion
+ Network.Docker.Types: data PortMap
+ Network.Docker.Types: data ResourceId
+ Network.Docker.Types: data StartContainerOpts
+ Network.Docker.Types: defaultCreateOpts :: CreateContainerOpts
+ Network.Docker.Types: defaultStartOpts :: StartContainerOpts
+ Network.Docker.Types: disableNetwork :: Lens' CreateContainerOpts Bool
+ Network.Docker.Types: env :: Lens' CreateContainerOpts (Maybe Object)
+ Network.Docker.Types: exposedPorts :: Lens' CreateContainerOpts (Maybe Object)
+ Network.Docker.Types: hostname :: Lens' CreateContainerOpts String
+ Network.Docker.Types: id :: HasResourceId t_aaOh => Lens' t_aaOh String
+ Network.Docker.Types: image :: Lens' CreateContainerOpts String
+ Network.Docker.Types: imageCreatedAt :: Lens' DockerImage Int
+ Network.Docker.Types: imageId :: Lens' DockerImage ResourceId
+ Network.Docker.Types: instance Eq DockerContainer
+ Network.Docker.Types: instance Eq DockerImage
+ Network.Docker.Types: instance Eq DockerVersion
+ Network.Docker.Types: instance Eq PortMap
+ Network.Docker.Types: instance Eq ResourceId
+ Network.Docker.Types: instance FromJSON DockerContainer
+ Network.Docker.Types: instance FromJSON DockerImage
+ Network.Docker.Types: instance FromJSON DockerVersion
+ Network.Docker.Types: instance FromJSON PortMap
+ Network.Docker.Types: instance HasResourceId DockerContainer
+ Network.Docker.Types: instance HasResourceId DockerImage
+ Network.Docker.Types: instance HasResourceId ResourceId
+ Network.Docker.Types: instance Show CreateContainerOpts
+ Network.Docker.Types: instance Show DockerClientOpts
+ Network.Docker.Types: instance Show DockerContainer
+ Network.Docker.Types: instance Show DockerImage
+ Network.Docker.Types: instance Show DockerVersion
+ Network.Docker.Types: instance Show PortMap
+ Network.Docker.Types: instance Show ResourceId
+ Network.Docker.Types: instance Show StartContainerOpts
+ Network.Docker.Types: instance ToJSON CreateContainerOpts
+ Network.Docker.Types: instance ToJSON DockerVersion
+ Network.Docker.Types: instance ToJSON StartContainerOpts
+ Network.Docker.Types: memory :: Lens' CreateContainerOpts Int
+ Network.Docker.Types: memorySwap :: Lens' CreateContainerOpts Int
+ Network.Docker.Types: names :: Lens' DockerContainer [String]
+ Network.Docker.Types: openStdin :: Lens' CreateContainerOpts Bool
+ Network.Docker.Types: parentId :: Lens' DockerImage (Maybe String)
+ Network.Docker.Types: portSpecs :: Lens' CreateContainerOpts (Maybe Object)
+ Network.Docker.Types: ports :: Lens' DockerContainer (Maybe [PortMap])
+ Network.Docker.Types: repoTags :: Lens' DockerImage [Tag]
+ Network.Docker.Types: resourceId :: HasResourceId t_aaOh => Lens' t_aaOh ResourceId
+ Network.Docker.Types: size :: Lens' DockerImage Int
+ Network.Docker.Types: status :: Lens' DockerContainer String
+ Network.Docker.Types: stdinOnce :: Lens' CreateContainerOpts Bool
+ Network.Docker.Types: tty :: Lens' CreateContainerOpts Bool
+ Network.Docker.Types: type ApiVersion = String
+ Network.Docker.Types: type Endpoint = String
+ Network.Docker.Types: type IP = String
+ Network.Docker.Types: type Port = Int
+ Network.Docker.Types: type PortType = String
+ Network.Docker.Types: type Tag = String
+ Network.Docker.Types: type URL = String
+ Network.Docker.Types: user :: Lens' CreateContainerOpts String
+ Network.Docker.Types: virtualSize :: Lens' DockerImage Int
+ Network.Docker.Types: volumes :: Lens' CreateContainerOpts (Maybe Object)
+ Network.Docker.Types: volumesFrom :: Lens' CreateContainerOpts (Maybe Object)
+ Network.Docker.Types: workingDir :: Lens' CreateContainerOpts String
+ Network.Docker.Utils: strip_underscore :: String -> String

Files

− Docker.hs
@@ -1,92 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}--module Docker where--import           Control.Applicative  ((<$>), (<*>))-import           Control.Lens-import           Data.Aeson           (FromJSON, ToJSON, decode, eitherDecode,-                                       encode)-import           Data.Aeson.Lens      (key, _String)-import           Data.Aeson.TH-import qualified Data.ByteString.Lazy as L-import           Data.Char-import qualified Data.Text            as T-import           Docker.Options-import           Docker.Types-import           Network.Wreq-import           Pipes-import qualified Pipes.ByteString     as PB-import qualified Pipes.HTTP           as PH-import           Text.Printf          (printf)---defaultClientOpts :: DockerClientOpts-defaultClientOpts = DockerClientOpts-                { apiVersion = "v1.12"-                , baseUrl = "http://127.0.0.1:3128/"-                }--constructUrl :: URL -> ApiVersion -> Endpoint -> URL-constructUrl url apiVersion endpoint = printf "%s%s%s" url apiVersion endpoint--constructRelativeUrl url = url :: String--decodeResponse r = decode <$> (^. responseBody) <$> r--getOutOfResponse k r = (^? responseBody . key k . _String) r--getResponseStatusCode r = (^. responseStatus) r--fullUrl :: DockerClientOpts -> Endpoint -> URL-fullUrl clientOpts endpoint = constructUrl (baseUrl clientOpts) (apiVersion clientOpts) endpoint--_dockerGetQuery :: Endpoint -> DockerClientOpts -> IO(Response L.ByteString)-_dockerGetQuery endpoint clientOpts = get (fullUrl clientOpts endpoint)--_dockerPostQuery :: ToJSON a => Endpoint -> DockerClientOpts -> a -> IO (Response L.ByteString)-_dockerPostQuery endpoint clientOpts postObject = post (fullUrl clientOpts endpoint) (encode postObject)--emptyPost = "" :: String-_dockerEmptyPostQuery endpoint clientOpts = post (fullUrl clientOpts endpoint) (encode emptyPost)--getDockerVersion :: DockerClientOpts -> IO (Maybe DockerVersion)-getDockerVersion = decodeResponse . _dockerGetQuery "/version"--getDockerContainers :: DockerClientOpts -> IO (Maybe [DockerContainer])-getDockerContainers = decodeResponse . _dockerGetQuery "/containers/json"--getDockerImages :: DockerClientOpts -> IO (Maybe [DockerImage])-getDockerImages = decodeResponse . _dockerGetQuery "/images/json"--createContainer :: DockerClientOpts -> CreateContainerOpts -> IO(Maybe T.Text)-createContainer clientOpts createOpts = getOutOfResponse "Id" <$> (_dockerPostQuery "/containers/create" clientOpts createOpts)--startContainer :: DockerClientOpts -> String -> StartContainerOpts -> IO(Status)-startContainer clientOpts containerId startOpts = (^. responseStatus) <$> _dockerPostQuery (printf "/containers/%s/start" containerId) clientOpts startOpts--stopContainer :: DockerClientOpts -> String -> IO (Status)-stopContainer  clientOpts containerId = (^. responseStatus) <$> _dockerEmptyPostQuery (printf "/containers/%s/stop" containerId) clientOpts--killContainer :: DockerClientOpts -> String -> IO (Status)-killContainer  clientOpts containerId = (^. responseStatus) <$> _dockerEmptyPostQuery (printf "/containers/%s/kill" containerId) clientOpts--restartContainer :: DockerClientOpts -> String -> IO (Status)-restartContainer  clientOpts containerId = (^. responseStatus) <$> _dockerEmptyPostQuery (printf "/containers/%s/restart" containerId) clientOpts--pauseContainer :: DockerClientOpts -> String -> IO (Status)-pauseContainer  clientOpts containerId = (^. responseStatus) <$> _dockerEmptyPostQuery (printf "/containers/%s/pause" containerId) clientOpts--unpauseContainer :: DockerClientOpts -> String -> IO (Status)-unpauseContainer  clientOpts containerId = (^. responseStatus) <$> _dockerEmptyPostQuery (printf "/containers/%s/unpause" containerId) clientOpts--getContainerLogsStream :: DockerClientOpts -> String -> IO ()-getContainerLogsStream  clientOpts containerId = do-                req <- PH.parseUrl (fullUrl clientOpts url)-                let req' =  req {PH.method = "GET"}-                PH.withManager PH.defaultManagerSettings $ \m  -> PH.withHTTP req' m  $ \resp -> runEffect $ PH.responseBody resp >-> PB.stdout-        where url = (printf "/containers/%s/logs?stdout=1&stderr=1&follow=1" containerId)--getContainerLogs :: DockerClientOpts -> String -> IO (L.ByteString)-getContainerLogs  clientOpts containerId = (^. responseBody) <$> _dockerGetQuery url clientOpts-        where url = (printf "/containers/%s/logs?stdout=1&stderr=1" containerId)-
− Docker/Options.hs
@@ -1,16 +0,0 @@-module Docker.Options where--import           Data.Aeson.TH-import           Docker.Utils--dopts :: Options-dopts = Options {-      fieldLabelModifier = strip_underscore-    , constructorTagModifier = id-    , allNullaryToStringTag = True-    , omitNothingFields = True-    , sumEncoding = defaultTaggedObject-    }---
− Docker/Types.hs
@@ -1,234 +0,0 @@-{-# LANGUAGE DeriveFunctor     #-}-{-# LANGUAGE FlexibleContexts  #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards   #-}-{-# LANGUAGE TemplateHaskell   #-}--module Docker.Types where--import           Control.Applicative-import           Control.Lens.TH-import           Control.Lens.TH-import           Data.Aeson-import           Data.Aeson.TH-import           Data.Bool-import qualified Data.ByteString.Lazy as BS-import           Data.Default-import qualified Data.Map             as Map-import qualified Data.Text            as T-import           Docker.Options-import           GHC.Generics-import           Network.Wreq.Types   (Postable)---type URL = String-type ApiVersion = String-type Endpoint = String--type Tag = String-type IP = String-type Port = Int-type PortType = String--data DockerClientOpts = DockerClientOpts {-      apiVersion :: ApiVersion-    , baseUrl    :: URL-    } deriving (Show)---data ResourceId = ResourceId { _id :: String } deriving (Show, Eq)---data DockerImage = DockerImage-                { _imageId        :: ResourceId-                , _imageCreatedAt :: Int-                , _parentId       :: Maybe String-                , _repoTags       :: [Tag]-                , _size           :: Int-                , _virtualSize    :: Int-                } deriving (Show, Eq)---data DockerVersion = DockerVersion-                  { _Version       :: String-                  , _GitCommit     :: String-                  , _GoVersion     :: String-                  , _Arch          :: String-                  , _KernelVersion :: String-                  } deriving (Show, Eq)----- The JSON looks likes this:--- "Ports":[{"IP":"0.0.0.0","PrivatePort":55555,"PublicPort":55555,"Type":"tcp"}]--data PortMap = PortMap-            { _ip          :: IP-            , _privatePort :: Port-            , _publicPort  :: Port-            , _type        :: PortType-            } deriving (Show, Eq)---data DockerContainer = DockerContainer-                    { _containerId        :: ResourceId-                    , _containerImageId   :: ResourceId-                    , _command            :: String-                    , _containerCreatedAt :: Int-                    , _names              :: [String]-                    , _status             :: String-                    , _ports              :: Maybe [PortMap]-                    } deriving (Show, Eq)---data CreateContainerOpts = CreateContainerOpts-                  { _hostname       :: String-                  , _user           :: String-                  , _memory         :: Int-                  , _memorySwap     :: Int-                  , _attachStdin    :: Bool-                  , _attachStdout   :: Bool-                  , _attachStderr   :: Bool-                  , _portSpecs      :: Maybe Object-                  , _tty            :: Bool-                  , _openStdin      :: Bool-                  , _stdinOnce      :: Bool-                  , _env            :: Maybe Object-                  , _cmd            :: [String]-                  , _image          :: String-                  , _volumes        :: Maybe Object-                  , _volumesFrom    :: Maybe Object-                  , _workingDir     :: String-                  , _disableNetwork :: Bool-                  , _exposedPorts   :: Maybe Object-                  } deriving (Show)--defaultCreateOpts = CreateContainerOpts {-                             _hostname = ""-                            , _user = ""-                            , _memory = 0-                            , _memorySwap =  0-                            , _attachStdin = False-                            , _attachStdout = False-                            , _attachStderr = False-                            , _portSpecs = Nothing-                            , _tty = False-                            , _openStdin =  False-                            , _stdinOnce = False-                            , _env = Nothing-                            , _cmd = []-                            , _image = "debian"-                            , _volumes = Nothing-                            , _volumesFrom =  Nothing-                            , _workingDir = ""-                            , _disableNetwork = False-                            , _exposedPorts = Nothing-                            }--instance ToJSON CreateContainerOpts where-        toJSON (CreateContainerOpts {..}) = object-            [ "Hostname" .= _hostname-            , "User" .= _user-            , "Memory" .= _memory-            , "MemorySwap" .= _memorySwap-            , "AttachStdin" .= _attachStdin-            , "AttachStdout" .= _attachStdout-            , "AttachStderr" .= _attachStderr-            , "PortSpecs" .= _portSpecs-            , "Tty" .= _tty-            , "OpenStdin" .= _openStdin-            , "StdinOnce" .= _stdinOnce-            , "Env" .= _env-            , "Cmd" .= _cmd-            , "Image" .= _image-            , "Volumes" .= _volumes-            , "VolumesFrom" .= _volumesFrom-            , "WrokingDir" .= _workingDir-            , "DisableNetwork" .= _disableNetwork-            , "ExposedPorts" .= _exposedPorts-            ]---- data CreateContainerResponse = CreateContainerResponse---                               { _createdContainerId :: String---                               , _warnings           :: Maybe [T.Text]---                               } deriving (Show)--data StartContainerOpts = StartContainerOpts-                        { _Binds           :: [T.Text]-                        , _Links           :: [T.Text]-                        , _LxcConf         :: [(T.Text, T.Text)]-                        , _PortBindings    :: [(T.Text, [(T.Text, T.Text)])]-                        , _PublishAllPorts :: Bool-                        , _Privileged      :: Bool-                        , _Dns             :: [T.Text]-                        , _VolumesFrom     :: [T.Text]-                        } deriving (Show)--defaultStartOpts = StartContainerOpts-                { _Binds = []-                , _Links = []-                , _LxcConf = []-                , _PortBindings = []-                , _PublishAllPorts = False-                , _Privileged = False-                , _Dns = []-                , _VolumesFrom = []-                }--instance ToJSON StartContainerOpts where-        toJSON (StartContainerOpts {..}) = object-            [ "Binds" .= _Binds-            , "Links" .= _Links-            , "LxcConf" .= _LxcConf-            , "PortBindings" .= _PortBindings-            , "PublishAllPorts" .= _PublishAllPorts-            , "Privileged" .= _Privileged-            , "Dns" .= _Dns-            , "VolumesFrom" .= _VolumesFrom-            ]--makeClassy ''ResourceId---- makeLenses ''CreateContainerResponse-makeLenses ''DockerImage-makeLenses ''DockerContainer-makeLenses ''CreateContainerOpts--instance HasResourceId DockerImage where-        resourceId = imageId--instance FromJSON DockerImage where-        parseJSON (Object v) =-            DockerImage <$> ResourceId <$> (v .: "Id")-                <*> (v .: "Created")-                <*> (v .:? "ParentId")-                <*> (v .: "RepoTags")-                <*> (v .: "Size")-                <*> (v .: "VirtualSize")--instance FromJSON PortMap where-        parseJSON (Object v) =-            PortMap <$> (v .: "IP")-                <*> (v .: "PrivatePort")-                <*> (v .: "PublicPort")-                <*> (v .: "Type")--instance HasResourceId DockerContainer where-        resourceId = containerId--instance FromJSON DockerContainer where-        parseJSON (Object v) =-            DockerContainer <$> (ResourceId <$> (v .: "Id"))-                <*> (ResourceId <$> (v .: "Id"))-                <*> (v .: "Command")-                <*> (v .: "Created")-                <*> (v .: "Names")-                <*> (v .: "Status")-                <*> (v .:? "Ports")---- instance FromJSON CreateContainerResponse where---         parseJSON (Object v) =---             CreateContainerResponse <$> (v .: "Id")---                 <*> (v .:? "warnings")--$(deriveJSON dopts ''DockerVersion)-
− Docker/Utils.hs
@@ -1,6 +0,0 @@-module Docker.Utils where--import Data.Char--strip_underscore :: String -> String-strip_underscore (_:xs) = xs 
+ Network/Docker.hs view
@@ -0,0 +1,92 @@+{-# LANGUAGE OverloadedStrings #-}++module Network.Docker where++import           Control.Applicative    ((<$>), (<*>))+import           Control.Lens+import           Data.Aeson             (FromJSON, ToJSON, decode, eitherDecode,+                                         encode)+import           Data.Aeson.Lens        (key, _String)+import           Data.Aeson.TH+import qualified Data.ByteString.Lazy   as L+import           Data.Char+import qualified Data.Text              as T+import           Network.Docker.Options+import           Network.Docker.Types+import           Network.Wreq+import           Pipes+import qualified Pipes.ByteString       as PB+import qualified Pipes.HTTP             as PH+import           Text.Printf            (printf)+++defaultClientOpts :: DockerClientOpts+defaultClientOpts = DockerClientOpts+                { apiVersion = "v1.12"+                , baseUrl = "http://127.0.0.1:3128/"+                }++constructUrl :: URL -> ApiVersion -> Endpoint -> URL+constructUrl url apiVersion endpoint = printf "%s%s%s" url apiVersion endpoint++constructRelativeUrl url = url :: String++decodeResponse r = decode <$> (^. responseBody) <$> r++getOutOfResponse k r = (^? responseBody . key k . _String) r++getResponseStatusCode r = (^. responseStatus) r++fullUrl :: DockerClientOpts -> Endpoint -> URL+fullUrl clientOpts endpoint = constructUrl (baseUrl clientOpts) (apiVersion clientOpts) endpoint++_dockerGetQuery :: Endpoint -> DockerClientOpts -> IO(Response L.ByteString)+_dockerGetQuery endpoint clientOpts = get (fullUrl clientOpts endpoint)++_dockerPostQuery :: ToJSON a => Endpoint -> DockerClientOpts -> a -> IO (Response L.ByteString)+_dockerPostQuery endpoint clientOpts postObject = post (fullUrl clientOpts endpoint) (encode postObject)++emptyPost = "" :: String+_dockerEmptyPostQuery endpoint clientOpts = post (fullUrl clientOpts endpoint) (encode emptyPost)++getDockerVersion :: DockerClientOpts -> IO (Maybe DockerVersion)+getDockerVersion = decodeResponse . _dockerGetQuery "/version"++getDockerContainers :: DockerClientOpts -> IO (Maybe [DockerContainer])+getDockerContainers = decodeResponse . _dockerGetQuery "/containers/json"++getDockerImages :: DockerClientOpts -> IO (Maybe [DockerImage])+getDockerImages = decodeResponse . _dockerGetQuery "/images/json"++createContainer :: DockerClientOpts -> CreateContainerOpts -> IO(Maybe T.Text)+createContainer clientOpts createOpts = getOutOfResponse "Id" <$> (_dockerPostQuery "/containers/create" clientOpts createOpts)++startContainer :: DockerClientOpts -> String -> StartContainerOpts -> IO(Status)+startContainer clientOpts containerId startOpts = (^. responseStatus) <$> _dockerPostQuery (printf "/containers/%s/start" containerId) clientOpts startOpts++stopContainer :: DockerClientOpts -> String -> IO (Status)+stopContainer  clientOpts containerId = (^. responseStatus) <$> _dockerEmptyPostQuery (printf "/containers/%s/stop" containerId) clientOpts++killContainer :: DockerClientOpts -> String -> IO (Status)+killContainer  clientOpts containerId = (^. responseStatus) <$> _dockerEmptyPostQuery (printf "/containers/%s/kill" containerId) clientOpts++restartContainer :: DockerClientOpts -> String -> IO (Status)+restartContainer  clientOpts containerId = (^. responseStatus) <$> _dockerEmptyPostQuery (printf "/containers/%s/restart" containerId) clientOpts++pauseContainer :: DockerClientOpts -> String -> IO (Status)+pauseContainer  clientOpts containerId = (^. responseStatus) <$> _dockerEmptyPostQuery (printf "/containers/%s/pause" containerId) clientOpts++unpauseContainer :: DockerClientOpts -> String -> IO (Status)+unpauseContainer  clientOpts containerId = (^. responseStatus) <$> _dockerEmptyPostQuery (printf "/containers/%s/unpause" containerId) clientOpts++getContainerLogsStream :: DockerClientOpts -> String -> IO ()+getContainerLogsStream  clientOpts containerId = do+                req <- PH.parseUrl (fullUrl clientOpts url)+                let req' =  req {PH.method = "GET"}+                PH.withManager PH.defaultManagerSettings $ \m  -> PH.withHTTP req' m  $ \resp -> runEffect $ PH.responseBody resp >-> PB.stdout+        where url = (printf "/containers/%s/logs?stdout=1&stderr=1&follow=1" containerId)++getContainerLogs :: DockerClientOpts -> String -> IO (L.ByteString)+getContainerLogs  clientOpts containerId = (^. responseBody) <$> _dockerGetQuery url clientOpts+        where url = (printf "/containers/%s/logs?stdout=1&stderr=1" containerId)+
+ Network/Docker/Options.hs view
@@ -0,0 +1,16 @@+module Network.Docker.Options where++import           Data.Aeson.TH+import           Network.Docker.Utils++dopts :: Options+dopts = Options {+      fieldLabelModifier = strip_underscore+    , constructorTagModifier = id+    , allNullaryToStringTag = True+    , omitNothingFields = True+    , sumEncoding = defaultTaggedObject+    }+++
+ Network/Docker/Types.hs view
@@ -0,0 +1,234 @@+{-# LANGUAGE DeriveFunctor     #-}+{-# LANGUAGE FlexibleContexts  #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards   #-}+{-# LANGUAGE TemplateHaskell   #-}++module Network.Docker.Types where++import           Control.Applicative+import           Control.Lens.TH+import           Control.Lens.TH+import           Data.Aeson+import           Data.Aeson.TH+import           Data.Bool+import qualified Data.ByteString.Lazy   as BS+import           Data.Default+import qualified Data.Map               as Map+import qualified Data.Text              as T+import           GHC.Generics+import           Network.Docker.Options+import           Network.Wreq.Types     (Postable)+++type URL = String+type ApiVersion = String+type Endpoint = String++type Tag = String+type IP = String+type Port = Int+type PortType = String++data DockerClientOpts = DockerClientOpts {+      apiVersion :: ApiVersion+    , baseUrl    :: URL+    } deriving (Show)+++data ResourceId = ResourceId { _id :: String } deriving (Show, Eq)+++data DockerImage = DockerImage+                { _imageId        :: ResourceId+                , _imageCreatedAt :: Int+                , _parentId       :: Maybe String+                , _repoTags       :: [Tag]+                , _size           :: Int+                , _virtualSize    :: Int+                } deriving (Show, Eq)+++data DockerVersion = DockerVersion+                  { _Version       :: String+                  , _GitCommit     :: String+                  , _GoVersion     :: String+                  , _Arch          :: String+                  , _KernelVersion :: String+                  } deriving (Show, Eq)+++-- The JSON looks likes this:+-- "Ports":[{"IP":"0.0.0.0","PrivatePort":55555,"PublicPort":55555,"Type":"tcp"}]++data PortMap = PortMap+            { _ip          :: IP+            , _privatePort :: Port+            , _publicPort  :: Port+            , _type        :: PortType+            } deriving (Show, Eq)+++data DockerContainer = DockerContainer+                    { _containerId        :: ResourceId+                    , _containerImageId   :: ResourceId+                    , _command            :: String+                    , _containerCreatedAt :: Int+                    , _names              :: [String]+                    , _status             :: String+                    , _ports              :: Maybe [PortMap]+                    } deriving (Show, Eq)+++data CreateContainerOpts = CreateContainerOpts+                  { _hostname       :: String+                  , _user           :: String+                  , _memory         :: Int+                  , _memorySwap     :: Int+                  , _attachStdin    :: Bool+                  , _attachStdout   :: Bool+                  , _attachStderr   :: Bool+                  , _portSpecs      :: Maybe Object+                  , _tty            :: Bool+                  , _openStdin      :: Bool+                  , _stdinOnce      :: Bool+                  , _env            :: Maybe Object+                  , _cmd            :: [String]+                  , _image          :: String+                  , _volumes        :: Maybe Object+                  , _volumesFrom    :: Maybe Object+                  , _workingDir     :: String+                  , _disableNetwork :: Bool+                  , _exposedPorts   :: Maybe Object+                  } deriving (Show)++defaultCreateOpts = CreateContainerOpts {+                             _hostname = ""+                            , _user = ""+                            , _memory = 0+                            , _memorySwap =  0+                            , _attachStdin = False+                            , _attachStdout = False+                            , _attachStderr = False+                            , _portSpecs = Nothing+                            , _tty = False+                            , _openStdin =  False+                            , _stdinOnce = False+                            , _env = Nothing+                            , _cmd = []+                            , _image = "debian"+                            , _volumes = Nothing+                            , _volumesFrom =  Nothing+                            , _workingDir = ""+                            , _disableNetwork = False+                            , _exposedPorts = Nothing+                            }++instance ToJSON CreateContainerOpts where+        toJSON (CreateContainerOpts {..}) = object+            [ "Hostname" .= _hostname+            , "User" .= _user+            , "Memory" .= _memory+            , "MemorySwap" .= _memorySwap+            , "AttachStdin" .= _attachStdin+            , "AttachStdout" .= _attachStdout+            , "AttachStderr" .= _attachStderr+            , "PortSpecs" .= _portSpecs+            , "Tty" .= _tty+            , "OpenStdin" .= _openStdin+            , "StdinOnce" .= _stdinOnce+            , "Env" .= _env+            , "Cmd" .= _cmd+            , "Image" .= _image+            , "Volumes" .= _volumes+            , "VolumesFrom" .= _volumesFrom+            , "WrokingDir" .= _workingDir+            , "DisableNetwork" .= _disableNetwork+            , "ExposedPorts" .= _exposedPorts+            ]++-- data CreateContainerResponse = CreateContainerResponse+--                               { _createdContainerId :: String+--                               , _warnings           :: Maybe [T.Text]+--                               } deriving (Show)++data StartContainerOpts = StartContainerOpts+                        { _Binds           :: [T.Text]+                        , _Links           :: [T.Text]+                        , _LxcConf         :: [(T.Text, T.Text)]+                        , _PortBindings    :: [(T.Text, [(T.Text, T.Text)])]+                        , _PublishAllPorts :: Bool+                        , _Privileged      :: Bool+                        , _Dns             :: [T.Text]+                        , _VolumesFrom     :: [T.Text]+                        } deriving (Show)++defaultStartOpts = StartContainerOpts+                { _Binds = []+                , _Links = []+                , _LxcConf = []+                , _PortBindings = []+                , _PublishAllPorts = False+                , _Privileged = False+                , _Dns = []+                , _VolumesFrom = []+                }++instance ToJSON StartContainerOpts where+        toJSON (StartContainerOpts {..}) = object+            [ "Binds" .= _Binds+            , "Links" .= _Links+            , "LxcConf" .= _LxcConf+            , "PortBindings" .= _PortBindings+            , "PublishAllPorts" .= _PublishAllPorts+            , "Privileged" .= _Privileged+            , "Dns" .= _Dns+            , "VolumesFrom" .= _VolumesFrom+            ]++makeClassy ''ResourceId++-- makeLenses ''CreateContainerResponse+makeLenses ''DockerImage+makeLenses ''DockerContainer+makeLenses ''CreateContainerOpts++instance HasResourceId DockerImage where+        resourceId = imageId++instance FromJSON DockerImage where+        parseJSON (Object v) =+            DockerImage <$> ResourceId <$> (v .: "Id")+                <*> (v .: "Created")+                <*> (v .:? "ParentId")+                <*> (v .: "RepoTags")+                <*> (v .: "Size")+                <*> (v .: "VirtualSize")++instance FromJSON PortMap where+        parseJSON (Object v) =+            PortMap <$> (v .: "IP")+                <*> (v .: "PrivatePort")+                <*> (v .: "PublicPort")+                <*> (v .: "Type")++instance HasResourceId DockerContainer where+        resourceId = containerId++instance FromJSON DockerContainer where+        parseJSON (Object v) =+            DockerContainer <$> (ResourceId <$> (v .: "Id"))+                <*> (ResourceId <$> (v .: "Id"))+                <*> (v .: "Command")+                <*> (v .: "Created")+                <*> (v .: "Names")+                <*> (v .: "Status")+                <*> (v .:? "Ports")++-- instance FromJSON CreateContainerResponse where+--         parseJSON (Object v) =+--             CreateContainerResponse <$> (v .: "Id")+--                 <*> (v .:? "warnings")++$(deriveJSON dopts ''DockerVersion)+
+ Network/Docker/Utils.hs view
@@ -0,0 +1,6 @@+module Network.Docker.Utils where++import           Data.Char++strip_underscore :: String -> String+strip_underscore (_:xs) = xs
README.md view
@@ -1,1 +1,3 @@-playing around with haskell - don't use will be rebasing/force pushing alot+# Docker Remote API wrapper for Haskell++## Work in progress
docker.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                docker-version:             0.1.0.0+version:             0.1.0.1 synopsis:            Haskell wrapper for Docker Remote API -- description: homepage:            https://github.com/denibertovic/docker-hs@@ -18,7 +18,7 @@ stability:           experimental  library-  exposed-modules:     Docker, Docker.Options, Docker.Types, Docker.Utils+  exposed-modules:     Network.Docker, Network.Docker.Options, Network.Docker.Types, Network.Docker.Utils   -- other-modules:   other-extensions:    OverloadedStrings, DeriveFunctor, FlexibleContexts, TemplateHaskell   build-depends:       base >=4.7 && <4.8, lens >=4.2 && <4.3, aeson >=0.7 && <0.8, bytestring >=0.10 && <0.11, text >=1.1 && <1.2, wreq >=0.1 && <0.2, containers >=0.5 && <0.6, data-default >= 0.5.3, network-uri >= 2.6.0.1, pipes-http >= 1.0.0, pipes >= 4.1.2, pipes-text >= 0.0.0.12, pipes-bytestring >= 2.1.0