Cells/cells/server/src/net/okennedy/cells/CellsServer.scala

61 lines
1.5 KiB
Scala

package net.okennedy.cells
import scala.io.Source
import play.api.libs.json._
import net.okennedy.cells.WebsocketConnection
object CellsServer extends cask.MainRoutes
{
override def port: Int = 4444
var layout = new state.Canvas()
layout.addTable(rows = 5, cols = 3)
def serveResource(path: String, headers: (String,String)*): cask.Response[String] =
{
val resource =
Source.fromInputStream(
this.getClass().getClassLoader().getResourceAsStream(path)
).getLines.mkString
cask.Response.apply(
resource,
headers = headers
)
}
@cask.get("/")
def index(request: cask.Request) =
serveResource("app/index.html", "Content-Type" -> "text/html")
@cask.get("/cells.js")
def app(request: cask.Request) =
serveResource("app/cells.js", "Content-Type" -> "application/javascript")
@cask.get("/out.js.map")
def appMap(request: cask.Request) =
serveResource("app/out.js.map", "Content-Type" -> "application/javascript")
@cask.websocket("/ws")
def websocket(): cask.WebsocketResult =
{
cask.WsHandler { channel =>
val connection = WebsocketConnection.connect(channel)
cask.WsActor(connection.handle(_))
}
}
@cask.staticResources("/css",
headers = Seq("Content-Type" -> "text/css")
)
def cssResourceRoutes() = "app/css"
@cask.staticResources("/fonts",
// headers = Seq("Content-Type" -> "text/css")
)
def fontResourceRoutes() = "app/fonts"
initialize()
}