From 4c05462e562246f6bb5f960b17e522b710b62f84 Mon Sep 17 00:00:00 2001 From: vlad Date: Mon, 22 May 2017 15:03:59 -0700 Subject: Removing trailing spaces from Swagger routes, where they're added to make trailing slashes not to be removed X-) --- src/main/scala/xyz/driver/core/app.scala | 34 +++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) (limited to 'src/main/scala/xyz/driver/core/app.scala') diff --git a/src/main/scala/xyz/driver/core/app.scala b/src/main/scala/xyz/driver/core/app.scala index e35c300..0b17bf2 100644 --- a/src/main/scala/xyz/driver/core/app.scala +++ b/src/main/scala/xyz/driver/core/app.scala @@ -12,9 +12,11 @@ import akka.http.scaladsl.server.Directives._ import akka.http.scaladsl.server.RouteResult._ import akka.http.scaladsl.server.{ExceptionHandler, Route, RouteConcatenation} import akka.stream.ActorMaterializer +import com.github.swagger.akka.SwaggerHttpService._ import com.typesafe.config.Config import com.typesafe.scalalogging.Logger import io.swagger.models.Scheme +import io.swagger.util.Json import org.slf4j.{LoggerFactory, MDC} import spray.json.DefaultJsonProtocol import xyz.driver.core @@ -26,6 +28,8 @@ import xyz.driver.core.time.provider.{SystemTimeProvider, TimeProvider} import scala.compat.Platform.ConcurrentModificationException import scala.concurrent.duration._ import scala.concurrent.{Await, ExecutionContext, Future} +import scala.reflect.runtime.universe._ +import scala.util.control.NonFatal import scalaz.Scalaz.stringInstance import scalaz.syntax.equal._ @@ -66,7 +70,7 @@ object app { protected def bindHttp(modules: Seq[Module]): Unit = { val serviceTypes = modules.flatMap(_.routeTypes) - val swaggerService = new Swagger(baseUrl, Scheme.forValue(scheme), version, actorSystem, serviceTypes, config) + val swaggerService = swaggerOverride(serviceTypes) val swaggerRoutes = swaggerService.routes ~ swaggerService.swaggerUI val versionRt = versionRoute(version, gitHash, time.currentTime()) @@ -111,6 +115,32 @@ object app { } } + protected def swaggerOverride(apiTypes: Seq[Type]) = { + new Swagger(baseUrl, Scheme.forValue(scheme), version, actorSystem, apiTypes, config) { + override def generateSwaggerJson(): String = { + import io.swagger.models.Swagger + + import scala.collection.JavaConverters._ + + try { + val swagger: Swagger = reader.read(toJavaTypeSet(apiTypes).asJava) + + // Removing trailing spaces + swagger.setPaths(swagger.getPaths.asScala.map { case (key, path) => + key.trim -> path + }.toMap.asJava) + + Json.pretty().writeValueAsString(swagger) + } catch { + case NonFatal(t) => { + logger.error("Issue with creating swagger.json", t) + throw t + } + } + } + } + } + /** * Override me for custom exception handling * @@ -233,8 +263,6 @@ object app { } } - import scala.reflect.runtime.universe._ - trait Module { val name: String def route: Route -- cgit v1.2.3 From daa48a7c0f95e27600e10efdc7aa8d4d596d2396 Mon Sep 17 00:00:00 2001 From: vlad Date: Mon, 22 May 2017 15:08:51 -0700 Subject: Fixing "non-nullary method overrides nullary method" --- src/main/scala/xyz/driver/core/app.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/scala/xyz/driver/core/app.scala') diff --git a/src/main/scala/xyz/driver/core/app.scala b/src/main/scala/xyz/driver/core/app.scala index 0b17bf2..db8aa10 100644 --- a/src/main/scala/xyz/driver/core/app.scala +++ b/src/main/scala/xyz/driver/core/app.scala @@ -117,7 +117,7 @@ object app { protected def swaggerOverride(apiTypes: Seq[Type]) = { new Swagger(baseUrl, Scheme.forValue(scheme), version, actorSystem, apiTypes, config) { - override def generateSwaggerJson(): String = { + override def generateSwaggerJson: String = { import io.swagger.models.Swagger import scala.collection.JavaConverters._ -- cgit v1.2.3 From e35191c28dd28b1fecb68d734b6375decbe1e44c Mon Sep 17 00:00:00 2001 From: Zach Smith Date: Thu, 25 May 2017 13:52:47 -0700 Subject: Base64 decode public key file in token authorization --- src/main/scala/xyz/driver/core/app.scala | 11 ++++++++--- src/main/scala/xyz/driver/core/json.scala | 3 ++- src/main/scala/xyz/driver/core/rest.scala | 5 +++-- 3 files changed, 13 insertions(+), 6 deletions(-) (limited to 'src/main/scala/xyz/driver/core/app.scala') diff --git a/src/main/scala/xyz/driver/core/app.scala b/src/main/scala/xyz/driver/core/app.scala index db8aa10..e66fe73 100644 --- a/src/main/scala/xyz/driver/core/app.scala +++ b/src/main/scala/xyz/driver/core/app.scala @@ -126,9 +126,14 @@ object app { val swagger: Swagger = reader.read(toJavaTypeSet(apiTypes).asJava) // Removing trailing spaces - swagger.setPaths(swagger.getPaths.asScala.map { case (key, path) => - key.trim -> path - }.toMap.asJava) + swagger.setPaths( + swagger.getPaths.asScala + .map { + case (key, path) => + key.trim -> path + } + .toMap + .asJava) Json.pretty().writeValueAsString(swagger) } catch { diff --git a/src/main/scala/xyz/driver/core/json.scala b/src/main/scala/xyz/driver/core/json.scala index b9d0745..b203c91 100644 --- a/src/main/scala/xyz/driver/core/json.scala +++ b/src/main/scala/xyz/driver/core/json.scala @@ -18,7 +18,8 @@ import xyz.driver.core.time.Time object json { import DefaultJsonProtocol._ - private def UuidInPath[T]: PathMatcher1[Id[T]] = PathMatchers.JavaUUID.map((id: UUID) => Id[T](id.toString.toLowerCase)) + private def UuidInPath[T]: PathMatcher1[Id[T]] = + PathMatchers.JavaUUID.map((id: UUID) => Id[T](id.toString.toLowerCase)) def IdInPath[T]: PathMatcher1[Id[T]] = UuidInPath[T] | new PathMatcher1[Id[T]] { def apply(path: Path) = path match { diff --git a/src/main/scala/xyz/driver/core/rest.scala b/src/main/scala/xyz/driver/core/rest.scala index 1db9d09..6944cf7 100644 --- a/src/main/scala/xyz/driver/core/rest.scala +++ b/src/main/scala/xyz/driver/core/rest.scala @@ -214,8 +214,9 @@ package rest { object CachedTokenAuthorization { def apply[U <: User](publicKeyFile: Path, issuer: String): CachedTokenAuthorization[U] = { lazy val publicKey: PublicKey = { - val publicKeyBytes = Files.readAllBytes(publicKeyFile) - val spec = new X509EncodedKeySpec(publicKeyBytes) + val publicKeyBase64Encoded = Files.readAllBytes(publicKeyFile) + val publicKeyBase64Decoded = java.util.Base64.getDecoder.decode(publicKeyBase64Encoded) + val spec = new X509EncodedKeySpec(publicKeyBase64Decoded) KeyFactory.getInstance("RSA").generatePublic(spec) } new CachedTokenAuthorization[U](publicKey, issuer) -- cgit v1.2.3