From 04db4e857fceeb15196d8f13d63e987ad214be38 Mon Sep 17 00:00:00 2001 From: Zach Smith Date: Thu, 8 Feb 2018 13:02:07 -0800 Subject: Move rejection handler to DriverRoute --- src/main/resources/reference.conf | 17 +++++++++++++++-- src/main/scala/xyz/driver/core/rest/DriverRoute.scala | 17 +++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/main/resources/reference.conf b/src/main/resources/reference.conf index 238ac68..f903234 100644 --- a/src/main/resources/reference.conf +++ b/src/main/resources/reference.conf @@ -2,7 +2,7 @@ # Default settings for driver core. Any settings defined by users of # # this library will take precedence. See the documentation of the # # Typesafe Config Library (https://github.com/lightbend/config) for # -# more information. # +# more information. # ###################################################################### # This scope is for general settings related to the execution of a @@ -13,7 +13,20 @@ application { cors { allowedMethods: ["GET", "PUT", "POST", "PATCH", "DELETE", "OPTIONS"] - allowedOrigins: [] + allowedOrigins: [ + { + scheme: http + hostSuffix: localhost + }, + { + scheme: https + hostSuffix: driver.xyz + }, + { + scheme: https + hostSuffix: driver.network + } + ] } } diff --git a/src/main/scala/xyz/driver/core/rest/DriverRoute.scala b/src/main/scala/xyz/driver/core/rest/DriverRoute.scala index 1fe5e3f..5e629be 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.{Directive0, ExceptionHandler, RequestContext, Route} +import akka.http.scaladsl.server._ import com.typesafe.config.Config import com.typesafe.scalalogging.Logger import org.slf4j.MDC @@ -22,7 +22,7 @@ trait DriverRoute { def route: Route def routeWithDefaults: Route = { - (defaultResponseHeaders & handleExceptions(ExceptionHandler(exceptionHandler))) { + (defaultResponseHeaders & handleRejections(rejectionHandler) & handleExceptions(ExceptionHandler(exceptionHandler))) { route ~ defaultOptionsRoute } } @@ -84,6 +84,19 @@ trait DriverRoute { } } + protected def rejectionHandler: RejectionHandler = + RejectionHandler + .newBuilder() + .handle { + case rejection => + respondWithAllCorsHeaders { + RejectionHandler + .default(scala.collection.immutable.Seq(rejection)) + .getOrElse(complete("OK")) + } + } + .result() + /** * Override me for custom exception handling * -- cgit v1.2.3