MCPcopy
hub / github.com/spacecloud-io/space-cloud / HandleGetServices

Method HandleGetServices

runner/server/handle.go:230–295  ·  view source on GitHub ↗

HandleGetServices handles the request to get all services

()

Source from the content-addressed store, hash-verified

228
229// HandleGetServices handles the request to get all services
230func (s *Server) HandleGetServices() http.HandlerFunc {
231 return func(w http.ResponseWriter, r *http.Request) {
232
233 defer utils.CloseTheCloser(r.Body)
234
235 ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
236 defer cancel()
237
238 // Verify token
239 _, err := s.auth.VerifyToken(utils.GetToken(r))
240 if err != nil {
241 _ = helpers.Logger.LogError(helpers.GetRequestID(ctx), "Failed to apply service", err, nil)
242 _ = helpers.Response.SendErrorResponse(ctx, w, http.StatusUnauthorized, err)
243 return
244 }
245
246 vars := mux.Vars(r)
247 projectID := vars["project"]
248 serviceID, serviceIDExists := r.URL.Query()["serviceId"]
249 version, versionExists := r.URL.Query()["version"]
250
251 services, err := s.driver.GetServices(ctx, projectID)
252 if err != nil {
253 _ = helpers.Logger.LogError(helpers.GetRequestID(ctx), "Failed to apply service", err, nil)
254 _ = helpers.Response.SendErrorResponse(ctx, w, http.StatusInternalServerError, err)
255 return
256 }
257
258 var result []*model.Service
259 if serviceIDExists && versionExists {
260 for _, val := range services {
261 if val.ProjectID == projectID && val.ID == serviceID[0] && val.Version == version[0] {
262 result = append(result, val)
263 w.Header().Set("Content-Type", "application/json")
264 w.WriteHeader(http.StatusOK)
265 _ = json.NewEncoder(w).Encode(model.Response{Result: result})
266 return
267 }
268 }
269
270 w.Header().Set("Content-Type", "application/json")
271 w.WriteHeader(http.StatusInternalServerError)
272 _ = json.NewEncoder(w).Encode(map[string]string{"error": fmt.Sprintf("serviceID(%s) or version(%s) not present in state", serviceID[0], version[0])})
273 return
274 }
275
276 if serviceIDExists && !versionExists {
277 for _, val := range services {
278 if val.ID == serviceID[0] {
279 result = append(result, val)
280 }
281 }
282
283 w.Header().Set("Content-Type", "application/json")
284 w.WriteHeader(http.StatusOK)
285 _ = json.NewEncoder(w).Encode(model.Response{Result: result})
286 return
287 }

Callers 1

routesMethod · 0.95

Calls 5

VerifyTokenMethod · 0.80
HeaderMethod · 0.80
WriteHeaderMethod · 0.80
GetServicesMethod · 0.65
SetMethod · 0.45

Tested by

no test coverage detected