import io.vertx.core.http.HttpMethod import io.vertx.reactivex.config.ConfigRetriever import io.vertx.reactivex.core.Vertx import io.vertx.reactivex.ext.asyncsql.PostgreSQLClient import io.vertx.reactivex.ext.web.Router import io.vertx.reactivex.ext.web.handler.CorsHandler fun main(args: Array) { var vertx = Vertx.vertx() // fetching config file var retriever = ConfigRetriever.create(vertx) retriever.rxGetConfig().subscribe { config -> // single out the database config val databaseConfig = config.getJsonObject("database") // make the jdbc client, ready for connections var postgreSQLClient = PostgreSQLClient.createShared(vertx, databaseConfig) var router = Router.router(vertx) // set up cors router.route().handler( // CorsHandler.create("http://localhost:4200") CorsHandler.create("*") // .allowCredentials(true) .allowedHeader("Access-Control-Allow-Method") .allowedHeader("Access-Control-Allow-Origin") // .allowedHeader("Access-Control-Allow-Credentials") .allowedHeader("Content-Type") .allowedMethod(HttpMethod.GET) .allowedMethod(HttpMethod.POST) .allowedMethod(HttpMethod.PUT) .allowedMethod(HttpMethod.OPTIONS) ) // define the routes val routeDefiner = RouteDefiner(router, vertx, postgreSQLClient) var server = vertx.createHttpServer() server.requestHandler { router.accept(it) }.listen(8080) } }