Browse Source

server: Add Address model

scalafmt-draft
Alexis Hernandez 7 years ago
parent
commit
4be50e4fa7
  1. 32
      server/app/com/xsn/explorer/models/Address.scala

32
server/app/com/xsn/explorer/models/Address.scala

@ -0,0 +1,32 @@
package com.xsn.explorer.models
import play.api.libs.json._
class Address private (val string: String) extends AnyVal
object Address {
private val pattern = "^[a-zA-Z0-9]{34}$".r.pattern
def from(string: String): Option[Address] = {
if (pattern.matcher(string).matches()) {
Some(new Address(string))
} else {
None
}
}
implicit val reads: Reads[Address] = Reads { json =>
json.validate[String].flatMap { string =>
from(string)
.map(JsSuccess.apply(_))
.getOrElse {
JsError.apply("Invalid address")
}
}
}
implicit val writes: Writes[Address] = Writes { obj =>
JsString(obj.string)
}
}
Loading…
Cancel
Save