PostCallMissed registers a missed phone call @Summary Register a missed call event on the mobile phone @Description This endpoint is called by the httpSMS android app to register a missed call event on the mobile phone. @Security ApiKeyAuth @Tags Messages @Accept json @Produce
(c fiber.Ctx)
| 497 | // @Failure 500 {object} responses.InternalServerError |
| 498 | // @Router /messages/calls/missed [post] |
| 499 | func (h *MessageHandler) PostCallMissed(c fiber.Ctx) error { |
| 500 | ctx, span := h.tracer.StartFromFiberCtx(c) |
| 501 | defer span.End() |
| 502 | |
| 503 | ctxLogger := h.tracer.CtxLogger(h.logger, span) |
| 504 | |
| 505 | var request requests.MessageCallMissed |
| 506 | if err := c.Bind().Body(&request); err != nil { |
| 507 | msg := fmt.Sprintf("cannot marshall [%s] into %T", c.Body(), request) |
| 508 | ctxLogger.Warn(stacktrace.Propagate(err, msg)) |
| 509 | return h.responseBadRequest(c, err) |
| 510 | } |
| 511 | |
| 512 | if errors := h.validator.ValidateCallMissed(ctx, request.Sanitize()); len(errors) != 0 { |
| 513 | msg := fmt.Sprintf("validation errors [%s], for missed call event [%s]", spew.Sdump(errors), c.Body()) |
| 514 | ctxLogger.Warn(stacktrace.NewError(msg)) |
| 515 | return h.responseUnprocessableEntity(c, errors, "validation errors while storing missed call event") |
| 516 | } |
| 517 | |
| 518 | if !h.authorizePhoneAPIKey(c, request.To) { |
| 519 | ctxLogger.Warn(stacktrace.NewError(fmt.Sprintf("user with ID [%s] is not authorized to register missed phone call for phone number [%s]", h.userIDFomContext(c), request.To))) |
| 520 | return h.responsePhoneAPIKeyUnauthorized(c, request.To, h.userFromContext(c)) |
| 521 | } |
| 522 | |
| 523 | message, err := h.service.RegisterMissedCall(ctx, request.ToCallMissedParams(h.userIDFomContext(c), c.OriginalURL())) |
| 524 | if err != nil { |
| 525 | msg := fmt.Sprintf("cannot store missed call event for user [%s] with paylod [%s]", h.userIDFomContext(c), c.Body()) |
| 526 | ctxLogger.Error(h.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))) |
| 527 | return h.responseInternalServerError(c) |
| 528 | } |
| 529 | |
| 530 | return h.responseOK(c, "missed call event stored successfully", message) |
| 531 | } |
| 532 | |
| 533 | // Search returns a filtered list of messages of a user |
| 534 | // @Summary Search all messages of a user |
nothing calls this directly
no test coverage detected