// RegisterHTTPHandlers registers JSON HTTP handlers with mux using the given // filetree Service. The following methods with be exposed: // // GET /corpusRoots // Response: JSON encoded filetree.CorpusRootsReply // GET /dir // Request: JSON encoded filetree.DirectoryRequest // Response: JSON encoded filetree.DirectoryReply // // Note: /corpusRoots and /dir will return their responses as serialized // protobufs if the "proto" query parameter is set. func RegisterHTTPHandlers(ctx context.Context, ft Service, mux *http.ServeMux) { mux.HandleFunc("/corpusRoots", func(w http.ResponseWriter, r *http.Request) { start := time.Now() defer func() { log.Printf("filetree.CorpusRoots:\t%s", time.Since(start)) }() var req ftpb.CorpusRootsRequest if err := web.ReadJSONBody(r, &req); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } cr, err := ft.CorpusRoots(ctx, &req) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } if err := web.WriteResponse(w, r, cr); err != nil { log.Println(err) } }) mux.HandleFunc("/dir", func(w http.ResponseWriter, r *http.Request) { start := time.Now() defer func() { log.Printf("filetree.Dir:\t%s", time.Since(start)) }() var req ftpb.DirectoryRequest if err := web.ReadJSONBody(r, &req); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } reply, err := ft.Directory(ctx, &req) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } if err := web.WriteResponse(w, r, reply); err != nil { log.Println(err) } }) }
func RegisterHTTPHandlers(ctx context.Context, s Service, mux *http.ServeMux) { mux.HandleFunc("/codesearch", func(w http.ResponseWriter, r *http.Request) { start := time.Now() defer func() { log.Printf("codesearch.CodeSearch:\t%s", time.Since(start)) }() var req CodeSearchRequest if err := web.ReadJSONBody(r, &req); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } reply, err := s.Search(ctx, &req) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } if err := web.WriteResponse(w, r, reply); err != nil { log.Println(err) } }) }
// RegisterHTTPHandlers registers JSON HTTP handlers with mux using the given // xrefs Service. The following methods with be exposed: // // GET /nodes // Request: JSON encoded xrefs.NodesRequest // Response: JSON encoded xrefs.NodesResponse // GET /edges // Request: JSON encoded xrefs.EdgesRequest // Response: JSON encoded xrefs.EdgesResponse // GET /decorations // Request: JSON encoded xrefs.DecorationsRequest // Response: JSON encoded xrefs.DecorationsResponse // // Note: /nodes, /edges, and /decorations will return their responses as // serialized protobufs if the "proto" query parameter is set. func RegisterHTTPHandlers(ctx context.Context, xs Service, mux *http.ServeMux) { mux.HandleFunc("/decorations", func(w http.ResponseWriter, r *http.Request) { start := time.Now() defer func() { log.Printf("xrefs.Decorations:\t%s", time.Since(start)) }() var req xpb.DecorationsRequest if err := web.ReadJSONBody(r, &req); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } reply, err := xs.Decorations(ctx, &req) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } if err := web.WriteResponse(w, r, reply); err != nil { log.Println(err) } }) mux.HandleFunc("/nodes", func(w http.ResponseWriter, r *http.Request) { start := time.Now() defer func() { log.Printf("xrefs.Nodes:\t%s", time.Since(start)) }() var req xpb.NodesRequest if err := web.ReadJSONBody(r, &req); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } reply, err := xs.Nodes(ctx, &req) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } if err := web.WriteResponse(w, r, reply); err != nil { log.Println(err) } }) mux.HandleFunc("/edges", func(w http.ResponseWriter, r *http.Request) { start := time.Now() defer func() { log.Printf("xrefs.Edges:\t%s", time.Since(start)) }() var req xpb.EdgesRequest if err := web.ReadJSONBody(r, &req); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } reply, err := xs.Edges(ctx, &req) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } if err := web.WriteResponse(w, r, reply); err != nil { log.Println(err) } }) }