61 lines
1.5 KiB
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()
|
|
} |