blob: c0e9f99a3158cfb73979f746b338b0e2682fc6c3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
package xyz.driver.core.rest
import akka.http.scaladsl.server.{RequestContext, Route, RouteResult}
import com.typesafe.config.Config
import xyz.driver.core.Name
import scala.concurrent.ExecutionContext
trait ProxyRoute extends DriverRoute {
implicit val executionContext: ExecutionContext
val config: Config
val httpClient: HttpClient
protected def proxyToService(serviceName: Name[Service]): Route = { ctx: RequestContext =>
val httpScheme = config.getString(s"services.${serviceName.value}.httpScheme")
val baseUrl = config.getString(s"services.${serviceName.value}.baseUrl")
val originalUri = ctx.request.uri
val originalRequest = ctx.request
val newUri = originalUri.withScheme(httpScheme).withHost(baseUrl)
val newRequest = originalRequest.withUri(newUri)
httpClient.makeRequest(newRequest).map(RouteResult.Complete)
}
}
|