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

Method HandleMessageSent

api/pkg/services/message_service.go:718–747  ·  view source on GitHub ↗

HandleMessageSent handles when a message has been sent by a mobile phone

(ctx context.Context, params HandleMessageParams)

Source from the content-addressed store, hash-verified

716
717// HandleMessageSent handles when a message has been sent by a mobile phone
718func (service *MessageService) HandleMessageSent(ctx context.Context, params HandleMessageParams) error {
719 ctx, span := service.tracer.Start(ctx)
720 defer span.End()
721
722 ctxLogger := service.tracer.CtxLogger(service.logger, span)
723
724 message, err := service.repository.Load(ctx, params.UserID, params.ID)
725 if err != nil {
726 msg := fmt.Sprintf("cannot find message with id [%s]", params.ID)
727 return service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
728 }
729
730 if message.IsSent() || message.IsDelivered() {
731 ctxLogger.Info(fmt.Sprintf("message [%s] for [%s] has already been processed with status [%s]", message.ID, message.UserID, message.Status))
732 return nil
733 }
734
735 if !message.IsSending() && !message.IsExpired() && !message.IsScheduled() {
736 msg := fmt.Sprintf("message has wrong status [%s]. expected [%s, %s, %s]", message.Status, entities.MessageStatusSending, entities.MessageStatusExpired, entities.MessageStatusScheduled)
737 return service.tracer.WrapErrorSpan(span, stacktrace.NewError(msg))
738 }
739
740 if err = service.repository.Update(ctx, message.Sent(params.Timestamp)); err != nil {
741 msg := fmt.Sprintf("cannot update message with id [%s] as sent", message.ID)
742 return service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
743 }
744
745 ctxLogger.Info(fmt.Sprintf("message with id [%s] has been updated to status [%s]", message.ID, message.Status))
746 return nil
747}
748
749// HandleMessageFailedParams are parameters for handling a failed message event
750type HandleMessageFailedParams struct {

Callers 1

OnMessagePhoneSentMethod · 0.80

Calls 12

IsSentMethod · 0.80
IsDeliveredMethod · 0.80
IsSendingMethod · 0.80
IsExpiredMethod · 0.80
IsScheduledMethod · 0.80
SentMethod · 0.80
StartMethod · 0.65
CtxLoggerMethod · 0.65
LoadMethod · 0.65
WrapErrorSpanMethod · 0.65
InfoMethod · 0.65
UpdateMethod · 0.65

Tested by

no test coverage detected