HandleMessageFailed handles when a message could not be sent by a mobile phone
(ctx context.Context, params HandleMessageFailedParams)
| 756 | |
| 757 | // HandleMessageFailed handles when a message could not be sent by a mobile phone |
| 758 | func (service *MessageService) HandleMessageFailed(ctx context.Context, params HandleMessageFailedParams) error { |
| 759 | ctx, span := service.tracer.Start(ctx) |
| 760 | defer span.End() |
| 761 | |
| 762 | ctxLogger := service.tracer.CtxLogger(service.logger, span) |
| 763 | |
| 764 | message, err := service.repository.Load(ctx, params.UserID, params.ID) |
| 765 | if err != nil { |
| 766 | msg := fmt.Sprintf("cannot find message with id [%s]", params.ID) |
| 767 | return service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg)) |
| 768 | } |
| 769 | |
| 770 | if message.IsDelivered() { |
| 771 | msg := fmt.Sprintf("message has already been delivered with status [%s]", message.Status) |
| 772 | return service.tracer.WrapErrorSpan(span, stacktrace.NewError(msg)) |
| 773 | } |
| 774 | |
| 775 | if err = service.repository.Update(ctx, message.Failed(params.Timestamp, params.ErrorMessage)); err != nil { |
| 776 | msg := fmt.Sprintf("cannot update message with id [%s] as sent", message.ID) |
| 777 | return service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg)) |
| 778 | } |
| 779 | |
| 780 | ctxLogger.Info(fmt.Sprintf("message with id [%s] has been updated to status [%s]", message.ID, message.Status)) |
| 781 | return nil |
| 782 | } |
| 783 | |
| 784 | // HandleMessageDelivered handles when a message is has been delivered by a mobile phone |
| 785 | func (service *MessageService) HandleMessageDelivered(ctx context.Context, params HandleMessageParams) error { |
no test coverage detected