in phonenumbers.go [2039:2087]
func getNumberTypeHelper(nationalNumber string, metadata *PhoneMetadata) PhoneNumberType {
if !isNumberMatchingDesc(nationalNumber, metadata.GetGeneralDesc()) {
return UNKNOWN
}
if isNumberMatchingDesc(nationalNumber, metadata.GetPremiumRate()) {
return PREMIUM_RATE
}
if isNumberMatchingDesc(nationalNumber, metadata.GetTollFree()) {
return TOLL_FREE
}
if isNumberMatchingDesc(nationalNumber, metadata.GetSharedCost()) {
return SHARED_COST
}
if isNumberMatchingDesc(nationalNumber, metadata.GetVoip()) {
return VOIP
}
if isNumberMatchingDesc(nationalNumber, metadata.GetPersonalNumber()) {
return PERSONAL_NUMBER
}
if isNumberMatchingDesc(nationalNumber, metadata.GetPager()) {
return PAGER
}
if isNumberMatchingDesc(nationalNumber, metadata.GetUan()) {
return UAN
}
if isNumberMatchingDesc(nationalNumber, metadata.GetVoicemail()) {
return VOICEMAIL
}
var isFixedLine = isNumberMatchingDesc(
nationalNumber, metadata.GetFixedLine())
if isFixedLine {
if metadata.GetSameMobileAndFixedLinePattern() {
return FIXED_LINE_OR_MOBILE
} else if isNumberMatchingDesc(nationalNumber, metadata.GetMobile()) {
return FIXED_LINE_OR_MOBILE
}
return FIXED_LINE
}
// Otherwise, test to see if the number is mobile. Only do this if
// certain that the patterns for mobile and fixed line aren't the same.
if !metadata.GetSameMobileAndFixedLinePattern() &&
isNumberMatchingDesc(nationalNumber, metadata.GetMobile()) {
return MOBILE
}
return UNKNOWN
}