From df5641f40671044e4dafbeba1136004b0248f890 Mon Sep 17 00:00:00 2001 From: Roman Perekhod Date: Fri, 9 Jun 2023 18:10:51 +0200 Subject: [PATCH] cleared up the errors rendering --- .../graph/pkg/service/v0/educationclasses.go | 79 +++--------------- .../graph/pkg/service/v0/educationschools.go | 80 ++++--------------- .../graph/pkg/service/v0/educationuser.go | 45 ++--------- services/graph/pkg/service/v0/users.go | 58 +++----------- 4 files changed, 42 insertions(+), 220 deletions(-) diff --git a/services/graph/pkg/service/v0/educationclasses.go b/services/graph/pkg/service/v0/educationclasses.go index aa0fb98fa6..646099dc11 100644 --- a/services/graph/pkg/service/v0/educationclasses.go +++ b/services/graph/pkg/service/v0/educationclasses.go @@ -1,7 +1,6 @@ package svc import ( - "errors" "fmt" "net/http" "net/url" @@ -34,12 +33,7 @@ func (g Graph) GetEducationClasses(w http.ResponseWriter, r *http.Request) { classes, err := g.identityEducationBackend.GetEducationClasses(r.Context()) if err != nil { logger.Debug().Err(err).Msg("could not get classes: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -82,12 +76,7 @@ func (g Graph) PostEducationClass(w http.ResponseWriter, r *http.Request) { if class, err = g.identityEducationBackend.CreateEducationClass(r.Context(), *class); err != nil { logger.Debug().Interface("class", class).Msg("could not create class: backend error") - var eerr errorcode.Error - if errors.As(err, &eerr) { - eerr.Render(w, r) - return - } - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) + errorcode.RenderError(w, r, err) return } @@ -183,12 +172,7 @@ func (g Graph) PatchEducationClass(w http.ResponseWriter, r *http.Request) { if err != nil { logger.Debug().Err(err).Msg("could not change class: backend could not add members") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -233,12 +217,8 @@ func (g Graph) GetEducationClass(w http.ResponseWriter, r *http.Request) { class, err := g.identityEducationBackend.GetEducationClass(r.Context(), classID) if err != nil { logger.Debug().Err(err).Msg("could not get class: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) + return } render.Status(r, http.StatusOK) @@ -268,12 +248,7 @@ func (g Graph) DeleteEducationClass(w http.ResponseWriter, r *http.Request) { if err != nil { logger.Debug().Err(err).Msg("could not delete class: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -308,12 +283,7 @@ func (g Graph) GetEducationClassMembers(w http.ResponseWriter, r *http.Request) members, err := g.identityEducationBackend.GetEducationClassMembers(r.Context(), classID) if err != nil { logger.Debug().Err(err).Msg("could not get class members: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -377,12 +347,7 @@ func (g Graph) PostEducationClassMember(w http.ResponseWriter, r *http.Request) if err != nil { logger.Debug().Err(err).Msg("could not add class member: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -431,12 +396,7 @@ func (g Graph) DeleteEducationClassMember(w http.ResponseWriter, r *http.Request if err != nil { logger.Debug().Err(err).Msg("could not delete class member: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } /* TODO requires reva changes @@ -469,12 +429,7 @@ func (g Graph) GetEducationClassTeachers(w http.ResponseWriter, r *http.Request) teachers, err := g.identityEducationBackend.GetEducationClassTeachers(r.Context(), classID) if err != nil { logger.Debug().Err(err).Msg("could not get class teachers: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -538,12 +493,7 @@ func (g Graph) PostEducationClassTeacher(w http.ResponseWriter, r *http.Request) if err != nil { logger.Debug().Err(err).Msg("could not add class teacher: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -592,12 +542,7 @@ func (g Graph) DeleteEducationClassTeacher(w http.ResponseWriter, r *http.Reques if err != nil { logger.Debug().Err(err).Msg("could not delete class teacher: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } /* TODO requires reva changes diff --git a/services/graph/pkg/service/v0/educationschools.go b/services/graph/pkg/service/v0/educationschools.go index 8215927572..f8aec173ad 100644 --- a/services/graph/pkg/service/v0/educationschools.go +++ b/services/graph/pkg/service/v0/educationschools.go @@ -32,12 +32,7 @@ func (g Graph) GetEducationSchools(w http.ResponseWriter, r *http.Request) { schools, err := g.identityEducationBackend.GetEducationSchools(r.Context()) if err != nil { logger.Debug().Err(err).Msg("could not get schools: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -86,12 +81,7 @@ func (g Graph) PostEducationSchool(w http.ResponseWriter, r *http.Request) { if school, err = g.identityEducationBackend.CreateEducationSchool(r.Context(), *school); err != nil { logger.Debug().Err(err).Interface("school", school).Msg("could not create school: backend error") - var eerr errorcode.Error - if errors.As(err, &eerr) { - eerr.Render(w, r) - return - } - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) + errorcode.RenderError(w, r, err) return } @@ -177,12 +167,8 @@ func (g Graph) GetEducationSchool(w http.ResponseWriter, r *http.Request) { school, err := g.identityEducationBackend.GetEducationSchool(r.Context(), schoolID) if err != nil { logger.Debug().Err(err).Msg("could not get school: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) + return } render.Status(r, http.StatusOK) @@ -211,7 +197,7 @@ func (g Graph) DeleteEducationSchool(w http.ResponseWriter, r *http.Request) { users, err := g.identityEducationBackend.GetEducationSchoolUsers(r.Context(), schoolID) if err != nil { logger.Debug().Err(err).Msg("could not get school users: backend error") - renderInternalServerError(w, r, err) + errorcode.RenderError(w, r, err) return } @@ -223,7 +209,8 @@ func (g Graph) DeleteEducationSchool(w http.ResponseWriter, r *http.Request) { continue } logger.Debug().Err(err).Msg("could not delete school member: backend error") - renderInternalServerError(w, r, err) + errorcode.RenderError(w, r, err) + // TODO Do we need return right hear? } } @@ -232,7 +219,7 @@ func (g Graph) DeleteEducationSchool(w http.ResponseWriter, r *http.Request) { if err != nil { logger.Debug().Err(err).Msg("could not delete school: backend error") - renderInternalServerError(w, r, err) + errorcode.RenderError(w, r, err) return } @@ -248,15 +235,6 @@ func (g Graph) DeleteEducationSchool(w http.ResponseWriter, r *http.Request) { render.NoContent(w, r) } -func renderInternalServerError(w http.ResponseWriter, r *http.Request, err error) { - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } -} - // GetEducationSchoolUsers implements the Service interface. func (g Graph) GetEducationSchoolUsers(w http.ResponseWriter, r *http.Request) { logger := g.logger.SubloggerWithRequestID(r.Context()) @@ -279,12 +257,7 @@ func (g Graph) GetEducationSchoolUsers(w http.ResponseWriter, r *http.Request) { users, err := g.identityEducationBackend.GetEducationSchoolUsers(r.Context(), schoolID) if err != nil { logger.Debug().Err(err).Msg("could not get school users: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -348,12 +321,7 @@ func (g Graph) PostEducationSchoolUser(w http.ResponseWriter, r *http.Request) { if err != nil { logger.Debug().Err(err).Msg("could not add school user: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -406,12 +374,7 @@ func (g Graph) DeleteEducationSchoolUser(w http.ResponseWriter, r *http.Request) if err != nil { logger.Debug().Err(err).Msg("could not delete school member: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -449,12 +412,7 @@ func (g Graph) GetEducationSchoolClasses(w http.ResponseWriter, r *http.Request) classes, err := g.identityEducationBackend.GetEducationSchoolClasses(r.Context(), schoolID) if err != nil { logger.Debug().Err(err).Msg("could not get school classes: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -518,12 +476,7 @@ func (g Graph) PostEducationSchoolClass(w http.ResponseWriter, r *http.Request) if err != nil { logger.Debug().Err(err).Msg("could not add school class: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -576,12 +529,7 @@ func (g Graph) DeleteEducationSchoolClass(w http.ResponseWriter, r *http.Request if err != nil { logger.Debug().Err(err).Msg("could not delete school class: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } diff --git a/services/graph/pkg/service/v0/educationuser.go b/services/graph/pkg/service/v0/educationuser.go index ace6307952..6f8e1c2523 100644 --- a/services/graph/pkg/service/v0/educationuser.go +++ b/services/graph/pkg/service/v0/educationuser.go @@ -1,7 +1,6 @@ package svc import ( - "errors" "fmt" "net/http" "net/url" @@ -35,12 +34,7 @@ func (g Graph) GetEducationUsers(w http.ResponseWriter, r *http.Request) { users, err := g.identityEducationBackend.GetEducationUsers(r.Context()) if err != nil { logger.Debug().Err(err).Interface("query", r.URL.Query()).Msg("could not get education users from backend") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -144,12 +138,7 @@ func (g Graph) PostEducationUser(w http.ResponseWriter, r *http.Request) { logger.Debug().Interface("user", u).Msg("calling create education user on backend") if u, err = g.identityEducationBackend.CreateEducationUser(r.Context(), *u); err != nil { logger.Debug().Err(err).Msg("could not create education user: backend error") - var ecErr errorcode.Error - if errors.As(err, &ecErr) { - ecErr.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -186,12 +175,7 @@ func (g Graph) GetEducationUser(w http.ResponseWriter, r *http.Request) { if err != nil { logger.Debug().Err(err).Msg("could not get education user: error fetching education user from backend") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -220,12 +204,7 @@ func (g Graph) DeleteEducationUser(w http.ResponseWriter, r *http.Request) { user, err := g.identityEducationBackend.GetEducationUser(r.Context(), userID) if err != nil { logger.Debug().Err(err).Str("userID", userID).Msg("failed to get education user from backend") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -305,13 +284,8 @@ func (g Graph) DeleteEducationUser(w http.ResponseWriter, r *http.Request) { if err != nil { logger.Debug().Err(err).Msg("could not delete education user: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - return - } + errorcode.RenderError(w, r, err) + return } g.publishEvent(e) @@ -382,12 +356,7 @@ func (g Graph) PatchEducationUser(w http.ResponseWriter, r *http.Request) { u, err := g.identityEducationBackend.UpdateEducationUser(r.Context(), nameOrID, *changes) if err != nil { logger.Debug().Err(err).Str("id", nameOrID).Msg("could not update education user: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } diff --git a/services/graph/pkg/service/v0/users.go b/services/graph/pkg/service/v0/users.go index 7a8c0df04f..4421e78822 100644 --- a/services/graph/pkg/service/v0/users.go +++ b/services/graph/pkg/service/v0/users.go @@ -65,12 +65,7 @@ func (g Graph) GetMe(w http.ResponseWriter, r *http.Request) { me, err = g.identityBackend.GetUser(r.Context(), u.GetId().GetOpaqueId(), odataReq) if err != nil { logger.Debug().Err(err).Interface("user", u).Msg("could not get user from backend") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } if me.MemberOf == nil { @@ -84,12 +79,7 @@ func (g Graph) GetMe(w http.ResponseWriter, r *http.Request) { me.AppRoleAssignments, err = g.fetchAppRoleAssignments(r.Context(), me.GetId()) if err != nil { logger.Debug().Err(err).Str("userid", me.GetId()).Msg("could not get appRoleAssignments for self") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } } @@ -318,12 +308,7 @@ func (g Graph) PostUser(w http.ResponseWriter, r *http.Request) { logger.Debug().Interface("user", u).Msg("calling create user on backend") if u, err = g.identityBackend.CreateUser(r.Context(), *u); err != nil { logger.Error().Err(err).Msg("could not create user: backend error") - var ecErr errorcode.Error - if errors.As(err, &ecErr) { - ecErr.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -392,12 +377,7 @@ func (g Graph) GetUser(w http.ResponseWriter, r *http.Request) { if err != nil { logger.Debug().Err(err).Msg("could not get user: error fetching user from backend") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -490,12 +470,7 @@ func (g Graph) GetUser(w http.ResponseWriter, r *http.Request) { user.AppRoleAssignments, err = g.fetchAppRoleAssignments(r.Context(), user.GetId()) if err != nil { logger.Debug().Err(err).Str("userid", user.GetId()).Msg("could not get appRoleAssignments for user") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } } @@ -534,12 +509,7 @@ func (g Graph) DeleteUser(w http.ResponseWriter, r *http.Request) { user, err := g.identityBackend.GetUser(r.Context(), userID, odataReq) if err != nil { logger.Debug().Err(err).Str("userID", userID).Msg("failed to get user from backend") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return } @@ -619,13 +589,8 @@ func (g Graph) DeleteUser(w http.ResponseWriter, r *http.Request) { if err != nil { logger.Debug().Err(err).Msg("could not delete user: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - return - } + errorcode.RenderError(w, r, err) + return } g.publishEvent(e) @@ -703,12 +668,7 @@ func (g Graph) PatchUser(w http.ResponseWriter, r *http.Request) { u, err := g.identityBackend.UpdateUser(r.Context(), nameOrID, *changes) if err != nil { logger.Debug().Err(err).Str("id", nameOrID).Msg("could not update user: backend error") - var errcode errorcode.Error - if errors.As(err, &errcode) { - errcode.Render(w, r) - } else { - errorcode.GeneralException.Render(w, r, http.StatusInternalServerError, err.Error()) - } + errorcode.RenderError(w, r, err) return }