cleared up the errors rendering

This commit is contained in:
Roman Perekhod
2023-06-09 18:10:51 +02:00
committed by Ralf Haferkamp
parent 6b3c1327d0
commit df5641f406
4 changed files with 42 additions and 220 deletions

View File

@@ -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

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}