dave08
11/06/2018, 2:55 PMfun Application.main() {
routing {
get("/") {
if (call.request.local.port == 8080) {
call.respondText("Connected to public api")
} else {
call.respondText("Connected to private api")
}
}
}
}
I think no one would want to handle internal/external apis in this way... is there a way to do:
fun Application.main() {
routing {
port(8080) {
get("/") {
call.respondText("Connected to public api")
}
}
port(9090) {
get("/") {
call.respondText("Connected to private api")
}
}
}
}
?Deactivated User
11/06/2018, 3:02 PMDeactivated User
11/06/2018, 3:04 PMkotlin
data class HttpPortRouteSelector(val port: Int) : RouteSelector(RouteSelectorEvaluation.qualityParameter) {
override fun evaluate(context: RoutingResolveContext, segmentIndex: Int): RouteSelectorEvaluation {
if (context.call.request.local.port == port)
return RouteSelectorEvaluation.Constant
return RouteSelectorEvaluation.Failed
}
override fun toString(): String = "(port:$port)"
}
@ContextDsl
fun Route.port(path: String, port: Int, build: Route.() -> Unit): Route {
val selector = HttpPortRouteSelector(port)
return createRouteFromPath(path).createChild(selector).apply(build)
}
@ContextDsl
fun Route.port(port: Int, build: Route.() -> Unit): Route {
val selector = HttpPortRouteSelector(port)
return createChild(selector).apply(build)
}
Deactivated User
11/06/2018, 3:05 PMdave08
11/06/2018, 4:02 PM