( ctx context.Context, req apicontract.CreateTaskRequest, )
| 662 | } |
| 663 | |
| 664 | func (h *HostAPIHandler) createTaskSpecFromRequest( |
| 665 | ctx context.Context, |
| 666 | req apicontract.CreateTaskRequest, |
| 667 | ) (taskpkg.CreateTask, error) { |
| 668 | scope := req.Scope.Normalize() |
| 669 | if err := scope.Validate("create_task.scope"); err != nil { |
| 670 | return taskpkg.CreateTask{}, invalidParamsRPCError(err) |
| 671 | } |
| 672 | workspaceID, err := h.resolveTaskWorkspaceBinding(ctx, scope, strings.TrimSpace(req.Workspace), "create_task") |
| 673 | if err != nil { |
| 674 | return taskpkg.CreateTask{}, err |
| 675 | } |
| 676 | if err := validateTaskChannel("create_task.network_channel", req.NetworkChannel); err != nil { |
| 677 | return taskpkg.CreateTask{}, err |
| 678 | } |
| 679 | |
| 680 | spec := taskpkg.CreateTask{ |
| 681 | ID: strings.TrimSpace(req.ID), |
| 682 | Identifier: strings.TrimSpace(req.Identifier), |
| 683 | Scope: scope, |
| 684 | WorkspaceID: workspaceID, |
| 685 | NetworkChannel: strings.TrimSpace(req.NetworkChannel), |
| 686 | Title: strings.TrimSpace(req.Title), |
| 687 | Description: strings.TrimSpace(req.Description), |
| 688 | Priority: req.Priority.Normalize(), |
| 689 | MaxAttempts: req.MaxAttempts, |
| 690 | AutoEnqueueOnReady: req.AutoEnqueueOnReady, |
| 691 | Draft: req.Draft, |
| 692 | ApprovalPolicy: req.ApprovalPolicy.Normalize(), |
| 693 | Owner: cloneOwnership(req.Owner), |
| 694 | Metadata: cloneRawMessage(req.Metadata), |
| 695 | } |
| 696 | if err := spec.Validate("create_task"); err != nil { |
| 697 | return taskpkg.CreateTask{}, invalidParamsRPCError(err) |
| 698 | } |
| 699 | return spec, nil |
| 700 | } |
| 701 | |
| 702 | func taskPatchFromRequest(req apicontract.UpdateTaskRequest) (taskpkg.Patch, error) { |
| 703 | if req.NetworkChannel != nil { |
no test coverage detected