From b7e059da67bee48986b3165c94835f32b84cf76d Mon Sep 17 00:00:00 2001 From: Zach Smith Date: Mon, 22 Jan 2018 11:25:35 -0800 Subject: Move directives to rest package --- src/main/scala/xyz/driver/core/app/DriverApp.scala | 28 ++++------------------ src/main/scala/xyz/driver/core/rest/package.scala | 21 +++++++++++++++- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/main/scala/xyz/driver/core/app/DriverApp.scala b/src/main/scala/xyz/driver/core/app/DriverApp.scala index bc9d634..d95e254 100644 --- a/src/main/scala/xyz/driver/core/app/DriverApp.scala +++ b/src/main/scala/xyz/driver/core/app/DriverApp.scala @@ -223,25 +223,6 @@ class DriverApp( } object DriverApp { - def defaultCorsHeaders: Directive0 = { - optionalHeaderValueByType[Origin](()) flatMap { originHeader => - respondWithHeaders( - List[HttpHeader]( - allowOrigin(originHeader), - `Access-Control-Allow-Headers`(AllowedHeaders: _*), - `Access-Control-Expose-Headers`(AllowedHeaders: _*) - )) - } - } - - def corsAllowedMethodHeaders(methods: scala.collection.immutable.Seq[HttpMethod]): Directive0 = { - respondWithHeaders( - List[HttpHeader]( - Allow(methods), - `Access-Control-Allow-Methods`(methods) - )) - } - implicit def rejectionHandler: RejectionHandler = RejectionHandler .newBuilder() @@ -250,8 +231,8 @@ object DriverApp { lazy val names = methods map (_.name) mkString ", " options { - defaultCorsHeaders { - corsAllowedMethodHeaders(methods) { + respondWithCorsHeaders { + respondWithCorsAllowedMethodHeaders(methods) { complete(s"Supported methods: $names.") } } @@ -259,9 +240,10 @@ object DriverApp { complete(MethodNotAllowed -> s"HTTP method not allowed, supported methods: $names!") } .handleAll[Rejection] { rejections => - defaultCorsHeaders { - RejectionHandler.default(rejections).getOrElse(reject) + respondWithCorsHeaders { + reject(rejections: _*) } } .result() + .seal } diff --git a/src/main/scala/xyz/driver/core/rest/package.scala b/src/main/scala/xyz/driver/core/rest/package.scala index 77b916a..88f78d9 100644 --- a/src/main/scala/xyz/driver/core/rest/package.scala +++ b/src/main/scala/xyz/driver/core/rest/package.scala @@ -3,7 +3,7 @@ package xyz.driver.core.rest import java.net.InetAddress import akka.http.scaladsl.marshalling.{ToEntityMarshaller, ToResponseMarshallable} -import akka.http.scaladsl.model.headers.{HttpOriginRange, Origin, `Access-Control-Allow-Origin`} +import akka.http.scaladsl.model.headers._ import akka.http.scaladsl.model._ import akka.http.scaladsl.server.Directives._ import akka.http.scaladsl.server._ @@ -110,6 +110,25 @@ object `package` { } } + def respondWithCorsHeaders: Directive0 = { + optionalHeaderValueByType[Origin](()) flatMap { originHeader => + respondWithHeaders( + List[HttpHeader]( + allowOrigin(originHeader), + `Access-Control-Allow-Headers`(AllowedHeaders: _*), + `Access-Control-Expose-Headers`(AllowedHeaders: _*) + )) + } + } + + def respondWithCorsAllowedMethodHeaders(methods: scala.collection.immutable.Seq[HttpMethod]): Directive0 = { + respondWithHeaders( + List[HttpHeader]( + Allow(methods), + `Access-Control-Allow-Methods`(methods) + )) + } + def extractServiceContext(request: HttpRequest, remoteAddress: RemoteAddress): ServiceRequestContext = new ServiceRequestContext( extractTrackingId(request), -- cgit v1.2.3