Skip to content

Commit 8497498

Browse files
Added validation to csv based bulk messages
1 parent bc5faf1 commit 8497498

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

api/pkg/validators/bulk_message_handler_validator.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,29 @@ func (v *BulkMessageHandlerValidator) parseCSV(ctxLogger telemetry.Logger, user
218218
func (v *BulkMessageHandlerValidator) validateMessages(messages []*requests.BulkMessage) url.Values {
219219
result := url.Values{}
220220
for index, message := range messages {
221+
222+
if message.AttachmentURLs != "" {
223+
urls := strings.Split(message.AttachmentURLs, ",")
224+
225+
if len(urls) > 10 {
226+
result.Add("document", fmt.Sprintf("Row [%d]: You cannot attach more than 10 files per message.", index+2))
227+
}
228+
229+
for _, u := range urls {
230+
cleanURL := strings.TrimSpace(u)
231+
if cleanURL == "" {
232+
continue
233+
}
234+
235+
parsedURL, err := url.ParseRequestURI(cleanURL)
236+
if err != nil || parsedURL.Scheme == "" || parsedURL.Host == "" {
237+
result.Add("document", fmt.Sprintf("Row [%d]: The attachment URL [%s] has an invalid url format.", index+2, cleanURL))
238+
} else if parsedURL.Scheme != "http" && parsedURL.Scheme != "https" {
239+
result.Add("document", fmt.Sprintf("Row [%d]: The attachment URL [%s] must use http or https.", index+2, cleanURL))
240+
}
241+
}
242+
}
243+
221244
if _, err := phonenumbers.Parse(message.FromPhoneNumber, phonenumbers.UNKNOWN_REGION); err != nil {
222245
result.Add("document", fmt.Sprintf("Row [%d]: The FromPhoneNumber [%s] is not a valid E.164 phone number", index+2, message.FromPhoneNumber))
223246
}

0 commit comments

Comments
 (0)