func (peer *Peer) Handler(m *pat.PatternServeMux) { m.Get("/stats", http.HandlerFunc(func(w http.ResponseWriter, request *http.Request) { stats := httpclient.JsonData{ "ring": peer.ring.GetNodes(), "vnodeCount": peer.node.VnodeCount(), "vnodeSize": peer.node.VnodeSize(), "vnodeStart": peer.node.VnodeStart(), } w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) io.WriteString(w, stats.Encode()) })) m.Put("/ring", http.HandlerFunc(func(w http.ResponseWriter, request *http.Request) { body, _ := ioutil.ReadAll(request.Body) data := map[string][]string{} json.Unmarshal(body, &data) peer.ring.SetNodes(data["ring"]) peer.node = peer.ring.Get(peer.url) w.WriteHeader(201) })) m.Put("/peers", http.HandlerFunc(func(w http.ResponseWriter, request *http.Request) { body, _ := ioutil.ReadAll(request.Body) newPeerURL := string(body) if peer.peerExists(newPeerURL) { w.WriteHeader(409) } else { peer.addPeer(newPeerURL) w.WriteHeader(201) } })) m.Put("/peers/join", http.HandlerFunc(func(w http.ResponseWriter, request *http.Request) { body, _ := ioutil.ReadAll(request.Body) newPeerURL := string(body) if peer.peerExists(newPeerURL) { w.WriteHeader(409) } else { peer.join(newPeerURL) w.WriteHeader(201) } })) m.Get("/peers", http.HandlerFunc(func(w http.ResponseWriter, request *http.Request) { if peer.HasPeer() { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) io.WriteString(w, httpclient.JsonData{"peers": peer.Peers}.Encode()) } else { w.WriteHeader(404) } })) }
func handleAll(mux *pat.PatternServeMux, pattern string, handler http.Handler) { mux.Get(pattern, handler) mux.Post(pattern, handler) mux.Head(pattern, handler) mux.Put(pattern, handler) mux.Del(pattern, handler) mux.Options(pattern, handler) }
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) registerEndpoint(p *pat.PatternServeMux, method string, pattern string, f libhttp.HandlerFunc) { version := self.clusterConfig.GetLocalConfiguration().Version switch method { case "get": p.Get(pattern, HeaderHandler(f, version)) case "post": p.Post(pattern, HeaderHandler(f, version)) case "del": p.Del(pattern, HeaderHandler(f, version)) } p.Options(pattern, HeaderHandler(self.sendCrossOriginHeader, version)) }
func registerEndpoint(ep apihttp.Endpoint, mux *pat.PatternServeMux) { switch ep.Method { case "GET": mux.Get(ep.Pattern, ep.Handler) case "POST": mux.Post(ep.Pattern, ep.Handler) case "HEAD": mux.Head(ep.Pattern, ep.Handler) case "PUT": mux.Put(ep.Pattern, ep.Handler) case "DEL": mux.Del(ep.Pattern, ep.Handler) case "OPTIONS": mux.Options(ep.Pattern, ep.Handler) } }
func AddHandlers(m *pat.PatternServeMux, base string) { // Movies m.Get(base+"/movies", JsonHandler(MovieList)) m.Get(base+"/movies/:id", JsonHandler(MovieShow)) m.Put(base+"/movies", JsonHandler(MovieCreate)) m.Del(base+"/movies/:id", JsonHandler(MovieDelete)) // Libraries m.Get(base+"/libraries", JsonHandler(LibraryList)) m.Get(base+"/libraries/:id", JsonHandler(LibraryShow)) m.Put(base+"/libraries", JsonHandler(LibraryCreate)) m.Del(base+"/libraries/:id", JsonHandler(LibraryDelete)) }
func BindReading(m *pat.PatternServeMux) { m.Get(readingInfo, http.HandlerFunc(infoReading)) }
func BindSubmission(p *pat.PatternServeMux) { p.Get(submissionInfo, http.HandlerFunc(infoSubmission)) p.Get(subGetOne, http.HandlerFunc(getOneSub)) }
func BindComments(p *pat.PatternServeMux) { p.Get(commentsInfo, http.HandlerFunc(infoComments)) }
func AddHandlers(m *pat.PatternServeMux, base string) { // Movies m.Get(base+"/movies", JsonHandler(MovieList)) m.Get(base+"/movies/:id", JsonHandler(MovieShow)) m.Put(base+"/movies", JsonHandler(MovieCreate)) m.Del(base+"/movies/:id", JsonHandler(MovieDelete)) // Libraries m.Get(base+"/libraries", JsonHandler(LibraryList)) m.Get(base+"/libraries/:id", JsonHandler(LibraryShow)) m.Put(base+"/libraries", JsonHandler(LibraryCreate)) m.Del(base+"/libraries/:id", JsonHandler(LibraryDelete)) m.Get(base+"/libraries/:id/process", JsonHandler(LibraryProcess)) // Series m.Get(base+"/series", JsonHandler(SeriesList)) m.Get(base+"/series/:id", JsonHandler(SeriesShow)) m.Put(base+"/series", JsonHandler(SeriesCreate)) m.Del(base+"/series/:id", JsonHandler(SeriesDelete)) // Series season m.Get(base+"/series/:id/seasons", JsonHandler(SeasonsList)) // Series Episodes m.Get(base+"/series/:series_id/seasons/:season_num/episodes", JsonHandler(EpisodeList)) // Episode m.Get(base+"/episodes/:id", JsonHandler(EpisodeShow)) m.Put(base+"/episodes", JsonHandler(EpisodeCreate)) m.Del(base+"/episodes/:id", JsonHandler(EpisodeDelete)) m.Get(base+"/series/:id/episodes", JsonHandler(SeriesEpisodeList)) }
func BindVote(m *pat.PatternServeMux) { m.Get(voteInfo, http.HandlerFunc(infoVote)) }
func (blueprint *apiBlueprint) AddRoutes(p *pat.PatternServeMux) { p.Get(blueprint.base, http.HandlerFunc(blueprint.handleGet)) }
func (peer *Peer) Handler(m *pat.PatternServeMux) { m.Get("/stats", http.HandlerFunc(func(w http.ResponseWriter, request *http.Request) { stats := httpclient.JsonData{ "ring": peer.ring.GetNodes(), "vnodeCount": peer.node.VnodeCount(), "vnodeSize": peer.node.VnodeSize(), "vnodeStart": peer.node.VnodeStart(), "nValue": peer.ring.GetNValue(), } w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) io.WriteString(w, stats.Encode()) })) m.Put("/ring", http.HandlerFunc(func(w http.ResponseWriter, request *http.Request) { body, _ := ioutil.ReadAll(request.Body) data := map[string][]string{} json.Unmarshal(body, &data) peer.ring.SetNodes(data["ring"]) peer.node = peer.ring.Get(peer.url) peer.evaluateKeyOwnership() w.WriteHeader(201) })) m.Put("/settings/set/n", http.HandlerFunc(func(w http.ResponseWriter, request *http.Request) { body, _ := ioutil.ReadAll(request.Body) n, err := strconv.Atoi(string(body)) if err == nil { peer.ring.SetNValue(n) w.WriteHeader(201) } else { w.WriteHeader(422) } })) m.Put("/settings/n", http.HandlerFunc(func(w http.ResponseWriter, request *http.Request) { body, _ := ioutil.ReadAll(request.Body) n, err := strconv.Atoi(string(body)) if err == nil && n < peer.peerCount() { peer.ring.SetNValue(n) for _, p := range peer.Peers { httpclient.Put(p+"/settings/set/n", string(body)) } w.WriteHeader(201) } else { w.WriteHeader(422) } })) m.Put("/peers", http.HandlerFunc(func(w http.ResponseWriter, request *http.Request) { body, _ := ioutil.ReadAll(request.Body) newPeerURL := string(body) if peer.peerExists(newPeerURL) { w.WriteHeader(409) } else { peer.addPeer(newPeerURL) w.WriteHeader(201) } })) m.Put("/peers/join", http.HandlerFunc(func(w http.ResponseWriter, request *http.Request) { body, _ := ioutil.ReadAll(request.Body) newPeerURL := string(body) peer.logger.Printf("%s requesting to join", newPeerURL) if peer.peerExists(newPeerURL) { w.WriteHeader(409) } else { peer.join(newPeerURL) w.WriteHeader(201) } })) m.Get("/peers", http.HandlerFunc(func(w http.ResponseWriter, request *http.Request) { if peer.HasPeer() { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) io.WriteString(w, httpclient.JsonData{"peers": peer.Peers}.Encode()) } else { w.WriteHeader(404) } })) }
func (blueprint *adminBlueprint) AddRoutes(p *pat.PatternServeMux) { p.Get(blueprint.base+"/config", http.HandlerFunc(blueprint.configHandler)) p.Get(blueprint.base+"/errors", http.HandlerFunc(blueprint.errorsHandler)) p.Get(blueprint.base+"/metrics", http.HandlerFunc(blueprint.metricsHandler)) }