StatusForWorkspaceError maps workspace-domain errors to transport statuses.
(err error)
| 128 | |
| 129 | // StatusForWorkspaceError maps workspace-domain errors to transport statuses. |
| 130 | func statusForWorkspaceError(err error) int { |
| 131 | switch { |
| 132 | case errors.Is(err, context.Canceled): |
| 133 | return statusClientClosedRequest |
| 134 | case errors.Is(err, workspacepkg.ErrWorkspaceNotFound): |
| 135 | return http.StatusNotFound |
| 136 | case errors.Is(err, workspacepkg.ErrWorkspaceRootMissing): |
| 137 | return http.StatusGone |
| 138 | case errors.Is(err, workspacepkg.ErrWorkspaceNameTaken), |
| 139 | errors.Is(err, workspacepkg.ErrWorkspacePathTaken), |
| 140 | errors.Is(err, workspacepkg.ErrWorkspaceHasSessions), |
| 141 | errors.Is(err, workspacepkg.ErrWorkspaceHasActiveSessions): |
| 142 | return http.StatusConflict |
| 143 | case errors.Is(err, aghconfig.ErrSandboxProfileNotFound): |
| 144 | return http.StatusBadRequest |
| 145 | case errors.Is(err, workspacepkg.ErrWorkspaceResolverUnavailable): |
| 146 | return http.StatusServiceUnavailable |
| 147 | default: |
| 148 | return http.StatusInternalServerError |
| 149 | } |
| 150 | } |
| 151 | |
| 152 | // StatusForSessionError maps session and workspace-domain errors to transport statuses. |
| 153 | func statusForSessionError(err error) int { |