HandleGetServices handles the request to get all services
()
| 228 | |
| 229 | // HandleGetServices handles the request to get all services |
| 230 | func (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 | } |
no test coverage detected