diff options
author | vlad <vlad@drivergrp.com> | 2016-07-18 12:51:39 -0400 |
---|---|---|
committer | vlad <vlad@drivergrp.com> | 2016-07-18 12:51:39 -0400 |
commit | 7b9e1b4045dc693158640004b48c5fa42fb3b20d (patch) | |
tree | fcf35999d62546ea9726cfeb393893ff1a7657fd /src | |
parent | 71a39b60eb304c1270c738ebf41af0803ee89937 (diff) | |
download | driver-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
Diffstat (limited to 'src')
-rw-r--r-- | src/main/scala/com/drivergrp/core/app.scala | 25 |
1 files changed, 21 insertions, 4 deletions
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) } |