From c948b1f2c1c7a5246d5c1a7cba05e6e27a9d7b57 Mon Sep 17 00:00:00 2001 From: vlad Date: Sat, 16 Jul 2016 15:55:19 -0400 Subject: Modules consolidation --- src/main/scala/com/drivergrp/core/rest.scala | 42 +++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'src/main/scala/com/drivergrp/core/rest.scala') diff --git a/src/main/scala/com/drivergrp/core/rest.scala b/src/main/scala/com/drivergrp/core/rest.scala index 51823da..71aed94 100644 --- a/src/main/scala/com/drivergrp/core/rest.scala +++ b/src/main/scala/com/drivergrp/core/rest.scala @@ -7,11 +7,13 @@ import akka.http.scaladsl.server.{Directive, _} import akka.http.scaladsl.util.FastFuture._ import akka.stream.ActorMaterializer import akka.util.Timeout -import com.drivergrp.core.id.{Id, Name} import com.drivergrp.core.logging.Logger import com.drivergrp.core.stats.Stats import com.drivergrp.core.time.TimeRange import com.drivergrp.core.time.provider.TimeProvider +import com.github.swagger.akka.model._ +import com.github.swagger.akka.{HasActorSystem, SwaggerHttpService} +import com.typesafe.config.Config import spray.json.{DeserializationException, JsNumber, JsString, JsValue, RootJsonFormat} import scala.concurrent.duration._ @@ -97,4 +99,42 @@ object rest { optionT.run.fast.transformWith(t ⇒ inner(Tuple1(t))(ctx)) } } + + + import scala.reflect.runtime.universe._ + + class Swagger(override val actorSystem: ActorSystem, + override val apiTypes: Seq[Type], + val config: Config) extends SwaggerHttpService with HasActorSystem { + + val materializer = ActorMaterializer()(actorSystem) + + override val host = "localhost:8080" //the url of your api, not swagger's json endpoint + override val basePath = config.getString("swagger.basePath") + override val apiDocsPath = config.getString("swagger.docsPath") + + override val info = Info( + config.getString("swagger.apiInfo.description"), + config.getString("swagger.apiVersion"), + config.getString("swagger.apiInfo.title"), + config.getString("swagger.apiInfo.termsOfServiceUrl"), + contact = Some(Contact( + config.getString("swagger.apiInfo.contact.name"), + config.getString("swagger.apiInfo.contact.url"), + config.getString("swagger.apiInfo.contact.email") + )), + license = Some(License( + config.getString("swagger.apiInfo.license"), + config.getString("swagger.apiInfo.licenseUrl") + )), + vendorExtensions = Map()) + + def swaggerUI = get { + pathPrefix("") { + pathEndOrSingleSlash { + getFromResource("swagger-ui/index.html") + } + } ~ getFromResourceDirectory("swagger-ui") + } + } } -- cgit v1.2.3