Skip to content

Commit b1890af

Browse files
committed
Fix contact formatting
1 parent 519b1ad commit b1890af

File tree

1 file changed

+21
-8
lines changed

1 file changed

+21
-8
lines changed

api/pkg/services/webhook_service.go

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"net/http"
7+
"regexp"
78
"strings"
89
"sync"
910
"time"
@@ -226,20 +227,32 @@ func (service *WebhookService) getPayload(ctxLogger telemetry.Logger, event clou
226227
return event
227228
}
228229

229-
username := payload.Contact
230-
if number, err := phonenumbers.Parse(payload.Contact, phonenumbers.UNKNOWN_REGION); err == nil {
231-
username = phonenumbers.Format(number, phonenumbers.INTERNATIONAL)
232-
} else {
233-
ctxLogger.Error(stacktrace.Propagate(err, fmt.Sprintf("cannot parse number [%s]", payload.Contact)))
234-
}
235-
236230
return map[string]string{
237231
"avatar_url": "https://httpsms.com/avatar.png",
238-
"username": username,
232+
"username": service.getFormattedContact(ctxLogger, payload.Contact),
239233
"content": payload.Content,
240234
}
241235
}
242236

237+
func (service *WebhookService) getFormattedContact(ctxLogger telemetry.Logger, contact string) string {
238+
matched, err := regexp.MatchString("^\\+?[1-9]\\d{10,14}$", contact)
239+
if err != nil {
240+
ctxLogger.Error(stacktrace.Propagate(err, fmt.Sprintf("error while matching contact [%s] with regex [%s]", contact, "^\\+?[1-9]\\d{10,14}$")))
241+
return contact
242+
}
243+
if !matched {
244+
return contact
245+
}
246+
247+
number, err := phonenumbers.Parse(contact, phonenumbers.UNKNOWN_REGION)
248+
if err != nil {
249+
ctxLogger.Error(stacktrace.Propagate(err, fmt.Sprintf("cannot parse number [%s]", contact)))
250+
return contact
251+
}
252+
253+
return phonenumbers.Format(number, phonenumbers.INTERNATIONAL)
254+
}
255+
243256
func (service *WebhookService) getAuthToken(webhook *entities.Webhook) (string, error) {
244257
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.StandardClaims{
245258
Audience: webhook.URL,

0 commit comments

Comments
 (0)