ResolveWorkspace resolves or registers a workspace from a path.
(c *gin.Context)
| 306 | |
| 307 | // ResolveWorkspace resolves or registers a workspace from a path. |
| 308 | func (h *BaseHandlers) ResolveWorkspace(c *gin.Context) { |
| 309 | var req contract.ResolveWorkspaceRequest |
| 310 | if err := c.ShouldBindJSON(&req); err != nil { |
| 311 | h.respondError( |
| 312 | c, |
| 313 | http.StatusBadRequest, |
| 314 | fmt.Errorf("%s: decode resolve workspace request: %w", h.transportName(), err), |
| 315 | ) |
| 316 | return |
| 317 | } |
| 318 | |
| 319 | path := strings.TrimSpace(req.Path) |
| 320 | if err := validateAbsolutePathInternal(h.transportName(), "path", path); err != nil { |
| 321 | h.respondError(c, http.StatusBadRequest, err) |
| 322 | return |
| 323 | } |
| 324 | |
| 325 | resolved, err := h.Workspaces.ResolveOrRegister(c.Request.Context(), path) |
| 326 | if err != nil { |
| 327 | h.respondError(c, StatusForWorkspaceError(err), err) |
| 328 | return |
| 329 | } |
| 330 | |
| 331 | c.JSON(http.StatusOK, contract.WorkspaceResponse{ |
| 332 | Workspace: WorkspacePayloadFromWorkspace(resolved.Workspace), |
| 333 | }) |
| 334 | } |
| 335 | |
| 336 | func (h *BaseHandlers) validateCreateSessionRequest(req contract.CreateSessionRequest) error { |
| 337 | if err := validateCreateSessionRequest(h.transportName(), req.Workspace, req.WorkspacePath); err != nil { |