diff options
author | Zach Smith <zach@driver.xyz> | 2017-10-25 13:34:46 -0700 |
---|---|---|
committer | Zach Smith <zach@driver.xyz> | 2017-10-31 09:19:04 -0700 |
commit | 5db157103a1982f00ca72e8f6b925344debce36e (patch) | |
tree | 4f1ed8fbdc1e079923e0762c01305bfe74aa52ff /src/main/scala/xyz/driver/core/rest | |
parent | 473d2586c20d35fbb56e11da816140ae40bcb463 (diff) | |
download | driver-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')
-rw-r--r-- | src/main/scala/xyz/driver/core/rest/DriverRoute.scala | 21 |
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) + } } /** |