summaryrefslogtreecommitdiff
path: root/example/formJsonPost
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-08-12 22:18:39 +0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-08-12 22:18:39 +0800
commitfd9c399db8c1c0d86cc65d5e1c41968b42a813d1 (patch)
tree8e8fc2875cb1c26f309384a9ca0ad72e1fa893f3 /example/formJsonPost
parent9bf8c31fa9321558d7d02f6a5b687cd55a924e7f (diff)
downloadcask-fd9c399db8c1c0d86cc65d5e1c41968b42a813d1.tar.gz
cask-fd9c399db8c1c0d86cc65d5e1c41968b42a813d1.tar.bz2
cask-fd9c399db8c1c0d86cc65d5e1c41968b42a813d1.zip
auto-upload examples
Diffstat (limited to 'example/formJsonPost')
-rw-r--r--example/formJsonPost/app/src/FormJsonPost.scala19
-rw-r--r--example/formJsonPost/app/test/src/ExampleTests.scala39
-rw-r--r--example/formJsonPost/build.sc18
3 files changed, 76 insertions, 0 deletions
diff --git a/example/formJsonPost/app/src/FormJsonPost.scala b/example/formJsonPost/app/src/FormJsonPost.scala
new file mode 100644
index 0000000..3714f39
--- /dev/null
+++ b/example/formJsonPost/app/src/FormJsonPost.scala
@@ -0,0 +1,19 @@
+package app
+object FormJsonPost extends cask.MainRoutes{
+ @cask.postJson("/json")
+ def jsonEndpoint(value1: ujson.Js.Value, value2: Seq[Int]) = {
+ "OK " + value1 + " " + value2
+ }
+
+ @cask.postForm("/form")
+ def formEndpoint(value1: cask.FormValue, value2: Seq[Int]) = {
+ "OK " + value1 + " " + value2
+ }
+
+ @cask.postForm("/upload")
+ def uploadFile(image: cask.FormFile) = {
+ image.fileName
+ }
+
+ initialize()
+}
diff --git a/example/formJsonPost/app/test/src/ExampleTests.scala b/example/formJsonPost/app/test/src/ExampleTests.scala
new file mode 100644
index 0000000..137a978
--- /dev/null
+++ b/example/formJsonPost/app/test/src/ExampleTests.scala
@@ -0,0 +1,39 @@
+package app
+import io.undertow.Undertow
+
+import utest._
+
+object ExampleTests extends TestSuite{
+ def test[T](example: cask.main.BaseMain)(f: String => T): T = {
+ val server = Undertow.builder
+ .addHttpListener(8080, "localhost")
+ .setHandler(example.defaultHandler)
+ .build
+ server.start()
+ val res =
+ try f("http://localhost:8080")
+ finally server.stop()
+ res
+ }
+
+ val tests = Tests{
+ 'FormJsonPost - test(FormJsonPost){ host =>
+ requests.post(s"$host/json", data = """{"value1": true, "value2": [3]}""").text() ==>
+ "OK true Vector(3)"
+
+ requests.post(
+ s"$host/form",
+ data = Seq("value1" -> "hello", "value2" -> "1", "value2" -> "2")
+ ).text() ==>
+ "OK FormValue(hello,null) List(1, 2)"
+
+ val resp = requests.post(
+ s"$host/upload",
+ data = requests.MultiPart(
+ requests.MultiItem("image", "...", "my-best-image.txt")
+ )
+ )
+ resp.text() ==> "my-best-image.txt"
+ }
+ }
+}
diff --git a/example/formJsonPost/build.sc b/example/formJsonPost/build.sc
new file mode 100644
index 0000000..6b3ab3f
--- /dev/null
+++ b/example/formJsonPost/build.sc
@@ -0,0 +1,18 @@
+import mill._, scalalib._
+
+
+trait AppModule extends ScalaModule{
+ def scalaVersion = "2.12.6"
+ def ivyDeps = Agg(
+ ivy"com.lihaoyi::cask:0.0.1",
+ )
+
+ object test extends Tests{
+ def testFrameworks = Seq("utest.runner.Framework")
+ def forkArgs = Seq("--illegal-access=deny")
+ def ivyDeps = Agg(
+ ivy"com.lihaoyi::utest::0.6.3",
+ ivy"com.lihaoyi::requests::0.1.2",
+ )
+ }
+} \ No newline at end of file