MCPcopy Create free account
hub / github.com/KOSASIH/skybridge / ServeHTTP

Method ServeHTTP

src/api/node/node.go:193–234  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

191}
192
193func (s *nodeService) ServeHTTP(w http.ResponseWriter, r *http.Request) {
194 vars := mux.Vars(r)
195 id := vars["id"]
196 switch r.Method {
197 case http.MethodGet:
198 node, err := s.GetNode(r.Context(), id)
199 if err != nil {
200 http.Error(w, err.Error(), http.StatusNotFound)
201 return
202 }
203 json.NewEncoder(w).Encode(node)
204 case http.MethodPost:
205 var node Node
206 if err := json.NewDecoder(r.Body).Decode(&node); err != nil {
207 http.Error(w, err.Error(), http.StatusBadRequest)
208 return
209 }
210 if err := s.CreateNode(r.Context(), &node); err != nil {
211 http.Error(w, err.Error(), http.StatusInternalServerError)
212 return
213 }
214 w.WriteHeader(http.StatusCreated)
215 case http.MethodPut:
216 var node Node
217 if err := json.NewDecoder(r.Body).Decode(&node); err != nil {
218 http.Error(w, err.Error(), http.StatusBadRequest)
219 return
220 }
221 if err := s.UpdateNode(r.Context(), &node); err != nil {
222 http.Error(w, err.Error(), http.StatusInternalServerError)
223 return
224 }
225 case http.MethodDelete:
226 if err := s.DeleteNode(r.Context(), id); err != nil {
227 http.Error(w, err.Error(), http.StatusInternalServerError)
228 return
229 }
230 w.WriteHeader(http.StatusNoContent)
231 default:
232 http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
233 }
234}

Callers 1

TestNodeServiceFunction · 0.80

Calls 5

GetNodeMethod · 0.95
CreateNodeMethod · 0.95
UpdateNodeMethod · 0.95
DeleteNodeMethod · 0.95
ErrorMethod · 0.45

Tested by 1

TestNodeServiceFunction · 0.64