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

Method CheckExpired

api/pkg/services/message_service.go:962–1009  ·  view source on GitHub ↗

CheckExpired checks if a message has expired

(ctx context.Context, params MessageCheckExpired)

Source from the content-addressed store, hash-verified

960
961// CheckExpired checks if a message has expired
962func (service *MessageService) CheckExpired(ctx context.Context, params MessageCheckExpired) error {
963 ctx, span := service.tracer.Start(ctx)
964 defer span.End()
965
966 ctxLogger := service.tracer.CtxLogger(service.logger, span)
967
968 message, err := service.repository.Load(ctx, params.UserID, params.MessageID)
969 if stacktrace.GetCode(err) == repositories.ErrCodeNotFound {
970 ctxLogger.Info(fmt.Sprintf("message has been deleted for userID [%s] and messageID [%s]", params.UserID, params.MessageID))
971 return nil
972 }
973
974 if err != nil {
975 msg := fmt.Sprintf("cannot load message with userID [%s] and messageID [%s]", params.UserID, params.MessageID)
976 return service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
977 }
978
979 if !message.IsPending() && !message.IsSending() && !message.IsScheduled() {
980 ctxLogger.Info(fmt.Sprintf("message with ID [%s] has status [%s] and is not expired", message.ID, message.Status))
981 return nil
982 }
983
984 event, err := service.createMessageSendExpiredEvent(params.Source, events.MessageSendExpiredPayload{
985 MessageID: message.ID,
986 Owner: message.Owner,
987 Contact: message.Contact,
988 Encrypted: message.Encrypted,
989 RequestID: message.RequestID,
990 IsFinal: message.SendAttemptCount == message.MaxSendAttempts,
991 SendAttemptCount: message.SendAttemptCount,
992 UserID: message.UserID,
993 Timestamp: time.Now().UTC(),
994 Content: message.Content,
995 SIM: message.SIM,
996 })
997 if err != nil {
998 msg := fmt.Sprintf("cannot create event [%s] for message with id [%s]", events.EventTypeMessageSendExpired, params.MessageID)
999 return service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
1000 }
1001
1002 if err = service.eventDispatcher.Dispatch(ctx, event); err != nil {
1003 msg := fmt.Sprintf("cannot dispatch event [%s] for message with ID [%s]", event.Type(), params.MessageID)
1004 return service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
1005 }
1006
1007 ctxLogger.Info(fmt.Sprintf("message [%s] has expired with status [%s]", params.MessageID, message.Status))
1008 return nil
1009}
1010
1011// MessageSearchParams are parameters for searching messages
1012type MessageSearchParams struct {

Callers 1

Calls 10

IsPendingMethod · 0.80
IsSendingMethod · 0.80
IsScheduledMethod · 0.80
StartMethod · 0.65
CtxLoggerMethod · 0.65
LoadMethod · 0.65
InfoMethod · 0.65
WrapErrorSpanMethod · 0.65
DispatchMethod · 0.45

Tested by

no test coverage detected