LiveApp

io.eezo.live.LiveApp
trait LiveApp extends HttpApp

The live layer, mixed into an http-layer application: everything Live.mount needs on the server, contributed through frameworkRoutes so every way of serving — boot's default, an overridden boot calling serve, dev — carries it without knowing.

The umbrella's EezoApp extends this, so an application on eezo mounts components with no configuration at all. An application on eezo-http alone opts in by writing extends LiveApp instead of extends HttpApp. The cost when unused is one WebSocket route, one script route, and an idle registry.

Attributes

Source
LiveApp.scala
Graph
Supertypes
trait HttpApp
trait Dispatch
class Object
trait Matchable
class Any
Known subtypes
trait EezoApp

Members list

Value members

Concrete methods

protected def allowedOrigins: Set[String]

Origins other than the server's own whose pages may open a live socket, each written scheme://host or scheme://host:port. Empty by default, because the page and its socket come from the same server unless something in between rewrites the Host the browser asked for. That something is usually a proxy, and forwarding the browser's Host is the better fix; this list is for when it cannot. Matching is exact, with no wildcard, since a pattern that admits a subdomain admits whoever controls that subdomain. An entry that is not an origin fails the boot.

Origins other than the server's own whose pages may open a live socket, each written scheme://host or scheme://host:port. Empty by default, because the page and its socket come from the same server unless something in between rewrites the Host the browser asked for. That something is usually a proxy, and forwarding the browser's Host is the better fix; this list is for when it cannot. Matching is exact, with no wildcard, since a pattern that admits a subdomain admits whoever controls that subdomain. An entry that is not an origin fails the boot.

Attributes

Source
LiveApp.scala
override protected def frameworkRoutes: Seq[Route]

Routes the framework itself contributes, appended to whatever table serve is given so that every caller — boot's default, a user's own serve in an overridden boot, dev — serves them without knowing they exist. Empty here: eezo-live's LiveApp overrides it with the live socket and its client script, and EezoApp mixes that in. Appended, so the user's table keeps winning any path both name; they show in the boot listing (they are served, and the listing does not lie) but not in eezo routes, which is the user's table.

Routes the framework itself contributes, appended to whatever table serve is given so that every caller — boot's default, a user's own serve in an overridden boot, dev — serves them without knowing they exist. Empty here: eezo-live's LiveApp overrides it with the live socket and its client script, and EezoApp mixes that in. Appended, so the user's table keeps winning any path both name; they show in the boot listing (they are served, and the listing does not lie) but not in eezo routes, which is the user's table.

Attributes

Definition Classes
Source
LiveApp.scala

Inherited methods

def boot(): Unit

The application. The default serves routes on port, which is what makes the minimal application one override and nothing else. Override it for anything more: background work, another setup, no server at all.

The application. The default serves routes on port, which is what makes the minimal application one override and nothing else. Override it for anything more: background work, another setup, no server at all.

Attributes

Inherited from:
HttpApp
Source
HttpApp.scala
override protected def commands: PartialFunction[List[String], Int]

The commands this application answers, as first argument :: rest. Nil is program and is answered here, once, so no layer owns it. Each layer writes own orElse super.commands for its own commands, so the later mixin's arms are consulted first.

The commands this application answers, as first argument :: rest. Nil is program and is answered here, once, so no layer owns it. Each layer writes own orElse super.commands for its own commands, so the later mixin's arms are consulted first.

Attributes

Definition Classes
Inherited from:
HttpApp
Source
HttpApp.scala
protected def devServer(): Unit

What dev serves. The umbrella overrides it to run the drift check first and serve the drift page when the check blocks.

What dev serves. The umbrella overrides it to run the drift check first and serve the drift page when the check blocks.

Attributes

Inherited from:
HttpApp
Source
HttpApp.scala
def layout: Layout

The frame every HTML reply comes back in, the derived pages, the login page and the error page included. eezo's plain one unless the application names its own here, which is the one place a frame can be chosen, so that no route has to remember to ask for it.

The frame every HTML reply comes back in, the derived pages, the login page and the error page included. eezo's plain one unless the application names its own here, which is the one place a frame can be chosen, so that no route has to remember to ask for it.

Attributes

Inherited from:
HttpApp
Source
HttpApp.scala
final def main(args: Array[String]): Unit

Attributes

Inherited from:
Dispatch
Source
Dispatch.scala
def maxBodySize: Long

The request body cap, and the WebSocket text message cap with it.

The request body cap, and the WebSocket text message cap with it.

Attributes

Inherited from:
HttpApp
Source
HttpApp.scala
def port: Int

Where boot's default and the dev command serve.

Where boot's default and the dev command serve.

Attributes

Inherited from:
HttpApp
Source
HttpApp.scala
def problems: PartialFunction[Throwable, Problem]

How the application's own failures are answered: a partial function from what a handler threw to the problem the client sees. What it does not cover, the boundary answers as 500.

How the application's own failures are answered: a partial function from what a handler threw to the problem the client sees. What it does not cover, the boundary answers as 500.

Attributes

Inherited from:
HttpApp
Source
HttpApp.scala
protected def program(): Unit

What sbt run does on this layer alone: boot, under nothing. The umbrella overrides it to run the same boot under the database layer's lifecycle, the way it overrides devServer. No override here, deliberately: see Dispatch.program.

What sbt run does on this layer alone: boot, under nothing. The umbrella overrides it to run the same boot under the database layer's lifecycle, the way it overrides devServer. No override here, deliberately: see Dispatch.program.

Attributes

Inherited from:
HttpApp
Source
HttpApp.scala
def secret: Secret

The key the session cookie is signed with. EEZO_SECRET by default. The sbt plugin's dev loop sets it to one secret per sbt session, so a restart on edit keeps the developer signed in. A run outside that loop with nothing set gets a throwaway announced at WARNING, so that hello runs with no configuration and a deployment that forgot is told. Read once, when serve boots.

The key the session cookie is signed with. EEZO_SECRET by default. The sbt plugin's dev loop sets it to one secret per sbt session, so a restart on edit keeps the developer signed in. A run outside that loop with nothing set gets a throwaway announced at WARNING, so that hello runs with no configuration and a deployment that forgot is told. Read once, when serve boots.

Attributes

Inherited from:
HttpApp
Source
HttpApp.scala
final protected def serve(table: RouteTable, dev: Boolean = ...): Unit

The only caller of HttpServer.run: boots the server on this trait's overrides and blocks until it stops. dev turns the listing and the reload client on.

The only caller of HttpServer.run: boots the server on this trait's overrides and blocks until it stops. dev turns the listing and the reload client on.

Attributes

Inherited from:
HttpApp
Source
HttpApp.scala
override protected def usage: List[Usage]

One row per command, for help. Each layer writes own ++ super.usage, and names only the spelling and the description: the columns are help's to lay out, once, over every layer's rows together, so no layer has to guess how wide the others' spellings are.

One row per command, for help. Each layer writes own ++ super.usage, and names only the spelling and the description: the columns are help's to lay out, once, over every layer's rows together, so no layer has to guess how wide the others' spellings are.

Attributes

Definition Classes
Inherited from:
HttpApp
Source
HttpApp.scala

Inherited and Abstract methods

The route table, usually Routes.table() from the sbt plugin's generated object. Abstract: an http layer is its routes, and an application without any is a mistake.

The route table, usually Routes.table() from the sbt plugin's generated object. Abstract: an http layer is its routes, and an application without any is a mistake.

Attributes

Inherited from:
HttpApp
Source
HttpApp.scala