BlockTask creates one runtime-declared block for a task.
(c *gin.Context)
| 270 | |
| 271 | // BlockTask creates one runtime-declared block for a task. |
| 272 | func (h *BaseHandlers) BlockTask(c *gin.Context) { |
| 273 | manager, ok := h.requireTaskManager(c) |
| 274 | if !ok { |
| 275 | return |
| 276 | } |
| 277 | |
| 278 | taskID, err := requiredPathID(c.Param("id"), "task id") |
| 279 | if err != nil { |
| 280 | h.respondError(c, StatusForTaskError(err), err) |
| 281 | return |
| 282 | } |
| 283 | |
| 284 | var req contract.CreateTaskBlockRequest |
| 285 | if err := c.ShouldBindJSON(&req); err != nil { |
| 286 | h.respondError( |
| 287 | c, |
| 288 | http.StatusBadRequest, |
| 289 | NewTaskValidationError(fmt.Errorf("%s: decode block task request: %w", h.transportName(), err)), |
| 290 | ) |
| 291 | return |
| 292 | } |
| 293 | |
| 294 | actor, err := h.taskActorContext(c, taskActionBlock) |
| 295 | if err != nil { |
| 296 | h.respondError(c, StatusForTaskError(err), err) |
| 297 | return |
| 298 | } |
| 299 | claimToken, err := h.taskBlockClaimToken(c, manager, req) |
| 300 | if err != nil { |
| 301 | h.respondError(c, statusForTaskBlockError(err), err) |
| 302 | return |
| 303 | } |
| 304 | blockReq, err := createTaskBlockFromRequest(taskID, req, claimToken) |
| 305 | if err != nil { |
| 306 | h.respondError(c, statusForTaskBlockError(err), err) |
| 307 | return |
| 308 | } |
| 309 | block, err := manager.BlockTask(c.Request.Context(), blockReq, actor) |
| 310 | if err != nil { |
| 311 | h.respondError(c, statusForTaskBlockError(err), err) |
| 312 | return |
| 313 | } |
| 314 | |
| 315 | c.JSON(http.StatusCreated, contract.TaskBlockResponse{Block: TaskBlockPayloadFromBlock(block)}) |
| 316 | } |
| 317 | |
| 318 | func (h *BaseHandlers) taskBlockClaimToken( |
| 319 | c *gin.Context, |
nothing calls this directly
no test coverage detected