Advertisement
shakasu

Untitled

Mar 1st, 2021
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.19 KB | None | 0 0
  1. package spring.verticles;
  2.  
  3. import io.vertx.core.AbstractVerticle;
  4. import io.vertx.core.Future;
  5. import io.vertx.core.Promise;
  6. import io.vertx.core.buffer.Buffer;
  7. import io.vertx.core.json.JsonObject;
  8. import io.vertx.ext.web.Router;
  9. import io.vertx.ext.web.client.HttpResponse;
  10. import io.vertx.ext.web.client.WebClient;
  11. import io.vertx.ext.web.handler.BodyHandler;
  12. import org.springframework.beans.factory.annotation.Value;
  13. import org.springframework.stereotype.Component;
  14.  
  15. @Component
  16. public class ProxyVerticle extends AbstractVerticle {
  17.  
  18.     @Value(value = "${http.port}")
  19.     private int httpPort;
  20.  
  21.     @Value(value = "${tdg.port}")
  22.     private int tdgPort;
  23.  
  24.     @Value(value = "${server.host}")
  25.     private String serverHost;
  26.  
  27.     private Router router;
  28.  
  29.  
  30.     @Override
  31.     public void start() throws Exception {
  32.         super.start();
  33.         this.router = Router.router(vertx);
  34.         createHttpServer();
  35.         bodyHandlerEnabler();
  36.         buildPostRoute();
  37.     }
  38.  
  39.     private void bodyHandlerEnabler() {
  40.         router.route().handler(BodyHandler.create());
  41.     }
  42.  
  43.     private void createHttpServer() {
  44.         vertx.createHttpServer()
  45.                 .requestHandler(router)
  46.                 .listen(httpPort);
  47.     }
  48.  
  49.     private void buildPostRoute() {
  50.         router.post("/post")
  51.                 .handler(rc -> {
  52.                     this.graphql(rc.getBodyAsJson())
  53.                             .onSuccess(httpResp -> {
  54.                                 if (httpResp.statusCode() == 200) {
  55.                                     rc.end(httpResp.bodyAsBuffer());
  56.                                 }
  57.                             });
  58.                 });
  59.     }
  60.  
  61.     private Future<HttpResponse<Buffer>> graphql(JsonObject request) {
  62.         Promise<HttpResponse<Buffer>> promise = Promise.promise();
  63.         WebClient.create(vertx)
  64.                 .post(tdgPort, serverHost, "/graphql")
  65.                 .putHeader("Content-Type", "application/json")
  66.                 .sendJson(request, t -> {
  67.                     if (t.succeeded()) {
  68.                         promise.complete(t.result());
  69.                     }
  70.                 });
  71.         return promise.future();
  72.     }
  73. }
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement