Skip to content

Instantly share code, notes, and snippets.

package com.plasmaconduit.framework
import com.plasmaconduit.conveyance.Box
import com.plasmaconduit.edge.http._
import com.plasmaconduit.framework._
import com.plasmaconduit.framework.mvc.Controller
import com.plasmaconduit.framework.mvc.middlewares.SessionMiddleware
import com.plasmaconduit.framework.routes.containers.{HttpGetMethodRoutes, HttpRoutes}
import com.plasmaconduit.framework.routes.destinations.HttpPathRoute
import com.plasmaconduit.framework.sessions.jwt.JWTSessionHandler
final case class SimpleController() extends Controller {
def action(implicit request: HttpRequest) = {
Ok("Simple string response.")
}
}
@PipelineBaron
PipelineBaron / RedirectController.scala
Created May 2, 2015 19:20
A simple redirection controller
final case class SimpleController() extends Controller {
def action(implicit request: HttpRequest) = {
Found("").withHeader(Location("/login"))
}
}
@PipelineBaron
PipelineBaron / MiddlewareExampleController.scala
Last active August 29, 2015 14:20
Example use of middleware
final case class ExampleController() extends Controller {
def middleware = Seq(LoggingMiddleware(), CacheMiddleware())
def action(implicit request: HttpRequest) = Ok("Hello")
}
@PipelineBaron
PipelineBaron / IdentityMiddleware.scala
Created May 2, 2015 19:31
An example identity middleware
final case class IdentityMiddleware() extends Middleware {
def intercept(next: Controller) = AdhocController { request =>
next.action(request)
}
}
final case class AuthenticatedOnlyMiddleware() extends Middleware {
def intercept(next: Controller) = AdhocController { request =>
request
.session
.get("user")
.map(_ => next.action(request))
.getOrElse(Found("").withHeader(Location("/login")))
}
@PipelineBaron
PipelineBaron / SessionVisitsController.scala
Created May 3, 2015 04:25
An example of how to use sessions
final case class SessionVisitsController() extends Controller {
def action(implicit request: HttpRequest) = {
val visits = request.session.get("visits").getOrElse("0").toLong
Ok(s"This is so cool, you've viewed it $visits times!")
.withSession(request.session.set("visits", (visits + 1).toString))
}
}
@PipelineBaron
PipelineBaron / SessionApplicaiton.scala
Created May 3, 2015 04:43
An example on how to configure JWT sessions.
val server = PlasmaConduit(
port = 3000,
middleware = List(SessionMiddleware(JWTSessionHandler(JWTSha256, "topsykretz"))),
defaultRoute = MissingController(),
routes = HttpRoutes(
HttpGetMethodRoutes(
HttpPathRoute("/", RootController()),
)
)
)
@PipelineBaron
PipelineBaron / JsonController.scala
Created May 3, 2015 05:15
An example of returning a JSON response
final case class JsonController() extends Controller {
def action(implicit request: HttpRequest): Box[Throwable, HttpResponse] = {
Ok(JsObject(
"status" -> "ok",
"message" -> JsObject(
"email" -> "users@gmail.com",
"admin" -> false
)
))
@PipelineBaron
PipelineBaron / JsonParser.scala
Created May 3, 2015 05:20
Json parsing example
import com.plasmaconduit.json._
val result = JsonParser.parse("""{"key1": "value", "key2": true}""")