package tv.miracle.backend.graphql import org.apache.pekko.http.scaladsl.model.HttpMethods._ import org.apache.pekko.http.scaladsl.model.headers._ import org.apache.pekko.http.scaladsl.model.{ HttpResponse, StatusCodes } import org.apache.pekko.http.scaladsl.server.Directives._ import org.apache.pekko.http.scaladsl.server.{ Directive0, Route } trait CorsSupport { private def addAccessControlHeaders: Directive0 = respondWithHeaders( `Access-Control-Allow-Origin`.*, `Access-Control-Allow-Credentials`(true), `Access-Control-Allow-Headers`("Authorization", "Content-Type", "X-Requested-With")) private def preflightRequestHandler: Route = options { complete(HttpResponse(StatusCodes.OK) .withHeaders( `Access-Control-Allow-Methods`(OPTIONS, POST, GET))) } def corsHandler(r: Route): Route = addAccessControlHeaders { preflightRequestHandler ~ r } }