From 38e2d00199db5dabe9972ff9c3153ac6b63266f2 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Wed, 10 Apr 2013 19:48:21 -0700 Subject: [PATCH] Skeleton of http API --- api.go | 63 ++++++++++++++++++++++++++++++++++++++++++++++++ commands.go | 2 ++ docker/docker.go | 3 +++ 3 files changed, 68 insertions(+) create mode 100644 api.go diff --git a/api.go b/api.go new file mode 100644 index 0000000000..853f7abbde --- /dev/null +++ b/api.go @@ -0,0 +1,63 @@ +package docker + +import ( + "github.com/gorilla/mux" + "net/http" + _"encoding/json" +) + + +type RestEndpoint struct { + *mux.Router + runtime *Runtime +} + +func NewRestEndpoint(runtime *Runtime) *RestEndpoint { + endpoint := &RestEndpoint{ + Router: mux.NewRouter(), + runtime: runtime, + } + endpoint.Path("/images").Methods("GET").HandlerFunc(endpoint.GetImages) + endpoint.Path("/images").Methods("POST").HandlerFunc(endpoint.PostImages) + endpoint.Path("/images/{id}").Methods("GET").HandlerFunc(endpoint.GetImage) + endpoint.Path("/images/{id}").Methods("DELETE").HandlerFunc(endpoint.DeleteImage) + endpoint.Path("/containers").Methods("GET").HandlerFunc(endpoint.GetContainers) + endpoint.Path("/containers").Methods("POST").HandlerFunc(endpoint.PostContainers) + endpoint.Path("/containers/{id}").Methods("GET").HandlerFunc(endpoint.GetContainer) + endpoint.Path("/containers/{id}").Methods("DELETE").HandlerFunc(endpoint.DeleteContainer) + return endpoint +} + +func (ep *RestEndpoint) GetImages(w http.ResponseWriter, r *http.Response) { + +} + +func (ep *RestEndpoint) PostImages(w http.ResponseWriter, r *http.Response) { + +} + +func (ep *RestEndpoint) GetImage(w http.ResponseWriter, r *http.Response) { + +} + +func (ep *RestEndpoint) DeleteImage(w http.ResponseWriter, r *http.Response) { + +} + +func (ep *RestEndpoint) GetContainers(w http.ResponseWriter, r *http.Response) { + +} + +func (ep *RestEndpoint) PostContainers(w http.ResponseWriter, r *http.Response) { + +} + +func (ep *RestEndpoint) GetContainer(w http.ResponseWriter, r *http.Response) { + +} + +func (ep *RestEndpoint) DeleteContainer(w http.ResponseWriter, r *http.Response) { + +} + + diff --git a/commands.go b/commands.go index 20d6b45c97..722d4414bf 100644 --- a/commands.go +++ b/commands.go @@ -959,10 +959,12 @@ func NewServer() (*Server, error) { } srv := &Server{ runtime: runtime, + restEndpoint: NewRestEndpoint(runtime), } return srv, nil } type Server struct { runtime *Runtime + restEndpoint *RestEndpoint } diff --git a/docker/docker.go b/docker/docker.go index 1b1c21990d..73ea726d50 100644 --- a/docker/docker.go +++ b/docker/docker.go @@ -52,6 +52,9 @@ func daemon() error { if err != nil { return err } + if err := http.ListenAndServe("0.0.0.0:4243", service.restEndpoint); err != nil { + return err + } return rcli.ListenAndServe("tcp", "127.0.0.1:4242", service) }