Skip to content

Commit d188907

Browse files
Jeff Yantajeffyanta
authored andcommitted
Handle Twilio's use case vetting error as a rate limit error
1 parent 0d3c50f commit d188907

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

pkg/phone/twilio/verifier.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ const (
3333
maxCheckAttemptsCode = 60202
3434
// https://www.twilio.com/docs/api/errors/60203
3535
maxSendAttemptsCode = 60203
36+
// https://www.twilio.com/docs/api/errors/60220
37+
useCaseVettingCode = 60220
3638
// https://www.twilio.com/docs/api/errors/60410
3739
fraudDetectionCode = 60410
3840
)
@@ -105,6 +107,7 @@ func (v *verifier) SendCode(ctx context.Context, phoneNumber string) (string, *p
105107
err = checkInvalidToParameterError(err, phone.ErrInvalidNumber)
106108
err = checkMaxSendAttemptsError(err, phone.ErrRateLimited)
107109
err = checkFraudDetectionError(err, phone.ErrRateLimited)
110+
err = checkUseCaseVettingError(err, phone.ErrRateLimited)
108111
tracer.OnError(err)
109112
return "", nil, err
110113
}
@@ -321,6 +324,18 @@ func checkInvalidToParameterError(inError, outError error) error {
321324
return inError
322325
}
323326

327+
func checkUseCaseVettingError(inError, outError error) error {
328+
twilioError, ok := inError.(*client.TwilioRestError)
329+
if !ok {
330+
return inError
331+
}
332+
333+
if twilioError.Code == useCaseVettingCode {
334+
return outError
335+
}
336+
return inError
337+
}
338+
324339
func checkFraudDetectionError(inError, outError error) error {
325340
twilioError, ok := inError.(*client.TwilioRestError)
326341
if !ok {

0 commit comments

Comments
 (0)