aboutsummaryrefslogtreecommitdiff
path: root/common/shared/src
diff options
context:
space:
mode:
Diffstat (limited to 'common/shared/src')
-rw-r--r--common/shared/src/main/scala/ApiProtocol.scala12
-rw-r--r--common/shared/src/main/scala/Message.scala42
-rw-r--r--common/shared/src/main/scala/Templates.scala54
-rw-r--r--common/shared/src/main/scala/TextTemplates.scala64
-rw-r--r--common/shared/src/main/scala/http/Backend.scala8
-rw-r--r--common/shared/src/main/scala/http/Request.scala9
-rw-r--r--common/shared/src/main/scala/http/Response.scala6
7 files changed, 0 insertions, 195 deletions
diff --git a/common/shared/src/main/scala/ApiProtocol.scala b/common/shared/src/main/scala/ApiProtocol.scala
deleted file mode 100644
index 5d0e00a..0000000
--- a/common/shared/src/main/scala/ApiProtocol.scala
+++ /dev/null
@@ -1,12 +0,0 @@
-package triad
-
-import java.time.Instant
-import spray.json.{DerivedJsonProtocol, JsNumber, JsValue, JsonFormat}
-
-object ApiProtocol extends DerivedJsonProtocol {
- implicit val timestampFormat: JsonFormat[Instant] = new JsonFormat[Instant] {
- def read(js: JsValue) = Instant.ofEpochMilli(js.convertTo[Long])
- def write(i: Instant) = JsNumber(i.toEpochMilli)
- }
- implicit val messageFormat = jsonFormat[Message]
-}
diff --git a/common/shared/src/main/scala/Message.scala b/common/shared/src/main/scala/Message.scala
deleted file mode 100644
index 84c733e..0000000
--- a/common/shared/src/main/scala/Message.scala
+++ /dev/null
@@ -1,42 +0,0 @@
-package triad
-
-import java.security.MessageDigest
-import java.time.Instant
-
-case class Message(content: String,
- author: String,
- timestamp: Instant = Instant.now()) {
-
- lazy val id: String = {
- val digest = MessageDigest.getInstance("SHA-256")
- digest.update(content.getBytes)
- digest.update(author.getBytes)
- digest.update((timestamp.getEpochSecond & 0xff).toByte)
- digest.update(((timestamp.getEpochSecond >> 8) & 0xff).toByte)
- digest.update(((timestamp.getEpochSecond >> 16) & 0xff).toByte)
- digest.update(((timestamp.getEpochSecond >> 24) & 0xff).toByte)
- digest.update(((timestamp.getEpochSecond >> 32) & 0xff).toByte)
- digest.update(((timestamp.getEpochSecond >> 40) & 0xff).toByte)
- digest.update(((timestamp.getEpochSecond >> 48) & 0xff).toByte)
- digest.update(((timestamp.getEpochSecond >> 56) & 0xff).toByte)
- Message.bytesToHex(digest.digest())
- }
-
- def hashTags: Seq[String] =
- content.split("\\s").filter(_.startsWith("#")).map(_.drop(1))
-
-}
-
-object Message {
- private def bytesToHex(hash: Array[Byte]): String = {
- val hexString = new StringBuffer(hash.length * 2)
- var i = 0
- while (i < hash.length) {
- val hex = Integer.toHexString(0xff & hash(i))
- if (hex.length == 1) hexString.append('0')
- hexString.append(hex)
- i += 1
- }
- hexString.toString
- }
-}
diff --git a/common/shared/src/main/scala/Templates.scala b/common/shared/src/main/scala/Templates.scala
deleted file mode 100644
index 10ee116..0000000
--- a/common/shared/src/main/scala/Templates.scala
+++ /dev/null
@@ -1,54 +0,0 @@
-package triad
-
-class Templates[Builder, Output <: FragT, FragT](
- val bundle: scalatags.generic.Bundle[Builder, Output, FragT]) {
- import bundle.all._
-
- val colorStyles = List(
- "bg-primary",
- "bg-secondary",
- "bg-success",
- "bg-danger",
- "bg-warning",
- "bg-info",
- "bg-dark"
- )
- // pick a "random" style by computing a hash of arbitrary data
- def dataStyle(data: String) = {
- val dataHash = data.foldLeft(7) {
- case (hash, char) =>
- (hash * 31 + char.toInt)
- }
- colorStyles(
- ((dataHash % colorStyles.length) + colorStyles.length) % colorStyles.length)
- }
-
- def message(msg: Message) = {
- val tags = msg.hashTags.map(
- hashTag =>
- span(`class` := "badge badge-light float-right ml-1")(
- hashTag
- ))
- div(`class` := "col-xs-12 col-sm-6 col-md-3 col-lg-2")(
- div(`class` := s"card text-white mb-3 ${dataStyle(msg.author)}")(
- div(`class` := "card-header")(
- msg.author,
- tags
- ),
- div(`class` := "card-body")(
- div(`class` := "card-text")(
- msg.content
- )
- )
- )
- )
- }
-
- def conversation(messages: Seq[Message]): Tag =
- div(`class` := "container-fluid")(
- div(id := "conversation", `class` := "row")(
- for (msg <- messages.sortBy(_.timestamp)) yield message(msg)
- )
- )
-
-}
diff --git a/common/shared/src/main/scala/TextTemplates.scala b/common/shared/src/main/scala/TextTemplates.scala
deleted file mode 100644
index e7e364a..0000000
--- a/common/shared/src/main/scala/TextTemplates.scala
+++ /dev/null
@@ -1,64 +0,0 @@
-package triad
-
-object TextTemplates extends Templates(scalatags.Text) {
- import bundle.all._
-
- def scripts(js: Boolean = true) =
- if (js)
- Seq(
- div(id := "scalajs-error", style := "display: none;")(
- "ScalaJS raised an exception. See the log for more information."
- ),
- script(`type` := "text/javascript",
- src := "/assets/ui/js/ui-fastopt.js"),
- script(`type` := "text/javascript")(
- raw(
- """|document.addEventListener("DOMContentLoaded", function(event) {
- | try {
- | // root element that will contain the ScalaJS application
- | var root = document.getElementById("conversation");
- |
- | // clear any existing content
- | while (root.firstChild) {
- | root.removeChild(root.firstChild);
- | }
- |
- | // run ScalaJS application
- | console.info("Starting ScalaJS application...")
- | triad.Main().main(root)
- | } catch(ex) {
- | // display warning message in case of exception
- | document.getElementById("scalajs-error").style.display = "block";
- | throw ex;
- | }
- |});
- |""".stripMargin
- )
- )
- )
- else Seq.empty
-
- def page(messages: Seq[Message], js: Boolean = true) = html(
- head(
- link(rel := "stylesheet",
- `type` := "text/css",
- href := "/assets/lib/bootstrap-4.1.0/css/bootstrap-reboot.min.css"),
- link(rel := "stylesheet",
- `type` := "text/css",
- href := "/assets/lib/bootstrap-4.1.0/css/bootstrap-grid.min.css"),
- link(rel := "stylesheet",
- `type` := "text/css",
- href := "/assets/lib/bootstrap-4.1.0/css/bootstrap.min.css"),
- link(rel := "stylesheet",
- `type` := "text/css",
- href := "/assets/main.css"),
- meta(name := "viewport",
- content := "width=device-width, initial-scale=1, shrink-to-fit=no")
- ),
- body(
- conversation(messages),
- scripts(js)
- )
- )
-
-}
diff --git a/common/shared/src/main/scala/http/Backend.scala b/common/shared/src/main/scala/http/Backend.scala
deleted file mode 100644
index f3ce5f8..0000000
--- a/common/shared/src/main/scala/http/Backend.scala
+++ /dev/null
@@ -1,8 +0,0 @@
-package triad
-package http
-
-import scala.concurrent.Future
-
-trait Backend {
- def send(request: Request): Future[Response]
-}
diff --git a/common/shared/src/main/scala/http/Request.scala b/common/shared/src/main/scala/http/Request.scala
deleted file mode 100644
index ec7d28d..0000000
--- a/common/shared/src/main/scala/http/Request.scala
+++ /dev/null
@@ -1,9 +0,0 @@
-package triad
-package http
-
-case class Request(
- method: String,
- url: String,
- headers: Map[String, String] = Map.empty,
- body: Array[Byte] = Array.empty
-)
diff --git a/common/shared/src/main/scala/http/Response.scala b/common/shared/src/main/scala/http/Response.scala
deleted file mode 100644
index 4ba2342..0000000
--- a/common/shared/src/main/scala/http/Response.scala
+++ /dev/null
@@ -1,6 +0,0 @@
-package triad
-package http
-
-case class Response(statusCode: Int,
- headers: Map[String, String],
- body: Array[Byte])