add options http method on all endpoints.
parent
cfeb27ee03
commit
ecc2df164a
|
@ -41,31 +41,43 @@ func (self *HttpServer) ListenAndServe() {
|
||||||
self.Serve(conn)
|
self.Serve(conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *HttpServer) registerEndpoint(p *pat.PatternServeMux, method string, pattern string, f libhttp.HandlerFunc) {
|
||||||
|
switch method {
|
||||||
|
case "get":
|
||||||
|
p.Get(pattern, CorsHeaderHandler(f))
|
||||||
|
case "post":
|
||||||
|
p.Post(pattern, CorsHeaderHandler(f))
|
||||||
|
case "del":
|
||||||
|
p.Del(pattern, CorsHeaderHandler(f))
|
||||||
|
}
|
||||||
|
p.Options(pattern, CorsHeaderHandler(self.sendCrossOriginHeader))
|
||||||
|
}
|
||||||
|
|
||||||
func (self *HttpServer) Serve(listener net.Listener) {
|
func (self *HttpServer) Serve(listener net.Listener) {
|
||||||
self.conn = listener
|
self.conn = listener
|
||||||
p := pat.New()
|
p := pat.New()
|
||||||
|
|
||||||
// Run the given query and return an array of series or a chunked response
|
// Run the given query and return an array of series or a chunked response
|
||||||
// with each batch of points we get back
|
// with each batch of points we get back
|
||||||
p.Get("/db/:db/series", CorsHeaderHandler(self.query))
|
self.registerEndpoint(p, "get", "/db/:db/series", self.query)
|
||||||
|
|
||||||
// Write points to the given database
|
// Write points to the given database
|
||||||
p.Post("/db/:db/series", CorsHeaderHandler(self.writePoints))
|
self.registerEndpoint(p, "post", "/db/:db/series", self.writePoints)
|
||||||
p.Post("/db", CorsHeaderHandler(self.createDatabase))
|
self.registerEndpoint(p, "post", "/db", self.createDatabase)
|
||||||
|
|
||||||
// cluster admins management interface
|
// cluster admins management interface
|
||||||
|
|
||||||
p.Post("/cluster_admins", CorsHeaderHandler(self.createClusterAdmin))
|
self.registerEndpoint(p, "post", "/cluster_admins", self.createClusterAdmin)
|
||||||
p.Post("/cluster_admins/:user", CorsHeaderHandler(self.updateClusterAdmin))
|
self.registerEndpoint(p, "post", "/cluster_admins/:user", self.updateClusterAdmin)
|
||||||
p.Del("/cluster_admins/:user", CorsHeaderHandler(self.deleteClusterAdmin))
|
self.registerEndpoint(p, "del", "/cluster_admins/:user", self.deleteClusterAdmin)
|
||||||
|
|
||||||
// db users management interface
|
// db users management interface
|
||||||
|
|
||||||
p.Post("/db/:db/users", CorsHeaderHandler(self.createDbUser))
|
self.registerEndpoint(p, "post", "/db/:db/users", self.createDbUser)
|
||||||
p.Del("/db/:db/users/:user", CorsHeaderHandler(self.deleteDbUser))
|
self.registerEndpoint(p, "del", "/db/:db/users/:user", self.deleteDbUser)
|
||||||
p.Post("/db/:db/users/:user", CorsHeaderHandler(self.updateDbUser))
|
self.registerEndpoint(p, "post", "/db/:db/users/:user", self.updateDbUser)
|
||||||
p.Post("/db/:db/admins/:user", CorsHeaderHandler(self.setDbAdmin))
|
self.registerEndpoint(p, "post", "/db/:db/admins/:user", self.setDbAdmin)
|
||||||
p.Del("/db/:db/admins/:user", CorsHeaderHandler(self.unsetDbAdmin))
|
self.registerEndpoint(p, "del", "/db/:db/admins/:user", self.unsetDbAdmin)
|
||||||
|
|
||||||
if err := libhttp.Serve(listener, p); err != nil && !strings.Contains(err.Error(), "closed network") {
|
if err := libhttp.Serve(listener, p); err != nil && !strings.Contains(err.Error(), "closed network") {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
@ -155,6 +167,10 @@ func TimePrecisionFromString(s string) (TimePrecision, error) {
|
||||||
return 0, fmt.Errorf("Unknown time precision %s", s)
|
return 0, fmt.Errorf("Unknown time precision %s", s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *HttpServer) sendCrossOriginHeader(w libhttp.ResponseWriter, r *libhttp.Request) {
|
||||||
|
w.WriteHeader(libhttp.StatusOK)
|
||||||
|
}
|
||||||
|
|
||||||
func (self *HttpServer) query(w libhttp.ResponseWriter, r *libhttp.Request) {
|
func (self *HttpServer) query(w libhttp.ResponseWriter, r *libhttp.Request) {
|
||||||
query := r.URL.Query().Get("q")
|
query := r.URL.Query().Get("q")
|
||||||
db := r.URL.Query().Get(":db")
|
db := r.URL.Query().Get(":db")
|
||||||
|
|
Loading…
Reference in New Issue