blob: a76e83ce1fc4c4ad86765e1ea063bfeb5f90903f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package xyz.driver.core
import com.google.i18n.phonenumbers.PhoneNumberUtil
package object domain {
private val phoneUtil = PhoneNumberUtil.getInstance()
/** Enhances the PhoneNumber companion object with methods only available on the JVM. */
implicit class JvmPhoneNumber(val number: PhoneNumber.type) extends AnyVal {
def parse(phoneNumber: String): Option[PhoneNumber] = {
val phone = scala.util.Try(phoneUtil.parseAndKeepRawInput(phoneNumber, "US")).toOption
val validated = phone match {
case None => None
case Some(pn) =>
if (!phoneUtil.isValidNumber(pn)) None
else Some(pn)
}
validated.map(pn => PhoneNumber(pn.getCountryCode.toString, pn.getNationalNumber.toString))
}
}
}
|