app/lib/librato/model/Librato.scala (27 lines of code) (raw):
package lib.librato.model
import java.time.Instant
import io.lemonlabs.uri.Uri
import play.api.libs.json.{JsNumber, JsString, Json, Writes}
case class Link(
rel: String,
href: Uri,
label: Option[String] = None
)
case class Annotation(
title: String,
description: Option[String] = None,
source: Option[String] = None,
start_time: Option[Instant] = None,
end_time: Option[Instant] = None,
links: Seq[Link] = Seq.empty
)
object Annotation {
implicit val writesUri = new Writes[Uri] {
def writes(uri: Uri) = JsString(uri.toString)
}
implicit val writesLink = Json.writes[Link]
implicit val writesInstant = new Writes[Instant] {
def writes(instant: Instant) = JsNumber(instant.getEpochSecond)
}
implicit val writesAnnotation = Json.writes[Annotation]
}