app/model/PhoneNumber.scala (17 lines of code) (raw):
package model
import com.google.i18n.phonenumbers.PhoneNumberUtil
import com.okta.sdk.resource.model.User as OktaUser
import utils.StringHelper.nonNullNonEmpty
import scala.util.Try
case class PhoneNumber(countryCode: Int, localNumber: String)
object PhoneNumber {
private val phoneUtil = PhoneNumberUtil.getInstance
def fromOktaUser(oktaUser: OktaUser): Option[PhoneNumber] =
nonNullNonEmpty(oktaUser.getProfile.getPrimaryPhone).flatMap(phoneNumber =>
fromPhoneNumberString(phoneNumber, nonNullNonEmpty(oktaUser.getProfile.getCountryCode))
)
def fromPhoneNumberString(s: String, countryCode: Option[String]): Option[PhoneNumber] =
Try(phoneUtil.parse(s, countryCode.orNull)).toOption.flatMap(phoneNumber =>
Some(PhoneNumber(phoneNumber.getCountryCode, phoneNumber.getNationalNumber.toString))
)
}