@Summary Get AI task by ID or name @ID get-ai-task-by-id-or-name @Security CoderSessionToken @Produce json @Tags Tasks @Param user path string true "Username, user ID, or 'me' for the authenticated user" @Param task path string true "Task ID, or task name" @Success 200 {object} codersdk.Task @Router
(rw http.ResponseWriter, r *http.Request)
| 512 | // @Success 200 {object} codersdk.Task |
| 513 | // @Router /api/v2/tasks/{user}/{task} [get] |
| 514 | func (api *API) taskGet(rw http.ResponseWriter, r *http.Request) { |
| 515 | ctx := r.Context() |
| 516 | apiKey := httpmw.APIKey(r) |
| 517 | task := httpmw.TaskParam(r) |
| 518 | |
| 519 | if !task.WorkspaceID.Valid { |
| 520 | httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ |
| 521 | Message: "Internal error fetching task.", |
| 522 | Detail: "Task workspace ID is invalid.", |
| 523 | }) |
| 524 | return |
| 525 | } |
| 526 | |
| 527 | workspace, err := api.Database.GetWorkspaceByID(ctx, task.WorkspaceID.UUID) |
| 528 | if err != nil { |
| 529 | if httpapi.Is404Error(err) { |
| 530 | httpapi.ResourceNotFound(rw) |
| 531 | return |
| 532 | } |
| 533 | httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ |
| 534 | Message: "Internal error fetching workspace.", |
| 535 | Detail: err.Error(), |
| 536 | }) |
| 537 | return |
| 538 | } |
| 539 | |
| 540 | data, err := api.workspaceData(ctx, []database.Workspace{workspace}) |
| 541 | if err != nil { |
| 542 | httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ |
| 543 | Message: "Internal error fetching workspace resources.", |
| 544 | Detail: err.Error(), |
| 545 | }) |
| 546 | return |
| 547 | } |
| 548 | if len(data.builds) == 0 || len(data.templates) == 0 { |
| 549 | httpapi.ResourceNotFound(rw) |
| 550 | return |
| 551 | } |
| 552 | |
| 553 | appStatus := codersdk.WorkspaceAppStatus{} |
| 554 | if len(data.appStatuses) > 0 { |
| 555 | appStatus = data.appStatuses[0] |
| 556 | } |
| 557 | |
| 558 | ws, err := convertWorkspace( |
| 559 | ctx, |
| 560 | api.Logger, |
| 561 | apiKey.UserID, |
| 562 | workspace, |
| 563 | data.builds[0], |
| 564 | data.templates[0], |
| 565 | api.Options.AllowWorkspaceRenames, |
| 566 | appStatus, |
| 567 | ) |
| 568 | if err != nil { |
| 569 | httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ |
| 570 | Message: "Internal error converting workspace.", |
| 571 | Detail: err.Error(), |
nothing calls this directly
no test coverage detected