|
@@ -8,29 +8,37 @@ import (
|
|
|
)
|
|
|
|
|
|
type Phone struct {
|
|
|
- number *phonenumbers.PhoneNumber
|
|
|
- Verified bool `mapstructure:"phone_verified"`
|
|
|
+ number *phonenumbers.PhoneNumber
|
|
|
|
|
|
+ Verified bool `mapstructure:"phone_verified"`
|
|
|
PhoneNumber string `mapstructure:"phone_number"`
|
|
|
PhoneRegion string `mapstructure:"phone_region"`
|
|
|
}
|
|
|
|
|
|
func ParsePhoneNumber(m map[string]any) (*Phone, error) {
|
|
|
- var (
|
|
|
- p = Phone{}
|
|
|
- err error
|
|
|
- )
|
|
|
-
|
|
|
+ p := Phone{}
|
|
|
if err := mapstructure.Decode(m, &p); err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
+ return NewPhoneNumber(p.PhoneNumber, p.PhoneRegion, p.Verified)
|
|
|
+}
|
|
|
+
|
|
|
+func NewPhoneNumber(number, region string, verified bool) (*Phone, error) {
|
|
|
+ var (
|
|
|
+ p = Phone{
|
|
|
+ PhoneNumber: number,
|
|
|
+ PhoneRegion: region,
|
|
|
+ Verified: verified,
|
|
|
+ }
|
|
|
+ err error
|
|
|
+ )
|
|
|
+
|
|
|
if p.PhoneNumber == "" || p.PhoneRegion == "" {
|
|
|
return nil, nil
|
|
|
}
|
|
|
|
|
|
- region := model.CountryCode(p.PhoneRegion)
|
|
|
- if !region.IsValid() {
|
|
|
+ if r := model.CountryCode(p.PhoneRegion); !r.IsValid() {
|
|
|
return nil, fmt.Errorf("illegal country code: `%s`", p.PhoneRegion)
|
|
|
}
|
|
|
|