diff options
author | Sergey Nastich <sergey@driver.xyz> | 2018-03-28 13:48:02 -0400 |
---|---|---|
committer | Sergey Nastich <sergey@driver.xyz> | 2018-03-28 13:48:02 -0400 |
commit | d35332b7e67d6ae6bea3fd50b9405b554a18b491 (patch) | |
tree | b02f345abd0fb1447b171e6df81b3b3dd883bbd6 /src/main/scala | |
parent | fc6ecfe212c84271a3454617054aaf25890e886a (diff) | |
download | driver-core-d35332b7e67d6ae6bea3fd50b9405b554a18b491.tar.gz driver-core-d35332b7e67d6ae6bea3fd50b9405b554a18b491.tar.bz2 driver-core-d35332b7e67d6ae6bea3fd50b9405b554a18b491.zip |
SCALA-20 Use liphonenumber in `PhoneNumber.parse` to accomodate chinese numbers (and other countries)
Diffstat (limited to 'src/main/scala')
-rw-r--r-- | src/main/scala/xyz/driver/core/domain.scala | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/main/scala/xyz/driver/core/domain.scala b/src/main/scala/xyz/driver/core/domain.scala index 48943a7..7731345 100644 --- a/src/main/scala/xyz/driver/core/domain.scala +++ b/src/main/scala/xyz/driver/core/domain.scala @@ -1,13 +1,14 @@ package xyz.driver.core +import com.google.i18n.phonenumbers.PhoneNumberUtil import scalaz.Equal -import scalaz.syntax.equal._ import scalaz.std.string._ +import scalaz.syntax.equal._ object domain { final case class Email(username: String, domain: String) { - override def toString = username + "@" + domain + override def toString: String = username + "@" + domain } object Email { @@ -27,16 +28,13 @@ object domain { } object PhoneNumber { - def parse(phoneNumberString: String): Option[PhoneNumber] = { - val onlyDigits = phoneNumberString.replaceAll("[^\\d.]", "") - if (onlyDigits.length < 10) None - else { - val tenDigitNumber = onlyDigits.takeRight(10) - val countryCode = Option(onlyDigits.dropRight(10)).filter(_.nonEmpty).getOrElse("1") + private val phoneUtil = PhoneNumberUtil.getInstance() - Some(PhoneNumber(countryCode, tenDigitNumber)) - } + def parse(phoneNumber: String): Option[PhoneNumber] = { + val phone = phoneUtil.parseAndKeepRawInput(phoneNumber, "US") + if (!phoneUtil.isValidNumber(phone)) None + else Some(PhoneNumber(phone.getCountryCode.toString, phone.getNationalNumber.toString)) } } } |