|
4 | 4 | "context" |
5 | 5 | "fmt" |
6 | 6 | "net/http" |
| 7 | + "regexp" |
7 | 8 | "strings" |
8 | 9 | "sync" |
9 | 10 | "time" |
@@ -226,20 +227,32 @@ func (service *WebhookService) getPayload(ctxLogger telemetry.Logger, event clou |
226 | 227 | return event |
227 | 228 | } |
228 | 229 |
|
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 | | - |
236 | 230 | return map[string]string{ |
237 | 231 | "avatar_url": "https://httpsms.com/avatar.png", |
238 | | - "username": username, |
| 232 | + "username": service.getFormattedContact(ctxLogger, payload.Contact), |
239 | 233 | "content": payload.Content, |
240 | 234 | } |
241 | 235 | } |
242 | 236 |
|
| 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 | + |
243 | 256 | func (service *WebhookService) getAuthToken(webhook *entities.Webhook) (string, error) { |
244 | 257 | token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.StandardClaims{ |
245 | 258 | Audience: webhook.URL, |
|
0 commit comments