MCPcopy Index your code
hub / github.com/NdoleStudio/httpsms / PostCallMissed

Method PostCallMissed

api/pkg/handlers/message_handler.go:499–531  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

497// @Failure 500 {object} responses.InternalServerError
498// @Router /messages/calls/missed [post]
499func (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

Callers

nothing calls this directly

Calls 15

SanitizeMethod · 0.95
ToCallMissedParamsMethod · 0.95
responseBadRequestMethod · 0.80
ValidateCallMissedMethod · 0.80
authorizePhoneAPIKeyMethod · 0.80
userIDFomContextMethod · 0.80
userFromContextMethod · 0.80
RegisterMissedCallMethod · 0.80
responseOKMethod · 0.80

Tested by

no test coverage detected