Skip to content
Snippets Groups Projects
Verified Commit da76b76b authored by Gabriel Zachmann's avatar Gabriel Zachmann
Browse files

calendars not found errors + log events

parent 8119a649
No related branches found
No related tags found
No related merge requests found
...@@ -131,12 +131,13 @@ func RunWithinTransaction(rlog log.Ext1FieldLogger, tx *sqlx.Tx, fn func(*sqlx.T ...@@ -131,12 +131,13 @@ func RunWithinTransaction(rlog log.Ext1FieldLogger, tx *sqlx.Tx, fn func(*sqlx.T
} }
// ParseError parses the passed error for a sql.ErrNoRows // ParseError parses the passed error for a sql.ErrNoRows
func ParseError(err error) (bool, error) { func ParseError(e error) (found bool, err error) {
if err == nil { if e == nil {
return true, nil found = true
return
} }
if errors.Is(err, sql.ErrNoRows) { if !errors.Is(err, sql.ErrNoRows) {
err = nil err = e
} }
return false, err return
} }
...@@ -37,10 +37,6 @@ import ( ...@@ -37,10 +37,6 @@ import (
"github.com/oidc-mytoken/server/internal/utils/logger" "github.com/oidc-mytoken/server/internal/utils/logger"
) )
//TODO events from eventservice
//TODO not found errors
// HandleGetICS returns a calendar ics by its id // HandleGetICS returns a calendar ics by its id
func HandleGetICS(ctx *fiber.Ctx) error { func HandleGetICS(ctx *fiber.Ctx) error {
rlog := logger.GetRequestLogger(ctx) rlog := logger.GetRequestLogger(ctx)
...@@ -48,7 +44,11 @@ func HandleGetICS(ctx *fiber.Ctx) error { ...@@ -48,7 +44,11 @@ func HandleGetICS(ctx *fiber.Ctx) error {
cid := ctx.Params("id") cid := ctx.Params("id")
info, err := calendarrepo.GetByID(rlog, nil, cid) info, err := calendarrepo.GetByID(rlog, nil, cid)
if err != nil { if err != nil {
return model.ErrorToInternalServerErrorResponse(err).Send(ctx) _, e := db.ParseError(err)
if e != nil {
return model.ErrorToInternalServerErrorResponse(err).Send(ctx)
}
return model.NotFoundErrorResponse("calendar not found").Send(ctx)
} }
ctx.Set(fiber.HeaderContentType, "text/calendar") ctx.Set(fiber.HeaderContentType, "text/calendar")
ctx.Set(fiber.HeaderContentDisposition, fmt.Sprintf(`attachment; filename="%s"`, info.Name)) ctx.Set(fiber.HeaderContentDisposition, fmt.Sprintf(`attachment; filename="%s"`, info.Name))
...@@ -115,7 +115,16 @@ func HandleAdd(ctx *fiber.Ctx) error { ...@@ -115,7 +115,16 @@ func HandleAdd(ctx *fiber.Ctx) error {
resData.TokenUpdate = tokenUpdate resData.TokenUpdate = tokenUpdate
res.Response = resData res.Response = resData
} }
return usedRestriction.UsedOther(rlog, tx, mt.ID) if err = usedRestriction.UsedOther(rlog, tx, mt.ID); err != nil {
return err
}
return eventService.LogEvent(
rlog, tx, eventService.MTEvent{
Event: eventpkg.FromNumber(eventpkg.CalendarCreated, calendarInfo.Name),
MTID: mt.ID,
},
*ctxutils.ClientMetaData(ctx),
)
}, },
); err != nil { ); err != nil {
return model.ErrorToInternalServerErrorResponse(err).Send(ctx) return model.ErrorToInternalServerErrorResponse(err).Send(ctx)
...@@ -162,7 +171,16 @@ func HandleDelete(ctx *fiber.Ctx) error { ...@@ -162,7 +171,16 @@ func HandleDelete(ctx *fiber.Ctx) error {
Cookies: []*fiber.Cookie{cookies.MytokenCookie(tokenUpdate.Mytoken)}, Cookies: []*fiber.Cookie{cookies.MytokenCookie(tokenUpdate.Mytoken)},
} }
} }
return usedRestriction.UsedOther(rlog, tx, mt.ID) if err = usedRestriction.UsedOther(rlog, tx, mt.ID); err != nil {
return err
}
return eventService.LogEvent(
rlog, tx, eventService.MTEvent{
Event: eventpkg.FromNumber(eventpkg.CalendarDeleted, name),
MTID: mt.ID,
},
*ctxutils.ClientMetaData(ctx),
)
}, },
); err != nil { ); err != nil {
return model.ErrorToInternalServerErrorResponse(err).Send(ctx) return model.ErrorToInternalServerErrorResponse(err).Send(ctx)
...@@ -187,7 +205,11 @@ func HandleGet(ctx *fiber.Ctx) error { ...@@ -187,7 +205,11 @@ func HandleGet(ctx *fiber.Ctx) error {
} }
info, err := calendarrepo.Get(rlog, nil, mt.ID, calendarName) info, err := calendarrepo.Get(rlog, nil, mt.ID, calendarName)
if err != nil { if err != nil {
return model.ErrorToInternalServerErrorResponse(err).Send(ctx) _, e := db.ParseError(err)
if e != nil {
return model.ErrorToInternalServerErrorResponse(err).Send(ctx)
}
return model.NotFoundErrorResponse("calendar not found").Send(ctx)
} }
return ctx.Redirect(info.ICSPath) return ctx.Redirect(info.ICSPath)
} }
...@@ -234,7 +256,16 @@ func HandleList(ctx *fiber.Ctx) error { ...@@ -234,7 +256,16 @@ func HandleList(ctx *fiber.Ctx) error {
resData.TokenUpdate = tokenUpdate resData.TokenUpdate = tokenUpdate
res.Response = resData res.Response = resData
} }
return usedRestriction.UsedOther(rlog, tx, mt.ID) if err = usedRestriction.UsedOther(rlog, tx, mt.ID); err != nil {
return err
}
return eventService.LogEvent(
rlog, tx, eventService.MTEvent{
Event: eventpkg.FromNumber(eventpkg.CalendarListed, ""),
MTID: mt.ID,
},
*ctxutils.ClientMetaData(ctx),
)
}, },
) )
return res.Send(ctx) return res.Send(ctx)
...@@ -253,9 +284,7 @@ func HandleCalendarEntryViaMail(ctx *fiber.Ctx) error { ...@@ -253,9 +284,7 @@ func HandleCalendarEntryViaMail(ctx *fiber.Ctx) error {
} }
var req pkg.AddMytokenToCalendarRequest var req pkg.AddMytokenToCalendarRequest
fmt.Println(string(ctx.Body()))
if err := errors.WithStack(ctx.BodyParser(&req)); err != nil { if err := errors.WithStack(ctx.BodyParser(&req)); err != nil {
fmt.Println(errorfmt.Full(err))
return model.ErrorToBadRequestErrorResponse(err).Send(ctx) return model.ErrorToBadRequestErrorResponse(err).Send(ctx)
} }
...@@ -412,7 +441,11 @@ func HandleAddMytoken(ctx *fiber.Ctx) error { ...@@ -412,7 +441,11 @@ func HandleAddMytoken(ctx *fiber.Ctx) error {
rlog, func(tx *sqlx.Tx) error { rlog, func(tx *sqlx.Tx) error {
info, err := calendarrepo.Get(rlog, tx, id, calendarName) info, err := calendarrepo.Get(rlog, tx, id, calendarName)
if err != nil { if err != nil {
res = model.ErrorToInternalServerErrorResponse(err) _, e := db.ParseError(err)
if e != nil {
res = model.ErrorToInternalServerErrorResponse(err)
}
res = model.NotFoundErrorResponse("calendar not found")
return err return err
} }
if err = calendarrepo.AddMytokenToCalendar(rlog, tx, id, info.ID); err != nil { if err = calendarrepo.AddMytokenToCalendar(rlog, tx, id, info.ID); err != nil {
......
...@@ -45,6 +45,17 @@ func ErrorToBadRequestErrorResponse(err error) *Response { ...@@ -45,6 +45,17 @@ func ErrorToBadRequestErrorResponse(err error) *Response {
} }
} }
// NotFoundErrorResponse returns a error response for a not found error
func NotFoundErrorResponse(msg string) *Response {
return &Response{
Status: fiber.StatusNotFound,
Response: api.Error{
Error: "not_found",
ErrorDescription: msg,
},
}
}
// ResponseNYI is the server response when something is not yet implemented // ResponseNYI is the server response when something is not yet implemented
var ResponseNYI = Response{ var ResponseNYI = Response{
Status: fiber.StatusNotImplemented, Status: fiber.StatusNotImplemented,
......
...@@ -126,5 +126,8 @@ const ( ...@@ -126,5 +126,8 @@ const (
NotificationUnsubscribed NotificationUnsubscribed
NotificationSubscribedOther NotificationSubscribedOther
NotificationUnsubscribedOther NotificationUnsubscribedOther
CalendarCreated
CalendarListed
CalendarDeleted
maxEvent maxEvent
) )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment