CCCPaste

eb5d0a4f53c21

import io.vertx.core.Future;
import io.vertx.core.Promise;
import io.vertx.core.Vertx;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.http.HttpServer;
import io.vertx.core.http.HttpServerResponse;
import io.vertx.core.json.JsonObject;
import io.vertx.core.net.SocketAddress;
import io.vertx.ext.web.Route;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.client.HttpResponse;
import io.vertx.ext.web.client.WebClient;

public class Sandbox {
    final private static int PORT_TDG = 8181;
    final private static int PORT_MY = 8080;
    final private static String HOST = "localhost";
    final private static String TOKEN = "9f226286-e0d8-4125-ad43-b123b4e464da";
    final private static String TYPE = "application/json;charset=utf-8";

    public static void main(String[] args) {
        Vertx vertx = Vertx.vertx();
        WebClient client = WebClient.create(vertx);
        Router router = Router.router(vertx);
        Promise> promise = Promise.promise();

        JsonObject request = new JsonObject()
                .put("query", "{Book { uuid, book_name, author }}");

        router.post("/graphql")
                .handler(ctx -> {
                    client
                            .post("/graphql")
                            .sendJson(request, t -> {
                                if (t.succeeded()) {
                                    promise.complete(t.result());
                                } else {
                                    promise.fail(new Exception("Error while sending request to tarantool", t.cause()));
                                }
                            });
                });

        promise.future().onComplete(t -> {
                    if (t.succeeded()) {
                        var result = t.result();
                        var response = ctx.response()
                                .setStatusCode(result.statusCode())
                                .setChunked(true);
                        copyHeaders(result, response);
                        response.write(result.bodyAsBuffer())
                                .end();
                    }
                });
    }
}