Skip to content

Instantly share code, notes, and snippets.

View alchi's full-sized avatar

Arthur alchi

  • Rassvet Aps
  • Copenhagen
View GitHub Profile
@alchi
alchi / play2.service
Last active February 24, 2016 13:01 — forked from dkhenry/play2.service
Systemd script for the Play Framework
[Unit]
Description=Play2 Server for <site>
After=network.target
[Service]
Type=simple
PIDFile=<app_path>/RUNNING_PID
ExecStartPre=/bin/sh -c 'cd <app_path> ;/bin/rm -f RUNNING_PID'
ExecStart=<app_path>/bin/appexec -J-Xms64M -J-Xmx256M -Dhttp.port=9000 -Duser.timezone=Europe/Copenhagen
@alchi
alchi / TController.scala
Created February 5, 2016 10:40
general controller trait for play 2
package controllers
import entities.ResultObject
import helpers.HttpStatus
import play.api.Logger
import play.api.libs.concurrent.Execution.Implicits._
import play.api.libs.json.Json
import play.api.mvc.{Controller, Request, Result}
import scala.concurrent.Future
@alchi
alchi / ResultObject.scala
Created February 5, 2016 10:21
play 2 result object sample
package entities
import helpers.HttpStatus
import play.api.libs.json._
final case class ResultObject(data: Any = null, message: String = "", statusCode: Int = HttpStatus.OK, timestamp: Long = System.currentTimeMillis() / 1000L)
object ResultObject {
implicit object ResultFormat extends Format[ResultObject] {
@alchi
alchi / package.scala
Created February 5, 2016 10:20
Play json formatter
import play.api.libs.json._
package object entities {
private[entities] def nullable(any: Option[Any]): JsValue = any.map(format).getOrElse(JsNull)
private[entities] def format(obj: Any): JsValue = obj match {
case json: JsValue => json
case None | null | Left => JsNull
case Some(s) => format(s)
case Right(r) => format(r)
@alchi
alchi / StringImplicits.scala
Created February 5, 2016 10:15
Scala implicit string slugifier
package utils.implicits
import java.text.Normalizer
import java.util.regex.Pattern
import scala.annotation.tailrec
import scala.language.implicitConversions
object StringImplicits {