mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
api/common.go: code shared by the server and client implementation of the Docker remote api.
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
This commit is contained in:
parent
c63ce728cf
commit
551355c9ad
2 changed files with 45 additions and 37 deletions
45
api/common.go
Normal file
45
api/common.go
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
package api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/dotcloud/docker/engine"
|
||||||
|
"github.com/dotcloud/docker/utils"
|
||||||
|
"mime"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
APIVERSION = 1.9
|
||||||
|
DEFAULTHTTPHOST = "127.0.0.1"
|
||||||
|
DEFAULTUNIXSOCKET = "/var/run/docker.sock"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ValidateHost(val string) (string, error) {
|
||||||
|
host, err := utils.ParseHost(DEFAULTHTTPHOST, DEFAULTUNIXSOCKET, val)
|
||||||
|
if err != nil {
|
||||||
|
return val, err
|
||||||
|
}
|
||||||
|
return host, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO remove, used on < 1.5 in getContainersJSON
|
||||||
|
func displayablePorts(ports *engine.Table) string {
|
||||||
|
result := []string{}
|
||||||
|
for _, port := range ports.Data {
|
||||||
|
if port.Get("IP") == "" {
|
||||||
|
result = append(result, fmt.Sprintf("%d/%s", port.GetInt("PublicPort"), port.Get("Type")))
|
||||||
|
} else {
|
||||||
|
result = append(result, fmt.Sprintf("%s:%d->%d/%s", port.Get("IP"), port.GetInt("PublicPort"), port.GetInt("PrivatePort"), port.Get("Type")))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return strings.Join(result, ", ")
|
||||||
|
}
|
||||||
|
|
||||||
|
func MatchesContentType(contentType, expectedType string) bool {
|
||||||
|
mimetype, _, err := mime.ParseMediaType(contentType)
|
||||||
|
if err != nil {
|
||||||
|
utils.Errorf("Error parsing media type: %s error: %s", contentType, err.Error())
|
||||||
|
}
|
||||||
|
return err == nil && mimetype == expectedType
|
||||||
|
}
|
||||||
|
|
|
@ -17,7 +17,6 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"mime"
|
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/pprof"
|
"net/http/pprof"
|
||||||
|
@ -29,25 +28,10 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// FIXME: move code common to client and server to common.go
|
|
||||||
const (
|
|
||||||
APIVERSION = 1.9
|
|
||||||
DEFAULTHTTPHOST = "127.0.0.1"
|
|
||||||
DEFAULTUNIXSOCKET = "/var/run/docker.sock"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
activationLock chan struct{}
|
activationLock chan struct{}
|
||||||
)
|
)
|
||||||
|
|
||||||
func ValidateHost(val string) (string, error) {
|
|
||||||
host, err := utils.ParseHost(DEFAULTHTTPHOST, DEFAULTUNIXSOCKET, val)
|
|
||||||
if err != nil {
|
|
||||||
return val, err
|
|
||||||
}
|
|
||||||
return host, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type HttpApiFunc func(eng *engine.Engine, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error
|
type HttpApiFunc func(eng *engine.Engine, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error
|
||||||
|
|
||||||
func hijackServer(w http.ResponseWriter) (io.ReadCloser, io.Writer, error) {
|
func hijackServer(w http.ResponseWriter) (io.ReadCloser, io.Writer, error) {
|
||||||
|
@ -129,27 +113,6 @@ func getBoolParam(value string) (bool, error) {
|
||||||
return ret, nil
|
return ret, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO remove, used on < 1.5 in getContainersJSON
|
|
||||||
func displayablePorts(ports *engine.Table) string {
|
|
||||||
result := []string{}
|
|
||||||
for _, port := range ports.Data {
|
|
||||||
if port.Get("IP") == "" {
|
|
||||||
result = append(result, fmt.Sprintf("%d/%s", port.GetInt("PublicPort"), port.Get("Type")))
|
|
||||||
} else {
|
|
||||||
result = append(result, fmt.Sprintf("%s:%d->%d/%s", port.Get("IP"), port.GetInt("PublicPort"), port.GetInt("PrivatePort"), port.Get("Type")))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return strings.Join(result, ", ")
|
|
||||||
}
|
|
||||||
|
|
||||||
func MatchesContentType(contentType, expectedType string) bool {
|
|
||||||
mimetype, _, err := mime.ParseMediaType(contentType)
|
|
||||||
if err != nil {
|
|
||||||
utils.Errorf("Error parsing media type: %s error: %s", contentType, err.Error())
|
|
||||||
}
|
|
||||||
return err == nil && mimetype == expectedType
|
|
||||||
}
|
|
||||||
|
|
||||||
func postAuth(eng *engine.Engine, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
func postAuth(eng *engine.Engine, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
||||||
var (
|
var (
|
||||||
authConfig, err = ioutil.ReadAll(r.Body)
|
authConfig, err = ioutil.ReadAll(r.Body)
|
Loading…
Reference in a new issue