chore: Linter rule for properly formatted api errors (#2123)

* chore: Linter rule for properly formatted api errors
* Add omitempty to 'Detail' field
This commit is contained in:
Steven Masley
2022-06-07 14:33:06 +00:00
committed by GitHub
parent 3f1e885d21
commit af401e3fe1
37 changed files with 351 additions and 302 deletions
+26 -26
View File
@@ -31,7 +31,7 @@ func (api *API) workspaceBuild(rw http.ResponseWriter, r *http.Request) {
job, err := api.Database.GetProvisionerJobByID(r.Context(), workspaceBuild.JobID)
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error fetching provisioner job",
Message: "Internal error fetching provisioner job.",
Detail: err.Error(),
})
return
@@ -72,12 +72,12 @@ func (api *API) workspaceBuilds(rw http.ResponseWriter, r *http.Request) {
_, err := store.GetWorkspaceBuildByID(r.Context(), paginationParams.AfterID)
if err != nil && xerrors.Is(err, sql.ErrNoRows) {
httpapi.Write(rw, http.StatusBadRequest, httpapi.Response{
Message: fmt.Sprintf("Record at \"after_id\" (%q) does not exist", paginationParams.AfterID.String()),
Message: fmt.Sprintf("Record at \"after_id\" (%q) does not exist.", paginationParams.AfterID.String()),
})
return err
} else if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error fetching workspace build at \"after_id\"",
Message: "Internal error fetching workspace build at \"after_id\".",
Detail: err.Error(),
})
return err
@@ -96,7 +96,7 @@ func (api *API) workspaceBuilds(rw http.ResponseWriter, r *http.Request) {
}
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error fetching workspace build",
Message: "Internal error fetching workspace build.",
Detail: err.Error(),
})
return err
@@ -118,7 +118,7 @@ func (api *API) workspaceBuilds(rw http.ResponseWriter, r *http.Request) {
}
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error fetching provisioner jobs",
Message: "Internal error fetching provisioner jobs.",
Detail: err.Error(),
})
return
@@ -142,7 +142,7 @@ func (api *API) workspaceBuilds(rw http.ResponseWriter, r *http.Request) {
job, exists := jobByID[build.JobID.String()]
if !exists {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: fmt.Sprintf("Job %q doesn't exist for build %q", build.JobID, build.ID),
Message: fmt.Sprintf("Job %q doesn't exist for build %q.", build.JobID, build.ID),
})
return
}
@@ -166,13 +166,13 @@ func (api *API) workspaceBuildByName(rw http.ResponseWriter, r *http.Request) {
})
if errors.Is(err, sql.ErrNoRows) {
httpapi.Write(rw, http.StatusNotFound, httpapi.Response{
Message: fmt.Sprintf("No workspace build found by name %q", workspaceBuildName),
Message: fmt.Sprintf("No workspace build found by name %q.", workspaceBuildName),
})
return
}
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error fetching workspace build by name",
Message: "Internal error fetching workspace build by name.",
Detail: err.Error(),
})
return
@@ -180,7 +180,7 @@ func (api *API) workspaceBuildByName(rw http.ResponseWriter, r *http.Request) {
job, err := api.Database.GetProvisionerJobByID(r.Context(), workspaceBuild.JobID)
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error fetching provisioner job",
Message: "Internal error fetching provisioner job.",
Detail: err.Error(),
})
return
@@ -214,7 +214,7 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
action = rbac.ActionUpdate
default:
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: fmt.Sprintf("Transition %q not supported", createBuild.Transition),
Message: fmt.Sprintf("Transition %q not supported.", createBuild.Transition),
})
return
}
@@ -227,7 +227,7 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
latestBuild, err := api.Database.GetLatestWorkspaceBuildByWorkspaceID(r.Context(), workspace.ID)
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error fetching the latest workspace build",
Message: "Internal error fetching the latest workspace build.",
Detail: err.Error(),
})
return
@@ -237,7 +237,7 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
templateVersion, err := api.Database.GetTemplateVersionByID(r.Context(), createBuild.TemplateVersionID)
if errors.Is(err, sql.ErrNoRows) {
httpapi.Write(rw, http.StatusBadRequest, httpapi.Response{
Message: "Template version not found",
Message: "Template version not found.",
Validations: []httpapi.Error{{
Field: "template_version_id",
Detail: "template version not found",
@@ -247,7 +247,7 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
}
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error fetching template version",
Message: "Internal error fetching template version.",
Detail: err.Error(),
})
return
@@ -255,7 +255,7 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
templateVersionJob, err := api.Database.GetProvisionerJobByID(r.Context(), templateVersion.JobID)
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error fetching provisioner job",
Message: "Internal error fetching provisioner job.",
Detail: err.Error(),
})
return
@@ -282,7 +282,7 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
template, err := api.Database.GetTemplateByID(r.Context(), templateVersion.TemplateID.UUID)
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error fetching template job",
Message: "Internal error fetching template job.",
Detail: err.Error(),
})
return
@@ -295,7 +295,7 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
priorJob, err := api.Database.GetProvisionerJobByID(r.Context(), priorHistory.JobID)
if err == nil && convertProvisionerJob(priorJob).Status.Active() {
httpapi.Write(rw, http.StatusConflict, httpapi.Response{
Message: "A workspace build is already active",
Message: "A workspace build is already active.",
})
return
}
@@ -303,7 +303,7 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
priorBuildNum = priorHistory.BuildNumber
} else if !errors.Is(err, sql.ErrNoRows) {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error fetching prior workspace build",
Message: "Internal error fetching prior workspace build.",
Detail: err.Error(),
})
return
@@ -362,7 +362,7 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
})
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error inserting workspace build",
Message: "Internal error inserting workspace build.",
Detail: err.Error(),
})
return
@@ -386,7 +386,7 @@ func (api *API) patchCancelWorkspaceBuild(rw http.ResponseWriter, r *http.Reques
workspace, err := api.Database.GetWorkspaceByID(r.Context(), workspaceBuild.WorkspaceID)
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "No workspace exists for this job",
Message: "No workspace exists for this job.",
})
return
}
@@ -399,7 +399,7 @@ func (api *API) patchCancelWorkspaceBuild(rw http.ResponseWriter, r *http.Reques
job, err := api.Database.GetProvisionerJobByID(r.Context(), workspaceBuild.JobID)
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error fetching provisioner job",
Message: "Internal error fetching provisioner job.",
Detail: err.Error(),
})
return
@@ -425,7 +425,7 @@ func (api *API) patchCancelWorkspaceBuild(rw http.ResponseWriter, r *http.Reques
})
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error updating provisioner job",
Message: "Internal error updating provisioner job.",
Detail: err.Error(),
})
return
@@ -440,7 +440,7 @@ func (api *API) workspaceBuildResources(rw http.ResponseWriter, r *http.Request)
workspace, err := api.Database.GetWorkspaceByID(r.Context(), workspaceBuild.WorkspaceID)
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "No workspace exists for this job",
Message: "No workspace exists for this job.",
})
return
}
@@ -453,7 +453,7 @@ func (api *API) workspaceBuildResources(rw http.ResponseWriter, r *http.Request)
job, err := api.Database.GetProvisionerJobByID(r.Context(), workspaceBuild.JobID)
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error fetching provisioner job",
Message: "Internal error fetching provisioner job.",
Detail: err.Error(),
})
return
@@ -466,7 +466,7 @@ func (api *API) workspaceBuildLogs(rw http.ResponseWriter, r *http.Request) {
workspace, err := api.Database.GetWorkspaceByID(r.Context(), workspaceBuild.WorkspaceID)
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "No workspace exists for this job",
Message: "No workspace exists for this job.",
})
return
}
@@ -479,7 +479,7 @@ func (api *API) workspaceBuildLogs(rw http.ResponseWriter, r *http.Request) {
job, err := api.Database.GetProvisionerJobByID(r.Context(), workspaceBuild.JobID)
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "Internal error fetching provisioner job",
Message: "Internal error fetching provisioner job.",
Detail: err.Error(),
})
return
@@ -492,7 +492,7 @@ func (api *API) workspaceBuildState(rw http.ResponseWriter, r *http.Request) {
workspace, err := api.Database.GetWorkspaceByID(r.Context(), workspaceBuild.WorkspaceID)
if err != nil {
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
Message: "No workspace exists for this job",
Message: "No workspace exists for this job.",
})
return
}