mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 00:25:46 -06:00
Fixes #30144 Co-authored-by: dsotirakis <sotirakis.dim@gmail.com> Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com> Co-authored-by: Ida Furjesova <ida.furjesova@grafana.com> Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com> Co-authored-by: Will Browne <wbrowne@users.noreply.github.com> Co-authored-by: Leon Sorokin <leeoniya@gmail.com> Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com> Co-authored-by: spinillos <selenepinillos@gmail.com> Co-authored-by: Karl Persson <kalle.persson@grafana.com> Co-authored-by: Leonard Gram <leo@xlson.com>
45 lines
1.4 KiB
Go
45 lines
1.4 KiB
Go
package apierrors
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/grafana/grafana/pkg/api/response"
|
|
"github.com/grafana/grafana/pkg/models"
|
|
"github.com/grafana/grafana/pkg/util"
|
|
)
|
|
|
|
// ToFolderErrorResponse returns a different response status according to the folder error type
|
|
func ToFolderErrorResponse(err error) response.Response {
|
|
var dashboardErr models.DashboardErr
|
|
if ok := errors.As(err, &dashboardErr); ok {
|
|
return response.Error(dashboardErr.StatusCode, err.Error(), err)
|
|
}
|
|
|
|
if errors.Is(err, models.ErrFolderTitleEmpty) ||
|
|
errors.Is(err, models.ErrDashboardTypeMismatch) ||
|
|
errors.Is(err, models.ErrDashboardInvalidUid) ||
|
|
errors.Is(err, models.ErrDashboardUidTooLong) ||
|
|
errors.Is(err, models.ErrFolderContainsAlertRules) {
|
|
return response.Error(400, err.Error(), nil)
|
|
}
|
|
|
|
if errors.Is(err, models.ErrFolderAccessDenied) {
|
|
return response.Error(403, "Access denied", err)
|
|
}
|
|
|
|
if errors.Is(err, models.ErrFolderNotFound) {
|
|
return response.JSON(404, util.DynMap{"status": "not-found", "message": models.ErrFolderNotFound.Error()})
|
|
}
|
|
|
|
if errors.Is(err, models.ErrFolderSameNameExists) ||
|
|
errors.Is(err, models.ErrFolderWithSameUIDExists) {
|
|
return response.Error(409, err.Error(), nil)
|
|
}
|
|
|
|
if errors.Is(err, models.ErrFolderVersionMismatch) {
|
|
return response.JSON(412, util.DynMap{"status": "version-mismatch", "message": models.ErrFolderVersionMismatch.Error()})
|
|
}
|
|
|
|
return response.Error(500, "Folder API error", err)
|
|
}
|