diff --git a/build.sc b/build.sc index ddac7516b4..907efd27dc 100644 --- a/build.sc +++ b/build.sc @@ -49,7 +49,7 @@ object cask extends CaskModule { def ivyDeps = Agg( ivy"org.scala-lang:scala-reflect:${scalaVersion()}", ivy"io.undertow:undertow-core:2.0.13.Final", - ivy"com.lihaoyi::upickle:1.1.0" + ivy"com.lihaoyi::upickle:1.2.0" ) def compileIvyDeps = Agg(ivy"com.lihaoyi::acyclic:0.2.0") def scalacOptions = Seq("-P:acyclic:force") @@ -69,7 +69,7 @@ object cask extends CaskModule { def ivyDeps = Agg( ivy"com.lihaoyi::sourcecode:0.2.1", ivy"com.lihaoyi::pprint:0.5.9", - ivy"com.lihaoyi::geny:0.6.0" + ivy"com.lihaoyi::geny:0.6.2" ) } @@ -77,14 +77,14 @@ object cask extends CaskModule { def platformSegment = "js" def scalaJSVersion = "0.6.33" def ivyDeps = super.ivyDeps() ++ Agg( - ivy"com.lihaoyi::castor::0.1.1", + ivy"com.lihaoyi::castor::0.1.4", ivy"org.scala-js::scalajs-dom::0.9.7" ) } object jvm extends UtilModule{ def platformSegment = "jvm" def ivyDeps = super.ivyDeps() ++ Agg( - ivy"com.lihaoyi::castor::0.1.3", + ivy"com.lihaoyi::castor::0.1.4", ivy"org.java-websocket:Java-WebSocket:1.4.0" ) } @@ -95,7 +95,7 @@ object cask extends CaskModule { def testFrameworks = Seq("utest.runner.Framework") def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2" + ivy"com.lihaoyi::requests::0.6.5" ) } } diff --git a/cask/src/cask/main/Main.scala b/cask/src/cask/main/Main.scala index d71df9c631..edf30ec916 100644 --- a/cask/src/cask/main/Main.scala +++ b/cask/src/cask/main/Main.scala @@ -1,5 +1,7 @@ package cask.main +import java.util.concurrent.Executors + import cask.endpoints.{WebsocketResult, WsHandler} import cask.model._ import cask.internal.{DispatchTrie, Util} @@ -11,6 +13,8 @@ import io.undertow.server.{HttpHandler, HttpServerExchange} import io.undertow.server.handlers.BlockingHandler import io.undertow.util.HttpString +import scala.concurrent.ExecutionContext + /** * A combination of [[cask.Main]] and [[cask.Routes]], ideal for small * one-file web applications. @@ -33,6 +37,12 @@ abstract class Main{ def host: String = "localhost" def debugMode: Boolean = true + def createExecutionContext = castor.Context.Simple.executionContext + def createActorContext = new castor.Context.Simple(executionContext, log.exception) + + val executionContext = createExecutionContext + implicit val actorContext = createActorContext + implicit def log = new cask.util.Logger.Console() def routeTries = Main.prepareRouteTries(allRoutes) diff --git a/cask/src/cask/main/Routes.scala b/cask/src/cask/main/Routes.scala index 7b609ee00e..93200860d5 100644 --- a/cask/src/cask/main/Routes.scala +++ b/cask/src/cask/main/Routes.scala @@ -7,10 +7,7 @@ import language.experimental.macros trait Routes{ def decorators = Seq.empty[cask.router.Decorator[_, _, _]] - implicit val actorContext = new castor.Context.Simple( - concurrent.ExecutionContext.Implicits.global, - log.exception - ) + implicit def actorContext: castor.Context private[this] var metadata0: RoutesEndpointsMetadata[this.type] = null def caskMetadata = if (metadata0 != null) metadata0 diff --git a/example/compress/build.sc b/example/compress/build.sc index 0fa3a1e3a5..b6dfa374d8 100644 --- a/example/compress/build.sc +++ b/example/compress/build.sc @@ -11,7 +11,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/compress2/app/src/Compress2.scala b/example/compress2/app/src/Compress2.scala index e6c4cc9109..4bb84b6953 100644 --- a/example/compress2/app/src/Compress2.scala +++ b/example/compress2/app/src/Compress2.scala @@ -1,6 +1,7 @@ package app -case class Compress2()(implicit val log: cask.Logger) extends cask.Routes{ +case class Compress2()(implicit val actorContext: castor.Context, + val log: cask.Logger) extends cask.Routes{ override def decorators = Seq(new cask.decorators.compress()) @cask.get("/") diff --git a/example/compress2/build.sc b/example/compress2/build.sc index 74e69eaa32..9448e461f0 100644 --- a/example/compress2/build.sc +++ b/example/compress2/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/compress3/app/src/Compress3.scala b/example/compress3/app/src/Compress3.scala index 49062a916c..466e52ef27 100644 --- a/example/compress3/app/src/Compress3.scala +++ b/example/compress3/app/src/Compress3.scala @@ -1,6 +1,7 @@ package app -case class Compress3()(implicit val log: cask.Logger) extends cask.Routes{ +case class Compress3()(implicit val actorContext: castor.Context, + val log: cask.Logger) extends cask.Routes{ @cask.get("/") def hello() = { diff --git a/example/compress3/build.sc b/example/compress3/build.sc index 74e69eaa32..9448e461f0 100644 --- a/example/compress3/build.sc +++ b/example/compress3/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/cookies/build.sc b/example/cookies/build.sc index 74e69eaa32..9448e461f0 100644 --- a/example/cookies/build.sc +++ b/example/cookies/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/decorated/build.sc b/example/decorated/build.sc index 74e69eaa32..9448e461f0 100644 --- a/example/decorated/build.sc +++ b/example/decorated/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/decorated2/build.sc b/example/decorated2/build.sc index 74e69eaa32..9448e461f0 100644 --- a/example/decorated2/build.sc +++ b/example/decorated2/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/endpoints/build.sc b/example/endpoints/build.sc index 74e69eaa32..9448e461f0 100644 --- a/example/endpoints/build.sc +++ b/example/endpoints/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/formJsonPost/build.sc b/example/formJsonPost/build.sc index 8fcdd8e483..d60a6aa9e3 100644 --- a/example/formJsonPost/build.sc +++ b/example/formJsonPost/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2" + ivy"com.lihaoyi::requests::0.6.5" ) } } \ No newline at end of file diff --git a/example/httpMethods/build.sc b/example/httpMethods/build.sc index 74e69eaa32..9448e461f0 100644 --- a/example/httpMethods/build.sc +++ b/example/httpMethods/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/minimalApplication/build.sc b/example/minimalApplication/build.sc index 74e69eaa32..9448e461f0 100644 --- a/example/minimalApplication/build.sc +++ b/example/minimalApplication/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/minimalApplication2/app/src/MinimalApplication2.scala b/example/minimalApplication2/app/src/MinimalApplication2.scala index 267f22f1cc..52468d7d70 100644 --- a/example/minimalApplication2/app/src/MinimalApplication2.scala +++ b/example/minimalApplication2/app/src/MinimalApplication2.scala @@ -1,6 +1,7 @@ package app -case class MinimalRoutes()(implicit val log: cask.Logger) extends cask.Routes{ +case class MinimalRoutes()(implicit val actorContext: castor.Context, + val log: cask.Logger) extends cask.Routes{ @cask.get("/") def hello() = { "Hello World!" diff --git a/example/minimalApplication2/build.sc b/example/minimalApplication2/build.sc index 74e69eaa32..9448e461f0 100644 --- a/example/minimalApplication2/build.sc +++ b/example/minimalApplication2/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/redirectAbort/build.sc b/example/redirectAbort/build.sc index 74e69eaa32..9448e461f0 100644 --- a/example/redirectAbort/build.sc +++ b/example/redirectAbort/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/scalatags/build.sc b/example/scalatags/build.sc index 28c92b5a08..9b6be3aaf7 100644 --- a/example/scalatags/build.sc +++ b/example/scalatags/build.sc @@ -12,7 +12,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/staticFiles/build.sc b/example/staticFiles/build.sc index eba5901f5a..cdcbf7753d 100644 --- a/example/staticFiles/build.sc +++ b/example/staticFiles/build.sc @@ -12,7 +12,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) def forkWorkingDir = build.millSourcePath diff --git a/example/staticFiles2/build.sc b/example/staticFiles2/build.sc index eba5901f5a..cdcbf7753d 100644 --- a/example/staticFiles2/build.sc +++ b/example/staticFiles2/build.sc @@ -12,7 +12,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) def forkWorkingDir = build.millSourcePath diff --git a/example/todo/build.sc b/example/todo/build.sc index bca4a9cf96..97bc05b6ab 100644 --- a/example/todo/build.sc +++ b/example/todo/build.sc @@ -14,7 +14,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/todoApi/build.sc b/example/todoApi/build.sc index 74e69eaa32..9448e461f0 100644 --- a/example/todoApi/build.sc +++ b/example/todoApi/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/todoDb/build.sc b/example/todoDb/build.sc index 911d436f6a..9c2cb87f0c 100644 --- a/example/todoDb/build.sc +++ b/example/todoDb/build.sc @@ -13,7 +13,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/twirl/build.sc b/example/twirl/build.sc index a791c1fd6c..33941a6ebc 100644 --- a/example/twirl/build.sc +++ b/example/twirl/build.sc @@ -16,7 +16,7 @@ trait AppModule extends ScalaModule with mill.twirllib.TwirlModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/variableRoutes/build.sc b/example/variableRoutes/build.sc index 74e69eaa32..9448e461f0 100644 --- a/example/variableRoutes/build.sc +++ b/example/variableRoutes/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ) } } \ No newline at end of file diff --git a/example/websockets/build.sc b/example/websockets/build.sc index a5483e531a..8bcb737834 100644 --- a/example/websockets/build.sc +++ b/example/websockets/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ivy"org.asynchttpclient:async-http-client:2.5.2" ) } diff --git a/example/websockets2/build.sc b/example/websockets2/build.sc index a5483e531a..8bcb737834 100644 --- a/example/websockets2/build.sc +++ b/example/websockets2/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ivy"org.asynchttpclient:async-http-client:2.5.2" ) } diff --git a/example/websockets3/app/src/Websockets3.scala b/example/websockets3/app/src/Websockets3.scala index 030c924b14..07349e8698 100644 --- a/example/websockets3/app/src/Websockets3.scala +++ b/example/websockets3/app/src/Websockets3.scala @@ -1,6 +1,7 @@ package app -case class Websockets3()(implicit val log: cask.Logger) extends cask.Routes{ +case class Websockets3()(implicit val actorContext: castor.Context, + val log: cask.Logger) extends cask.Routes{ @cask.websocket("/connect/:userName") def showUserProfile(userName: String): cask.WebsocketResult = { if (userName != "haoyi") cask.Response("", statusCode = 403) diff --git a/example/websockets3/build.sc b/example/websockets3/build.sc index a5483e531a..8bcb737834 100644 --- a/example/websockets3/build.sc +++ b/example/websockets3/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ivy"org.asynchttpclient:async-http-client:2.5.2" ) } diff --git a/example/websockets4/app/src/Websockets4.scala b/example/websockets4/app/src/Websockets4.scala index 83c4f980a3..6707df1fda 100644 --- a/example/websockets4/app/src/Websockets4.scala +++ b/example/websockets4/app/src/Websockets4.scala @@ -1,6 +1,7 @@ package app -case class Websockets4()(implicit val log: cask.Logger) extends cask.Routes{ +case class Websockets4()(implicit val actorContext: castor.Context, + val log: cask.Logger) extends cask.Routes{ // make sure compress decorator passes non-requests through correctly override def decorators = Seq(new cask.decorators.compress()) @cask.websocket("/connect/:userName") diff --git a/example/websockets4/build.sc b/example/websockets4/build.sc index a5483e531a..8bcb737834 100644 --- a/example/websockets4/build.sc +++ b/example/websockets4/build.sc @@ -10,7 +10,7 @@ trait AppModule extends ScalaModule{ def ivyDeps = Agg( ivy"com.lihaoyi::utest::0.7.4", - ivy"com.lihaoyi::requests::0.6.2", + ivy"com.lihaoyi::requests::0.6.5", ivy"org.asynchttpclient:async-http-client:2.5.2" ) } diff --git a/readme.md b/readme.md index da415f71a3..ea837d62cc 100644 --- a/readme.md +++ b/readme.md @@ -38,6 +38,20 @@ courtesy of EJ Technologies ## Changelog +### 0.7.0 + +- Make Cask `actorContext` explicitly passed into every Routes case class + +### 0.6.5 + +- Add support for `geny.Writable#httpContentType` and + `geny.Writable#contentLength` + +### 0.5.7 + +- Add endpoints for `delete` and `patch` +- Allow arbitrary HTTP methods + ### 0.5.2 - Bump uPickle, Requests versions