aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/json.scala
diff options
context:
space:
mode:
authorZach Smith <zach@driver.xyz>2017-12-20 12:34:56 -0800
committerZach Smith <zach@driver.xyz>2017-12-20 12:34:56 -0800
commit1286317ff473265333a3809d1038aa133fd6d662 (patch)
treeb7a33c39fabc453a6652b58e355e440b874d7e9d /src/main/scala/xyz/driver/core/json.scala
parenta2adb740d8abec507846bffb52c764e9226a7817 (diff)
downloaddriver-core-1286317ff473265333a3809d1038aa133fd6d662.tar.gz
driver-core-1286317ff473265333a3809d1038aa133fd6d662.tar.bz2
driver-core-1286317ff473265333a3809d1038aa133fd6d662.zip
Add InetAddress JSON format
Diffstat (limited to 'src/main/scala/xyz/driver/core/json.scala')
-rw-r--r--src/main/scala/xyz/driver/core/json.scala13
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