aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/bridgeuploadqueue.scala
diff options
context:
space:
mode:
authorKseniya Tomskikh <ktomskih@datamonsters.co>2017-08-14 14:15:14 +0600
committerKseniya Tomskikh <ktomskih@datamonsters.co>2017-08-14 14:15:14 +0600
commit442579b27ccbac82cb001a5b02402a593d005977 (patch)
treed11a24bd97d847fd29282fd7bcb79742553d6389 /src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/bridgeuploadqueue.scala
parentbfac6a54dcf37e0280cc8f2ec6ff3802dc8e8dfe (diff)
downloadrest-query-442579b27ccbac82cb001a5b02402a593d005977.tar.gz
rest-query-442579b27ccbac82cb001a5b02402a593d005977.tar.bz2
rest-query-442579b27ccbac82cb001a5b02402a593d005977.zip
PDSUI-2188 Created tests for export and dictionary API
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/bridgeuploadqueue.scala')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/bridgeuploadqueue.scala68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/bridgeuploadqueue.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/bridgeuploadqueue.scala
new file mode 100644
index 0000000..77fb4d2
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/bridgeuploadqueue.scala
@@ -0,0 +1,68 @@
+package xyz.driver.pdsuidomain.formats.json.sprayformats
+
+import java.time.LocalDateTime
+
+import spray.json._
+import xyz.driver.pdsuicommon.concurrent.BridgeUploadQueue
+import xyz.driver.pdsuicommon.concurrent.BridgeUploadQueue.Item
+
+object bridgeuploadqueue {
+ import DefaultJsonProtocol._
+ import common._
+
+ implicit val queueUploadItemFormat: RootJsonFormat[BridgeUploadQueue.Item] = new RootJsonFormat[Item] {
+ override def write(obj: Item) =
+ JsObject(
+ "kind" -> obj.kind.toJson,
+ "tag" -> obj.tag.toJson,
+ "created" -> obj.created.toJson,
+ "attempts" -> obj.attempts.toJson,
+ "nextAttempt" -> obj.nextAttempt.toJson,
+ "completed" -> obj.completed.toJson
+ )
+
+ override def read(json: JsValue): Item = json match {
+ case JsObject(fields) =>
+ val kind = fields
+ .get("kind")
+ .map(_.convertTo[String])
+ .getOrElse(deserializationError(s"BridgeUploadQueue.Item json object does not contain `kind` field: $json"))
+
+ val tag = fields
+ .get("tag")
+ .map(_.convertTo[String])
+ .getOrElse(deserializationError(s"BridgeUploadQueue.Item json object does not contain `tag` field: $json"))
+
+ val created = fields
+ .get("created")
+ .map(_.convertTo[LocalDateTime])
+ .getOrElse(
+ deserializationError(s"BridgeUploadQueue.Item json object does not contain `created` field: $json"))
+
+ val attempts = fields
+ .get("attempts")
+ .map(_.convertTo[Int])
+ .getOrElse(
+ deserializationError(s"BridgeUploadQueue.Item json object does not contain `attempts` field: $json"))
+
+ val nextAttempt = fields
+ .get("nextAttempt")
+ .map(_.convertTo[LocalDateTime])
+ .getOrElse(
+ deserializationError(s"BridgeUploadQueue.Item json object does not contain `nextAttempt` field: $json"))
+
+ BridgeUploadQueue.Item(
+ kind = kind,
+ tag = tag,
+ created = created,
+ attempts = attempts,
+ nextAttempt = nextAttempt,
+ completed = true,
+ dependencyKind = None,
+ dependencyTag = None
+ )
+
+ case _ => deserializationError(s"Expected Json Object as BridgeUploadQueue.Item, but got $json")
+ }
+ }
+}