aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/app
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/app
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/app')
-rw-r--r--src/main/scala/xyz/driver/core/app/DriverApp.scala52
1 files changed, 18 insertions, 34 deletions
diff --git a/src/main/scala/xyz/driver/core/app/DriverApp.scala b/src/main/scala/xyz/driver/core/app/DriverApp.scala
index 4110c37..2bb61c0 100644
--- a/src/main/scala/xyz/driver/core/app/DriverApp.scala
+++ b/src/main/scala/xyz/driver/core/app/DriverApp.scala
@@ -73,47 +73,31 @@ class DriverApp(appName: String,
protected def appRoute: Route = {
val serviceTypes = modules.flatMap(_.routeTypes)
val swaggerService = swaggerOverride(serviceTypes)
- val swaggerRoutes = swaggerService.routes ~ swaggerService.swaggerUI
+ val swaggerRoute = swaggerService.routes ~ swaggerService.swaggerUI
val versionRt = versionRoute(version, gitHash, time.currentTime())
+ val combinedRoute = modules.map(_.route).foldLeft(versionRt ~ healthRoute ~ swaggerRoute)(_ ~ _)
- extractHost { origin =>
- extractClientIP { ip =>
- optionalHeaderValueByType[Origin](()) { originHeader =>
- trace(tracer) { ctx =>
- val trackingId = rest.extractTrackingId(ctx.request)
- MDC.put("trackingId", trackingId)
+ (extractHost & extractClientIP & trace(tracer)) {
+ case (origin, ip) =>
+ ctx =>
+ val trackingId = rest.extractTrackingId(ctx.request)
+ MDC.put("trackingId", trackingId)
- val updatedStacktrace =
- (rest.extractStacktrace(ctx.request) ++ Array(appName)).mkString("->")
- MDC.put("stack", updatedStacktrace)
+ val updatedStacktrace =
+ (rest.extractStacktrace(ctx.request) ++ Array(appName)).mkString("->")
+ MDC.put("stack", updatedStacktrace)
- storeRequestContextToMdc(ctx.request, origin, ip)
+ storeRequestContextToMdc(ctx.request, origin, ip)
- val trackingHeader = RawHeader(ContextHeaders.TrackingIdHeader, trackingId)
+ log.info(s"""Received request {"method":"${ctx.request.method.value}","url": "${ctx.request.uri}"}""")
- val responseHeaders = List[HttpHeader](
- trackingHeader,
- allowOrigin(originHeader),
- `Access-Control-Allow-Headers`(rest.AllowedHeaders: _*),
- `Access-Control-Expose-Headers`(rest.AllowedHeaders: _*)
- )
-
- log.info(s"""Received request {"method":"${ctx.request.method.value}","url": "${ctx.request.uri}"}""")
+ val contextWithTrackingId =
+ ctx.withRequest(
+ ctx.request
+ .addHeader(RawHeader(ContextHeaders.TrackingIdHeader, trackingId))
+ .addHeader(RawHeader(ContextHeaders.StacktraceHeader, updatedStacktrace)))
- val contextWithTrackingId =
- ctx.withRequest(
- ctx.request
- .addHeader(RawHeader(ContextHeaders.TrackingIdHeader, trackingId))
- .addHeader(RawHeader(ContextHeaders.StacktraceHeader, updatedStacktrace)))
-
- respondWithHeaders(responseHeaders) {
- modules
- .map(_.route)
- .foldLeft(versionRt ~ healthRoute ~ swaggerRoutes)(_ ~ _)
- }(contextWithTrackingId)
- }
- }
- }
+ combinedRoute(contextWithTrackingId)
}
}