KevinStephenson
Adding in weaviate code
b110593
raw
history blame
1.52 kB
// _ _
// __ _____ __ ___ ___ __ _| |_ ___
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \
// \ V V / __/ (_| |\ V /| | (_| | || __/
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___|
//
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved.
//
// CONTACT: [email protected]
//
package validation
import (
"fmt"
"strings"
"github.com/nyaruka/phonenumbers"
"github.com/weaviate/weaviate/entities/models"
)
func parsePhoneNumber(input, defaultCountry string) (*models.PhoneNumber, error) {
defaultCountry = strings.ToUpper(defaultCountry)
num, err := phonenumbers.Parse(input, defaultCountry)
if err != nil {
switch err {
case phonenumbers.ErrInvalidCountryCode:
return nil, fmt.Errorf("invalid phone number: invalid or missing defaultCountry - this field is optional if the specified number is in the international format, but required if the number is in national format, use ISO 3166-1 alpha-2")
default:
return nil, fmt.Errorf("invalid phone number: %v", err)
}
}
return &models.PhoneNumber{
National: num.GetNationalNumber(),
NationalFormatted: phonenumbers.Format(num, phonenumbers.NATIONAL),
InternationalFormatted: phonenumbers.Format(num, phonenumbers.INTERNATIONAL),
CountryCode: uint64(num.GetCountryCode()),
DefaultCountry: defaultCountry,
Input: input,
Valid: phonenumbers.IsValidNumber(num),
}, nil
}