aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZach Smith <zach@driver.xyz>2018-01-22 11:25:35 -0800
committerZach Smith <zach@driver.xyz>2018-02-20 10:34:22 -0800
commitb7e059da67bee48986b3165c94835f32b84cf76d (patch)
treec59e50fa0ce3db8ab218ad4469814c9d1fa4564f
parente207352038e171e899695c895108fcca833ef70b (diff)
downloaddriver-core-b7e059da67bee48986b3165c94835f32b84cf76d.tar.gz
driver-core-b7e059da67bee48986b3165c94835f32b84cf76d.tar.bz2
driver-core-b7e059da67bee48986b3165c94835f32b84cf76d.zip
Move directives to rest package
-rw-r--r--src/main/scala/xyz/driver/core/app/DriverApp.scala28
-rw-r--r--src/main/scala/xyz/driver/core/rest/package.scala21
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),