From 7b9e1b4045dc693158640004b48c5fa42fb3b20d Mon Sep 17 00:00:00 2001 From: vlad Date: Mon, 18 Jul 2016 12:51:39 -0400 Subject: Version root with current build version + Compiler flags for language features and linting --- src/main/scala/com/drivergrp/core/app.scala | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'src/main/scala/com') 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) } -- cgit v1.2.3