aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvlad <vlad@drivergrp.com>2016-07-18 12:51:39 -0400
committervlad <vlad@drivergrp.com>2016-07-18 12:51:39 -0400
commit7b9e1b4045dc693158640004b48c5fa42fb3b20d (patch)
treefcf35999d62546ea9726cfeb393893ff1a7657fd
parent71a39b60eb304c1270c738ebf41af0803ee89937 (diff)
downloaddriver-core-7b9e1b4045dc693158640004b48c5fa42fb3b20d.tar.gz
driver-core-7b9e1b4045dc693158640004b48c5fa42fb3b20d.tar.bz2
driver-core-7b9e1b4045dc693158640004b48c5fa42fb3b20d.zip
Version root with current build version + Compiler flags for language features and linting
-rw-r--r--project/Build.scala4
-rw-r--r--src/main/scala/com/drivergrp/core/app.scala25
2 files changed, 24 insertions, 5 deletions
diff --git a/project/Build.scala b/project/Build.scala
index 19ac869..60eef38 100644
--- a/project/Build.scala
+++ b/project/Build.scala
@@ -7,7 +7,9 @@ object BuildSettings {
name := "core",
version := "0.0.1",
scalaVersion := "2.11.8",
- scalacOptions := Seq("-unchecked", "-deprecation", "-feature", "-encoding", "utf8"),
+ scalacOptions := Seq("-unchecked", "-deprecation", "-feature", "-Xlint", "-encoding", "utf8",
+ "-language:higherKinds", "-language:implicitConversions", "-language:postfixOps",
+ "-Ywarn-infer-any", "-Ywarn-unused", "-Ywarn-unused-import"),
fork in run := true
)
}
diff --git a/src/main/scala/com/drivergrp/core/app.scala b/src/main/scala/com/drivergrp/core/app.scala
index 53239e0..06d8e02 100644
--- a/src/main/scala/com/drivergrp/core/app.scala
+++ b/src/main/scala/com/drivergrp/core/app.scala
@@ -2,15 +2,18 @@ package com.drivergrp.core
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
+import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport
import akka.http.scaladsl.model.StatusCodes
import akka.http.scaladsl.server.Directives._
import akka.http.scaladsl.server.RouteResult._
+import akka.http.scaladsl.server.{Route, RouteConcatenation}
import akka.stream.ActorMaterializer
import com.drivergrp.core.logging.{Logger, TypesafeScalaLogger}
-import akka.http.scaladsl.server.{Route, RouteConcatenation}
import com.drivergrp.core.rest.Swagger
+import com.drivergrp.core.time.provider.{SystemTimeProvider, TimeProvider}
import com.typesafe.config.Config
import org.slf4j.LoggerFactory
+import spray.json.DefaultJsonProtocol
import scala.concurrent.Await
import scala.concurrent.duration._
@@ -18,7 +21,9 @@ import scala.concurrent.duration._
object app {
- class DriverApp(modules: Seq[Module],
+ class DriverApp(version: String, buildNumber: Int,
+ modules: Seq[Module],
+ time: TimeProvider = new SystemTimeProvider(),
log: Logger = new TypesafeScalaLogger(
com.typesafe.scalalogging.Logger(LoggerFactory.getLogger(classOf[DriverApp]))),
config: Config = com.drivergrp.core.config.loadDefaultConfig,
@@ -45,13 +50,25 @@ object app {
}
}
-
protected def bindHttp(modules: Seq[Module]) {
+ import SprayJsonSupport._
+ import DefaultJsonProtocol._
+
val serviceTypes = modules.flatMap(_.routeTypes)
val swaggerService = new Swagger(actorSystem, serviceTypes, config)
val swaggerRoutes = swaggerService.routes ~ swaggerService.swaggerUI
+
+ val versionRoute = path("version") {
+ complete(Map(
+ "version" -> version,
+ "buildNumber" -> buildNumber.toString,
+ "serverTime" -> time.currentTime().millis.toString
+ ))
+ }
+
http.bindAndHandle(
- route2HandlerFlow(logRequestResult("log")(modules.map(_.route).foldLeft(swaggerRoutes) { _ ~ _ })),
+ route2HandlerFlow(logRequestResult("log")(
+ modules.map(_.route).foldLeft(versionRoute ~ swaggerRoutes) { _ ~ _ })),
interface, port)(materializer)
}