aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/tracing/google/api.scala
diff options
context:
space:
mode:
authorJakob Odersky <jakob@driver.xyz>2017-10-01 20:24:02 -0700
committerJakob Odersky <jakob@driver.xyz>2017-10-01 20:24:29 -0700
commit2c08b51411be5b0cce57f876377fcd52bee99990 (patch)
treefee56a21e6a5f3d2dd459b51e5afb355db6c7f02 /src/main/scala/xyz/driver/tracing/google/api.scala
parent5bd947dd08eec1d6c64a9549566f3ce0e91fe74f (diff)
downloadtracing-2c08b51411be5b0cce57f876377fcd52bee99990.tar.gz
tracing-2c08b51411be5b0cce57f876377fcd52bee99990.tar.bz2
tracing-2c08b51411be5b0cce57f876377fcd52bee99990.zip
Flatten file hierarchy and implement OAUTH2 authentication
Diffstat (limited to 'src/main/scala/xyz/driver/tracing/google/api.scala')
-rw-r--r--src/main/scala/xyz/driver/tracing/google/api.scala111
1 files changed, 0 insertions, 111 deletions
diff --git a/src/main/scala/xyz/driver/tracing/google/api.scala b/src/main/scala/xyz/driver/tracing/google/api.scala
deleted file mode 100644
index 356e3da..0000000
--- a/src/main/scala/xyz/driver/tracing/google/api.scala
+++ /dev/null
@@ -1,111 +0,0 @@
-package xyz.driver.tracing
-package google
-
-import spray.json._
-import spray.json.DefaultJsonProtocol._
-import java.util.UUID
-import java.nio.ByteBuffer
-import java.time._
-import java.time.format._
-
-case class TraceSpan(
- spanId: Long,
- kind: TraceSpan.SpanKind,
- name: String,
- startTime: Instant,
- endTime: Instant,
- parentSpanId: Option[Long],
- labels: Map[String, String]
-)
-
-object TraceSpan {
-
- sealed trait SpanKind
- // Unspecified
- case object Unspecified extends SpanKind
- // Indicates that the span covers server-side handling of an RPC or other remote network request.
- case object RpcServer extends SpanKind
- // Indicates that the span covers the client-side wrapper around an RPC or other remote request.
- case object RpcClient extends SpanKind
-
- object SpanKind {
- implicit val format: JsonFormat[SpanKind] = new JsonFormat[SpanKind] {
- override def write(x: SpanKind): JsValue = x match {
- case Unspecified => JsString("SPAN_KIND_UNSPECIFIED")
- case RpcServer => JsString("RPC_SERVER")
- case RpcClient => JsString("RPC_CLIENT")
- }
- override def read(x: JsValue): SpanKind = x match {
- case JsString("SPAN_KIND_UNSPECIFIED") => Unspecified
- case JsString("RPC_SERVER") => RpcServer
- case JsString("RPC_CLIENT") => RpcClient
- case other =>
- spray.json.deserializationError(s"`$other` is not a valid span kind")
- }
- }
- }
-
- implicit val instantFormat = new JsonFormat[Instant] {
- val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXXZ")
- override def write(x: Instant): JsValue = JsString(formatter.format(x))
- override def read(x: JsValue): Instant = x match {
- case JsString(x) => Instant.parse(x)
- case other =>
- spray.json.deserializationError(s"`$other` is not a valid instant")
- }
- }
-
- implicit val format: JsonFormat[TraceSpan] = jsonFormat7(TraceSpan.apply)
-
- def fromSpan(span: Span) = TraceSpan(
- span.spanId.getLeastSignificantBits,
- Unspecified,
- span.name,
- span.startTime,
- span.endTime,
- span.parentSpanId.map(_.getLeastSignificantBits),
- span.labels
- )
-
-}
-
-case class Trace(
- traceId: UUID,
- projectId: String = "",
- spans: Seq[TraceSpan] = Seq.empty
-)
-
-object Trace {
-
- implicit val uuidFormat = new JsonFormat[UUID] {
- override def write(x: UUID) = {
- val buffer = ByteBuffer.allocate(16)
- buffer.putLong(x.getMostSignificantBits)
- buffer.putLong(x.getLeastSignificantBits)
- val array = buffer.array()
- val string = new StringBuilder
- for (i <- 0 until 16) {
- string ++= f"${array(i) & 0xff}%02x"
- }
- JsString(string.result)
- }
- override def read(x: JsValue): UUID = x match {
- case JsString(str) if str.length == 32 =>
- val (msb, lsb) = str.splitAt(16)
- new UUID(java.lang.Long.decode(msb), java.lang.Long.decode(lsb))
- case JsString(str) =>
- spray.json.deserializationError(
- "128-bit id string must be exactly 32 characters long")
- case other =>
- spray.json.deserializationError("expected 32 character hex string")
- }
- }
-
- implicit val format: JsonFormat[Trace] = jsonFormat3(Trace.apply)
-
-}
-
-case class Traces(traces: Seq[Trace])
-object Traces {
- implicit val format: RootJsonFormat[Traces] = jsonFormat1(Traces.apply)
-}