1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Add OPTIONS to route map

Move the OPTIONS method registration into the existing
route map.  Also add support for empty paths in
the map.
This commit is contained in:
Michael Crosby 2013-06-10 16:10:40 -09:00
parent ac599d6528
commit dd53c457d7

16
api.go
View file

@ -703,6 +703,10 @@ func postBuild(srv *Server, version float64, w http.ResponseWriter, r *http.Requ
return nil return nil
} }
func optionsHandler(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
w.WriteHeader(http.StatusOK)
return nil
}
func writeCorsHeaders(w http.ResponseWriter, r *http.Request) { func writeCorsHeaders(w http.ResponseWriter, r *http.Request) {
w.Header().Add("Access-Control-Allow-Origin", "*") w.Header().Add("Access-Control-Allow-Origin", "*")
w.Header().Add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept") w.Header().Add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
@ -750,6 +754,9 @@ func createRouter(srv *Server, logging bool) (*mux.Router, error) {
"/containers/{name:.*}": deleteContainers, "/containers/{name:.*}": deleteContainers,
"/images/{name:.*}": deleteImages, "/images/{name:.*}": deleteImages,
}, },
"OPTIONS": {
"": optionsHandler,
},
} }
for method, routes := range m { for method, routes := range m {
@ -785,16 +792,15 @@ func createRouter(srv *Server, logging bool) (*mux.Router, error) {
httpError(w, err) httpError(w, err)
} }
} }
if localRoute == "" {
r.Methods(localMethod).HandlerFunc(f)
} else {
r.Path("/v{version:[0-9.]+}" + localRoute).Methods(localMethod).HandlerFunc(f) r.Path("/v{version:[0-9.]+}" + localRoute).Methods(localMethod).HandlerFunc(f)
r.Path(localRoute).Methods(localMethod).HandlerFunc(f) r.Path(localRoute).Methods(localMethod).HandlerFunc(f)
} }
} }
r.Methods("OPTIONS").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if srv.enableCors {
writeCorsHeaders(w, r)
} }
w.WriteHeader(http.StatusOK)
})
return r, nil return r, nil
} }