diff options
Diffstat (limited to 'examples/crossBuilds/clientserver2/jvm')
3 files changed, 81 insertions, 0 deletions
diff --git a/examples/crossBuilds/clientserver2/jvm/shared/main/scala/simple/Simple.scala b/examples/crossBuilds/clientserver2/jvm/shared/main/scala/simple/Simple.scala new file mode 100644 index 0000000..d3b0278 --- /dev/null +++ b/examples/crossBuilds/clientserver2/jvm/shared/main/scala/simple/Simple.scala @@ -0,0 +1,7 @@ +/*shared/main/scala/simple/Simple.scala*/ +package simple +object Simple{ + def formatTimes(timestamps: Seq[Long]): String = { + timestamps.map(Platform.format).mkString("\n") + } +}
\ No newline at end of file diff --git a/examples/crossBuilds/clientserver2/jvm/shared/test/scala/simple/SimpleTest.scala b/examples/crossBuilds/clientserver2/jvm/shared/test/scala/simple/SimpleTest.scala new file mode 100644 index 0000000..ec6b29f --- /dev/null +++ b/examples/crossBuilds/clientserver2/jvm/shared/test/scala/simple/SimpleTest.scala @@ -0,0 +1,13 @@ +/*js/shared/test/scala/simple/SimpleTest.scala*/ +/*jvm/shared/test/scala/simple/SimpleTest.scala*/ +package simple +import utest._ +object SimpleTest extends TestSuite{ + val tests = TestSuite{ + 'format{ + 'nil - assert(Simple.formatTimes(Nil) == "") + 'timeZero - assert( + Simple.formatTimes(Seq(0)) == "December 31, 1969 4:00:00 PM PST") + } + } +}
\ No newline at end of file diff --git a/examples/crossBuilds/clientserver2/jvm/src/main/scala/simple/Platform.scala b/examples/crossBuilds/clientserver2/jvm/src/main/scala/simple/Platform.scala new file mode 100644 index 0000000..f4ef986 --- /dev/null +++ b/examples/crossBuilds/clientserver2/jvm/src/main/scala/simple/Platform.scala @@ -0,0 +1,61 @@ +//jvm/src/main/scala/simple/Platform.scala +package simple + +import java.text.SimpleDateFormat +import akka.actor.ActorSystem +import spray.http.{HttpEntity, MediaTypes} +import spray.routing.SimpleRoutingApp +import scalatags.Text.all._ + +object Static{ + val msg = Simple.formatTimes(Seq(0, 1 << 30)) + val boot = + "Platform().main(document.getElementById('contents'))" + val page = html( + head( + script(src:="/js-fastopt.js") + ), + body( + onload:=boot, + div(id:="contents")( + h1("Hello from Scala-JVM!"), + p(msg) + ) + ) + ) +} +object Platform extends SimpleRoutingApp{ + def format(ts: Long) = { + val fmt = + "MMMM d, yyyy h:mm:ss aaa z" + new SimpleDateFormat(fmt).format( + new java.util.Date(ts) + ) + } + + def main(args: Array[String]): Unit = { + implicit val system = ActorSystem() + startServer("localhost", port = 8080){ + get{ + pathSingleSlash{ + complete{ + HttpEntity( + MediaTypes.`text/html`, + Static.page.render + ) + } + } ~ + getFromResourceDirectory("") + } ~ + post{ + path("formatDates"){ + extract(_.request.entity.asString) { e => + complete { + Simple.formatTimes(upickle.read[Seq[Long]](e)) + } + } + } + } + } + } +}
\ No newline at end of file |