| 577 | } |
| 578 | |
| 579 | func (service *MessageService) getSendDelay(ctxLogger telemetry.Logger, eventPayload events.MessageAPISentPayload, params MessageSendParams, messagesPerMinute uint) time.Duration { |
| 580 | if params.SendAt != nil { |
| 581 | delay := params.SendAt.Sub(time.Now().UTC()) |
| 582 | if delay < 0 { |
| 583 | ctxLogger.Info(fmt.Sprintf("message [%s] has send time [%s] in the past. sending immediately", eventPayload.MessageID, params.SendAt.String())) |
| 584 | return time.Duration(0) |
| 585 | } |
| 586 | return delay |
| 587 | } |
| 588 | |
| 589 | if params.Index > 0 && messagesPerMinute > 0 { |
| 590 | interval := time.Minute / time.Duration(messagesPerMinute) |
| 591 | delay := time.Duration(params.Index) * interval |
| 592 | ctxLogger.Info(fmt.Sprintf("message [%s] bulk index [%d] rate-based delay [%s]", eventPayload.MessageID, params.Index, delay)) |
| 593 | return delay |
| 594 | } |
| 595 | |
| 596 | return time.Duration(0) |
| 597 | } |
| 598 | |
| 599 | // StoreReceivedMessage a new message |
| 600 | func (service *MessageService) storeReceivedMessage(ctx context.Context, params events.MessagePhoneReceivedPayload) (*entities.Message, error) { |