diff options
author | zachdriver <zach@driver.xyz> | 2017-12-20 12:52:49 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-20 12:52:49 -0800 |
commit | 691a7991f3a7f3836084df3c0ec57a6ee4f76d8a (patch) | |
tree | b7a33c39fabc453a6652b58e355e440b874d7e9d /src/main | |
parent | a2adb740d8abec507846bffb52c764e9226a7817 (diff) | |
parent | 1286317ff473265333a3809d1038aa133fd6d662 (diff) | |
download | driver-core-691a7991f3a7f3836084df3c0ec57a6ee4f76d8a.tar.gz driver-core-691a7991f3a7f3836084df3c0ec57a6ee4f76d8a.tar.bz2 driver-core-691a7991f3a7f3836084df3c0ec57a6ee4f76d8a.zip |
Merge pull request #99 from drivergroup/zsmith/ip-jsonv1.6.11
Add InetAddress JSON format
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/scala/xyz/driver/core/json.scala | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/core/json.scala b/src/main/scala/xyz/driver/core/json.scala index 313849c..e338638 100644 --- a/src/main/scala/xyz/driver/core/json.scala +++ b/src/main/scala/xyz/driver/core/json.scala @@ -1,5 +1,6 @@ package xyz.driver.core +import java.net.InetAddress import java.util.UUID import scala.reflect.runtime.universe._ @@ -143,6 +144,18 @@ object json { implicit val authCredentialsFormat = jsonFormat2(AuthCredentials) + implicit object inetAddressFormat extends JsonFormat[InetAddress] { + override def read(json: JsValue): InetAddress = json match { + case JsString(ipString) => + Try(InetAddress.getByName(ipString)) + .getOrElse(deserializationError(s"Invalid IP Address: $ipString")) + case _ => deserializationError(s"Expected string for IP Address, got $json") + } + + override def write(obj: InetAddress): JsValue = + JsString(obj.getHostAddress) + } + class EnumJsonFormat[T](mapping: (String, T)*) extends RootJsonFormat[T] { private val map = mapping.toMap |