aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/rest/DriverRoute.scala
diff options
context:
space:
mode:
authorZach Smith <zach@driver.xyz>2017-10-25 13:34:46 -0700
committerZach Smith <zach@driver.xyz>2017-10-31 09:19:04 -0700
commit5db157103a1982f00ca72e8f6b925344debce36e (patch)
tree4f1ed8fbdc1e079923e0762c01305bfe74aa52ff /src/main/scala/xyz/driver/core/rest/DriverRoute.scala
parent473d2586c20d35fbb56e11da816140ae40bcb463 (diff)
downloaddriver-core-5db157103a1982f00ca72e8f6b925344debce36e.tar.gz
driver-core-5db157103a1982f00ca72e8f6b925344debce36e.tar.bz2
driver-core-5db157103a1982f00ca72e8f6b925344debce36e.zip
Move all CORS headers to DriverRoute from DriverApp
Diffstat (limited to 'src/main/scala/xyz/driver/core/rest/DriverRoute.scala')
-rw-r--r--src/main/scala/xyz/driver/core/rest/DriverRoute.scala21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/main/scala/xyz/driver/core/rest/DriverRoute.scala b/src/main/scala/xyz/driver/core/rest/DriverRoute.scala
index 79dff8b..d42bd75 100644
--- a/src/main/scala/xyz/driver/core/rest/DriverRoute.scala
+++ b/src/main/scala/xyz/driver/core/rest/DriverRoute.scala
@@ -6,7 +6,7 @@ import akka.http.scaladsl.model._
import akka.http.scaladsl.model.StatusCodes
import akka.http.scaladsl.model.headers._
import akka.http.scaladsl.server.Directives._
-import akka.http.scaladsl.server.{ExceptionHandler, RequestContext, Route}
+import akka.http.scaladsl.server.{Directive0, ExceptionHandler, RequestContext, Route}
import com.typesafe.scalalogging.Logger
import org.slf4j.MDC
import xyz.driver.core.rest
@@ -19,8 +19,23 @@ trait DriverRoute {
def route: Route
- def routeWithDefaults: Route = handleExceptions(ExceptionHandler(exceptionHandler)) {
- route
+ def routeWithDefaults: Route = {
+ (defaultResponseHeaders & handleExceptions(ExceptionHandler(exceptionHandler)))(route)
+ }
+
+ protected def defaultResponseHeaders: Directive0 = {
+ (extractRequest & optionalHeaderValueByType[Origin](())) tflatMap {
+ case (request, originHeader) =>
+ val tracingHeader = RawHeader(ContextHeaders.TrackingIdHeader, rest.extractTrackingId(request))
+ val responseHeaders = List[HttpHeader](
+ tracingHeader,
+ allowOrigin(originHeader),
+ `Access-Control-Allow-Headers`(AllowedHeaders: _*),
+ `Access-Control-Expose-Headers`(AllowedHeaders: _*)
+ )
+
+ respondWithHeaders(responseHeaders)
+ }
}
/**