diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2019-09-16 12:21:10 +0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2019-09-16 12:21:33 +0800 |
commit | b83eec01c8db8a8aa499d6c498ff85987005fe83 (patch) | |
tree | 6ec439541ac8636f9a138253f413e26b35c2c194 /example | |
parent | 84ea971b1261919aca7b31635ddc7d0dca830fea (diff) | |
download | cask-b83eec01c8db8a8aa499d6c498ff85987005fe83.tar.gz cask-b83eec01c8db8a8aa499d6c498ff85987005fe83.tar.bz2 cask-b83eec01c8db8a8aa499d6c498ff85987005fe83.zip |
0.2.80.2.8
Diffstat (limited to 'example')
-rw-r--r-- | example/compress2/app/src/Compress2.scala | 4 | ||||
-rw-r--r-- | example/compress3/app/src/Compress3.scala | 4 | ||||
-rw-r--r-- | example/minimalApplication2/app/src/MinimalApplication2.scala | 4 | ||||
-rw-r--r-- | example/websockets3/app/src/Websockets3.scala | 21 | ||||
-rw-r--r-- | example/websockets3/app/test/src/ExampleTests.scala | 75 | ||||
-rw-r--r-- | example/websockets3/build.sc | 17 |
6 files changed, 116 insertions, 9 deletions
diff --git a/example/compress2/app/src/Compress2.scala b/example/compress2/app/src/Compress2.scala index b0deaa0..e6c4cc9 100644 --- a/example/compress2/app/src/Compress2.scala +++ b/example/compress2/app/src/Compress2.scala @@ -1,8 +1,6 @@ package app -import cask.util.Logger - -case class Compress2()(implicit val log: Logger) extends cask.Routes{ +case class Compress2()(implicit val log: cask.Logger) extends cask.Routes{ override def decorators = Seq(new cask.decorators.compress()) @cask.get("/") diff --git a/example/compress3/app/src/Compress3.scala b/example/compress3/app/src/Compress3.scala index 95bd851..49062a9 100644 --- a/example/compress3/app/src/Compress3.scala +++ b/example/compress3/app/src/Compress3.scala @@ -1,8 +1,6 @@ package app -import cask.util.Logger - -case class Compress3()(implicit val log: Logger) extends cask.Routes{ +case class Compress3()(implicit val log: cask.Logger) extends cask.Routes{ @cask.get("/") def hello() = { diff --git a/example/minimalApplication2/app/src/MinimalApplication2.scala b/example/minimalApplication2/app/src/MinimalApplication2.scala index 41ca55f..efe9204 100644 --- a/example/minimalApplication2/app/src/MinimalApplication2.scala +++ b/example/minimalApplication2/app/src/MinimalApplication2.scala @@ -1,8 +1,6 @@ package app -import cask.util.Logger - -case class MinimalRoutes()(implicit val log: Logger) extends cask.Routes{ +case class MinimalRoutes()(implicit val log: cask.Logger) extends cask.Routes{ @cask.get("/") def hello() = { "Hello World!" diff --git a/example/websockets3/app/src/Websockets3.scala b/example/websockets3/app/src/Websockets3.scala new file mode 100644 index 0000000..8368e0d --- /dev/null +++ b/example/websockets3/app/src/Websockets3.scala @@ -0,0 +1,21 @@ +package app + +case class Websockets3()(implicit val log: cask.Logger) extends cask.Routes{ + @cask.websocket("/connect/:userName") + def showUserProfile(userName: String): cask.WebsocketResult = { + if (userName != "haoyi") cask.Response("", statusCode = 403) + else cask.WsHandler { channel => + cask.WsActor { + case cask.WsActor.Text("") => channel.send(cask.WsActor.Close()) + case cask.WsActor.Text(data) => + channel.send(cask.WsActor.Text(userName + " " + data)) + } + } + } + + initialize() +} + +object Websockets3Main extends cask.Main{ + val allRoutes = Seq(Websockets3()) +} diff --git a/example/websockets3/app/test/src/ExampleTests.scala b/example/websockets3/app/test/src/ExampleTests.scala new file mode 100644 index 0000000..a595c4c --- /dev/null +++ b/example/websockets3/app/test/src/ExampleTests.scala @@ -0,0 +1,75 @@ +package app + +import java.util.concurrent.atomic.AtomicInteger + +import org.asynchttpclient.ws.{WebSocket, WebSocketListener, WebSocketUpgradeHandler} +import utest._ + +object ExampleTests extends TestSuite{ + + + def withServer[T](example: cask.main.Main)(f: String => T): T = { + val server = io.undertow.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{ + test("Websockets") - withServer(Websockets3Main){ host => + @volatile var out = List.empty[String] + val client = org.asynchttpclient.Dsl.asyncHttpClient(); + try{ + + // 4. open websocket + val ws: WebSocket = client.prepareGet("ws://localhost:8080/connect/haoyi") + .execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener( + new WebSocketListener() { + + override def onTextFrame(payload: String, finalFragment: Boolean, rsv: Int) { + out = payload :: out + } + + def onOpen(websocket: WebSocket) = () + + def onClose(websocket: WebSocket, code: Int, reason: String) = () + + def onError(t: Throwable) = () + }).build() + ).get() + + // 5. send messages + ws.sendTextFrame("hello") + ws.sendTextFrame("world") + ws.sendTextFrame("") + Thread.sleep(100) + out ==> List("haoyi world", "haoyi hello") + + var error: String = "" + val cli2 = client.prepareGet("ws://localhost:8080/connect/nobody") + .execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener( + new WebSocketListener() { + + def onOpen(websocket: WebSocket) = () + + def onClose(websocket: WebSocket, code: Int, reason: String) = () + + def onError(t: Throwable) = { + error = t.toString + } + }).build() + ).get() + + assert(error.contains("403")) + + } finally{ + client.close() + } + } + } +} diff --git a/example/websockets3/build.sc b/example/websockets3/build.sc new file mode 100644 index 0000000..197e285 --- /dev/null +++ b/example/websockets3/build.sc @@ -0,0 +1,17 @@ +import mill._, scalalib._ + + +trait AppModule extends ScalaModule{ + def scalaVersion = "2.13.0" + def ivyDeps = Agg[Dep]( + ) + object test extends Tests{ + def testFrameworks = Seq("utest.runner.Framework") + + def ivyDeps = Agg( + ivy"com.lihaoyi::utest::0.7.1", + ivy"com.lihaoyi::requests::0.2.0", + ivy"org.asynchttpclient:async-http-client:2.5.2" + ) + } +}
\ No newline at end of file |