Example usage for io.vertx.core MultiMap contains

List of usage examples for io.vertx.core MultiMap contains

Introduction

In this page you can find the example usage for io.vertx.core MultiMap contains.

Prototype

@GenIgnore(GenIgnore.PERMITTED_TYPE)
boolean contains(CharSequence name);

Source Link

Document

Like #contains(String) but accepting a CharSequence as a parameter

Usage

From source file:org.sfs.auth.SimpleAuthProvider.java

License:Apache License

protected UserAndRole getUserByCredentials(SfsRequest sfsRequest) {

    MultiMap headers = sfsRequest.headers();
    Optional<String> oToken;
    if (headers.contains(X_AUTH_TOKEN)) {
        oToken = fromNullable(headers.get(X_AUTH_TOKEN));
    } else if (headers.contains(AUTHORIZATION)) {
        oToken = extractToken(headers.get(AUTHORIZATION), "Basic");
    } else {//ww  w  . j  a va 2s  . c  o m
        oToken = absent();
    }

    if (oToken.isPresent()) {
        String token = oToken.get();

        String decoded = new String(base64().decode(token), StandardCharsets.UTF_8);
        String[] parts = toArray(on(':').limit(2).split(decoded), String.class);

        if (parts.length == 2) {
            String username = parts[0];
            String password = parts[1];
            for (Role role : new Role[] { ADMIN, USER }) {
                Set<User> usersForRole = this.roles.get(role);
                if (usersForRole != null) {
                    for (User user : usersForRole) {
                        if (equal(user.getUsername(), username) && equal(user.getPassword(), password)) {
                            return new UserAndRole(role, user);
                        }
                    }
                }
            }
        }
    }
    return null;
}

From source file:org.sfs.nodes.compute.container.ExportContainer.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();
    SfsVertx sfsVertx = vertxContext.vertx();
    Context context = sfsVertx.getOrCreateContext();

    aVoid().flatMap(new Authenticate(httpServerRequest)).flatMap(new ValidateActionAdmin(httpServerRequest))
            .map(aVoid -> httpServerRequest).map(new ValidateHeaderExists(X_SFS_DEST_DIRECTORY))
            .map(new ValidateHeaderIsBoolean(X_SFS_COMPRESS))
            .map(new ValidateHeaderIsBase64Encoded(X_SFS_SECRET))
            .map(new ValidateHeaderBetweenLong(X_SFS_KEEP_ALIVE_TIMEOUT, 10000, 300000))
            .map(aVoid -> fromSfsRequest(httpServerRequest)).map(new ValidateContainerPath())
            .flatMap(new LoadAccountAndContainer(vertxContext)).flatMap(persistentContainer -> {

                MultiMap headers = httpServerRequest.headers();
                String destDirectory = headers.get(X_SFS_DEST_DIRECTORY);
                boolean compress = "true".equalsIgnoreCase(headers.get(X_SFS_COMPRESS));
                byte[] secret = headers.contains(X_SFS_SECRET) ? base64().decode(headers.get(X_SFS_SECRET))
                        : null;/*w w  w .j ava 2 s  . c  o  m*/

                return aVoid().flatMap(aVoid -> {
                    ObservableFuture<Boolean> handler = RxHelper.observableFuture();
                    vertxContext.vertx().fileSystem().exists(destDirectory, handler.toHandler());
                    return handler.map(destDirectoryExists -> {
                        if (!TRUE.equals(destDirectoryExists)) {
                            JsonObject jsonObject = new JsonObject().put("message",
                                    format("%s does not exist", destDirectory));

                            throw new HttpRequestValidationException(HTTP_BAD_REQUEST, jsonObject);
                        } else {
                            return (Void) null;
                        }
                    });
                }).flatMap(oVoid -> {
                    ObservableFuture<List<String>> handler = RxHelper.observableFuture();
                    vertxContext.vertx().fileSystem().readDir(destDirectory, handler.toHandler());
                    return handler.map(listing -> {
                        if (listing.size() > 0) {
                            JsonObject jsonObject = new JsonObject().put("message",
                                    format("%s is not empty", destDirectory));

                            throw new HttpRequestValidationException(HTTP_BAD_REQUEST, jsonObject);
                        } else {
                            return (Void) null;
                        }
                    });
                }).flatMap(aVoid -> {

                    LOGGER.info("Exporting container " + persistentContainer.getId() + " to " + destDirectory);

                    JournalFile dumpFile = new JournalFile(get(destDirectory).resolve(DUMP_FILE_NAME));
                    return dumpFile.open(vertxContext.vertx())
                            .flatMap(aVoid1 -> dumpFile.enableWrites(vertxContext.vertx()))
                            .map(aVoid1 -> dumpFile);
                }).flatMap(dumpFile -> {

                    httpServerRequest.startProxyKeepAlive();

                    Elasticsearch elasticsearch = vertxContext.verticle().elasticsearch();
                    String containerId = persistentContainer.getId();
                    String objectIndex = elasticsearch.objectIndex(persistentContainer.getName());

                    long now = System.currentTimeMillis()
                            - VerifyRepairAllContainerObjects.CONSISTENCY_THRESHOLD;
                    Calendar consistencyThreshold = Calendar.getInstance();
                    consistencyThreshold.setTimeInMillis(now);

                    TermQueryBuilder containerIdQuery = termQuery("container_id", containerId);

                    ScanAndScrollStreamProducer producer = new ScanAndScrollStreamProducer(vertxContext,
                            containerIdQuery).setIndeces(objectIndex).setTypes(elasticsearch.defaultType())
                                    .setReturnVersion(true);

                    DumpFileWriter fileWriter = new DumpFileWriter(vertxContext, persistentContainer, dumpFile);
                    if (compress) {
                        fileWriter.enableDataCompression();
                    }
                    if (secret != null) {
                        fileWriter.enableDataEncryption(secret);
                    }

                    return pump(producer, fileWriter).map(aVoid -> dumpFile);
                }).flatMap(journalFile -> journalFile.disableWrites(vertxContext.vertx())
                        .map(aVoid -> journalFile))
                        .flatMap(journalFile -> journalFile.force(vertxContext.vertx(), true)
                                .map(aVoid -> journalFile))
                        .flatMap(journalFile -> journalFile.close(vertxContext.vertx())
                                .map(aVoid -> journalFile))
                        .flatMap(journalFile -> RxHelper.executeBlocking(context, sfsVertx.getBackgroundPool(),
                                () -> {
                                    try {
                                        write(get(destDirectory).resolve(".successful"), new byte[0],
                                                CREATE_NEW, WRITE);
                                        return (Void) null;
                                    } catch (IOException e) {
                                        throw new RuntimeException(e);
                                    }
                                }))
                        .doOnNext(aVoid -> LOGGER.info("Done exporting container " + persistentContainer.getId()
                                + " to " + destDirectory))
                        .onErrorResumeNext(throwable -> {
                            LOGGER.info("Failed exporting container " + persistentContainer.getId() + " to "
                                    + destDirectory, throwable);
                            return Observable.error(throwable);
                        });

            }).map(new ToVoid<>()).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {
                @Override
                public void onNext(Void aVoid) {
                    JsonObject jsonResponse = new JsonObject();
                    jsonResponse.put("code", HTTP_OK);
                    HttpServerResponse httpResponse = httpServerRequest.response();
                    httpResponse.write(jsonResponse.encode(), UTF_8.toString()).write(DELIMITER_BUFFER);
                }
            });
}

From source file:org.sfs.nodes.compute.container.PutContainer.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {
    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();
    aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAuthenticated(httpServerRequest)).map(aVoid -> httpServerRequest)
            .map(new ValidateHeaderBetweenInteger(X_SFS_OBJECT_INDEX_SHARDS, 1, 1024))
            .map(new ValidateHeaderBetweenInteger(X_SFS_OBJECT_INDEX_REPLICAS, 1, 6))
            .map(new ValidateHeaderBetweenInteger(X_SFS_OBJECT_REPLICAS, 1, 6))
            .map(aVoid -> fromSfsRequest(httpServerRequest)).map(new ValidateContainerPath())
            .flatMap(objectPath -> {//w w  w. j a v a 2 s.c  om
                String accountId = objectPath.accountPath().get();
                String containerId = objectPath.containerPath().get();
                return just(accountId).flatMap(new LoadAccount(vertxContext))
                        .map(new ValidatePersistentAccountExists()).flatMap(persistentAccount -> {
                            TransientContainer transientContainer = TransientContainer
                                    .fromSfsRequest(persistentAccount, httpServerRequest)
                                    .setOwnerGuid(httpServerRequest.getUserAndRole().getUser().getId());
                            return Defer.just(transientContainer)
                                    .flatMap(new ValidateActionContainerCreate(httpServerRequest))
                                    .map(new ToVoid<>()).map(aVoid -> containerId)
                                    .flatMap(new LoadContainer(vertxContext, persistentAccount))
                                    .map(new ValidatePersistentContainerNotExists())
                                    .map(aVoid -> transientContainer)
                                    .flatMap(new PersistContainer(vertxContext))
                                    .map(new ValidateOptimisticContainerLock()).flatMap(persistentContainer -> {
                                        MultiMap headers = httpServerRequest.headers();
                                        CreateObjectIndex createObjectIndex = new CreateObjectIndex(
                                                vertxContext);
                                        if (headers.contains(X_SFS_OBJECT_INDEX_SHARDS)) {
                                            int shards = parseInt(headers.get(X_SFS_OBJECT_INDEX_SHARDS));
                                            createObjectIndex = createObjectIndex.setNumberOfShards(shards);
                                        }
                                        if (headers.contains(X_SFS_OBJECT_INDEX_REPLICAS)) {
                                            int replicas = parseInt(headers.get(X_SFS_OBJECT_INDEX_REPLICAS));
                                            createObjectIndex = createObjectIndex.setNumberOfReplicas(replicas);
                                        }
                                        return createObjectIndex.call(persistentContainer);
                                    });

                        });
            }).single().subscribe(new ConnectionCloseTerminus<PersistentContainer>(httpServerRequest) {
                @Override
                public void onNext(PersistentContainer persistentContainer) {
                    httpServerRequest.response().setStatusCode(HTTP_CREATED);
                }
            });

}

From source file:org.sfs.nodes.compute.container.VerifyRepairAllContainersExecute.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    Defer.aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest)
            .map(new ToVoid<>()).flatMap(aVoid -> {
                ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo();
                Nodes nodes = vertxContext.verticle().nodes();
                MultiMap headers = httpServerRequest.headers();

                long timeout = headers.contains(Jobs.Parameters.TIMEOUT)
                        ? Long.parseLong(headers.get(Jobs.Parameters.TIMEOUT))
                        : 100;/*from   ww  w.j  av a  2 s . c o m*/

                String unparsedForceRemoveVolumes = headers.contains(Jobs.Parameters.FORCE_REMOVE_VOLUMES)
                        ? headers.get(Jobs.Parameters.FORCE_REMOVE_VOLUMES)
                        : null;

                MultiMap params = MultiMap.caseInsensitiveMultiMap();
                if (unparsedForceRemoveVolumes != null) {
                    params.add(Jobs.Parameters.FORCE_REMOVE_VOLUMES, unparsedForceRemoveVolumes);
                }

                TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode();
                MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef);

                httpServerRequest.startProxyKeepAlive();

                return masterNode.executeJob(Jobs.ID.VERIFY_REPAIR_ALL_CONTAINERS_OBJECTS, params, timeout,
                        TimeUnit.MILLISECONDS);
            }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {
                @Override
                public void onNext(Void aVoid) {
                    JsonObject responseJson = new JsonObject().put("code", HTTP_OK).put("message", "Success");
                    httpServerRequest.response().write(responseJson.encode(), StandardCharsets.UTF_8.toString())
                            .write(DELIMITER_BUFFER);
                }
            });
}

From source file:org.sfs.nodes.compute.container.VerifyRepairAllContainersStop.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    Defer.aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest)
            .map(new ValidateHeaderExists(Jobs.Parameters.TIMEOUT))
            .map(new ValidateHeaderBetweenLong(Jobs.Parameters.TIMEOUT, 100, Long.MAX_VALUE))
            .map(new ToVoid<>()).flatMap(aVoid -> {
                ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo();
                Nodes nodes = vertxContext.verticle().nodes();
                MultiMap headers = httpServerRequest.headers();

                long timeout = headers.contains(Jobs.Parameters.TIMEOUT)
                        ? Long.parseLong(headers.get(Jobs.Parameters.TIMEOUT))
                        : 100;/*from w  w w .jav a  2  s .c  o m*/

                TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode();
                MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef);

                httpServerRequest.startProxyKeepAlive();

                return masterNode.stopJob(Jobs.ID.VERIFY_REPAIR_ALL_CONTAINERS_OBJECTS, timeout,
                        TimeUnit.MILLISECONDS);
            }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {
                @Override
                public void onNext(Void aVoid) {
                    JsonObject responseJson = new JsonObject().put("code", HTTP_OK).put("message", "Success");
                    httpServerRequest.response().write(responseJson.encode(), StandardCharsets.UTF_8.toString())
                            .write(DELIMITER_BUFFER);
                }
            });
}

From source file:org.sfs.nodes.compute.container.VerifyRepairAllContainersWait.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    Defer.aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest)
            .map(new ValidateHeaderExists(Jobs.Parameters.TIMEOUT))
            .map(new ValidateHeaderBetweenLong(Jobs.Parameters.TIMEOUT, 100, Long.MAX_VALUE))
            .map(new ToVoid<>()).flatMap(aVoid -> {
                ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo();
                Nodes nodes = vertxContext.verticle().nodes();
                MultiMap headers = httpServerRequest.headers();

                long timeout = headers.contains(Jobs.Parameters.TIMEOUT)
                        ? Long.parseLong(headers.get(Jobs.Parameters.TIMEOUT))
                        : 100;/*from   w w w. j a v  a 2  s. com*/

                TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode();
                MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef);

                httpServerRequest.startProxyKeepAlive();

                return masterNode.waitForJob(Jobs.ID.VERIFY_REPAIR_ALL_CONTAINERS_OBJECTS, timeout,
                        TimeUnit.MILLISECONDS);
            }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {
                @Override
                public void onNext(Void aVoid) {
                    JsonObject responseJson = new JsonObject().put("code", HTTP_OK).put("message", "Success");
                    httpServerRequest.response().write(responseJson.encode(), StandardCharsets.UTF_8.toString())
                            .write(DELIMITER_BUFFER);
                }
            });
}

From source file:org.sfs.nodes.compute.container.VerifyRepairContainerExecute.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    Defer.aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest)
            .map(new ValidateHeaderBetweenLong(Jobs.Parameters.TIMEOUT, 100, Long.MAX_VALUE))
            .map(new ToVoid<>()).map(aVoid -> ObjectPath.fromSfsRequest(httpServerRequest))
            .map(new ValidateContainerPath()).flatMap(objectPath -> {
                ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo();
                Nodes nodes = vertxContext.verticle().nodes();
                MultiMap headers = httpServerRequest.headers();

                long timeout = headers.contains(Jobs.Parameters.TIMEOUT)
                        ? Long.parseLong(headers.get(Jobs.Parameters.TIMEOUT))
                        : 100;// w  w w. j a v a2  s. co m

                String unparsedForceRemoveVolumes = headers.contains(Jobs.Parameters.FORCE_REMOVE_VOLUMES)
                        ? headers.get(Jobs.Parameters.FORCE_REMOVE_VOLUMES)
                        : null;

                MultiMap params = MultiMap.caseInsensitiveMultiMap();
                if (unparsedForceRemoveVolumes != null) {
                    params.add(Jobs.Parameters.FORCE_REMOVE_VOLUMES, unparsedForceRemoveVolumes);
                }
                params.set(Jobs.Parameters.CONTAINER_ID, objectPath.containerPath().get());

                TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode();
                MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef);

                httpServerRequest.startProxyKeepAlive();

                return masterNode.executeJob(Jobs.ID.VERIFY_REPAIR_CONTAINER_OBJECTS, params, timeout,
                        TimeUnit.MILLISECONDS);
            }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {
                @Override
                public void onNext(Void aVoid) {
                    JsonObject responseJson = new JsonObject().put("code", HTTP_OK).put("message", "Success");
                    httpServerRequest.response().write(responseJson.encode(), StandardCharsets.UTF_8.toString())
                            .write(DELIMITER_BUFFER);
                }
            });
}

From source file:org.sfs.nodes.compute.container.VerifyRepairContainerStop.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    Defer.aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest)
            .map(new ValidateHeaderExists(Jobs.Parameters.TIMEOUT))
            .map(new ValidateHeaderBetweenLong(Jobs.Parameters.TIMEOUT, 100, Long.MAX_VALUE))
            .map(new ToVoid<>()).map(aVoid -> ObjectPath.fromSfsRequest(httpServerRequest))
            .map(new ValidateContainerPath()).flatMap(objectPath -> {
                ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo();
                Nodes nodes = vertxContext.verticle().nodes();
                MultiMap headers = httpServerRequest.headers();

                long timeout = headers.contains(Jobs.Parameters.TIMEOUT)
                        ? Long.parseLong(headers.get(Jobs.Parameters.TIMEOUT))
                        : 100;// w  w  w .j  a va 2s  . c om

                TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode();
                MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef);

                httpServerRequest.startProxyKeepAlive();

                return masterNode.stopJob(Jobs.ID.VERIFY_REPAIR_CONTAINER_OBJECTS, timeout,
                        TimeUnit.MILLISECONDS);
            }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {
                @Override
                public void onNext(Void aVoid) {
                    JsonObject responseJson = new JsonObject().put("code", HTTP_OK).put("message", "Success");
                    httpServerRequest.response().write(responseJson.encode(), StandardCharsets.UTF_8.toString())
                            .write(DELIMITER_BUFFER);
                }
            });
}

From source file:org.sfs.nodes.compute.container.VerifyRepairContainerWait.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    Defer.aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest)
            .map(new ValidateHeaderExists(Jobs.Parameters.TIMEOUT))
            .map(new ValidateHeaderBetweenLong(Jobs.Parameters.TIMEOUT, 100, Long.MAX_VALUE))
            .map(new ToVoid<>()).map(aVoid -> ObjectPath.fromSfsRequest(httpServerRequest))
            .map(new ValidateContainerPath()).flatMap(objectPath -> {
                ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo();
                Nodes nodes = vertxContext.verticle().nodes();
                MultiMap headers = httpServerRequest.headers();

                long timeout = headers.contains(Jobs.Parameters.TIMEOUT)
                        ? Long.parseLong(headers.get(Jobs.Parameters.TIMEOUT))
                        : 100;//  ww  w  . ja  v a  2 s  .c o m

                TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode();
                MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef);

                httpServerRequest.startProxyKeepAlive();

                return masterNode.waitForJob(Jobs.ID.VERIFY_REPAIR_CONTAINER_OBJECTS, timeout,
                        TimeUnit.MILLISECONDS);
            }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {
                @Override
                public void onNext(Void aVoid) {
                    JsonObject responseJson = new JsonObject().put("code", HTTP_OK).put("message", "Success");
                    httpServerRequest.response().write(responseJson.encode(), StandardCharsets.UTF_8.toString())
                            .write(DELIMITER_BUFFER);
                }
            });
}

From source file:org.sfs.nodes.compute.containerkeys.ReEncryptContainerKeys.java

License:Apache License

@Override
public void handle(final SfsRequest httpServerRequest) {

    VertxContext<Server> vertxContext = httpServerRequest.vertxContext();

    Defer.aVoid().flatMap(new Authenticate(httpServerRequest))
            .flatMap(new ValidateActionAdminOrSystem(httpServerRequest)).map(aVoid -> httpServerRequest)
            .map(new ValidateHeaderBetweenLong(Jobs.Parameters.TIMEOUT, 100, Long.MAX_VALUE))
            .map(new ToVoid<>()).flatMap(aVoid -> {
                ClusterInfo clusterInfo = vertxContext.verticle().getClusterInfo();
                Nodes nodes = vertxContext.verticle().nodes();
                MultiMap headers = httpServerRequest.headers();

                long timeout = headers.contains(Jobs.Parameters.TIMEOUT)
                        ? Long.parseLong(headers.get(Jobs.Parameters.TIMEOUT))
                        : 100;/*  w w  w.  j  a v  a  2s  . co m*/

                MultiMap params = MultiMap.caseInsensitiveMultiMap();

                TransientServiceDef transientServiceDef = clusterInfo.getCurrentMasterNode();
                MasterNode masterNode = nodes.remoteMasterNode(vertxContext, transientServiceDef);

                httpServerRequest.startProxyKeepAlive();

                return masterNode.executeJob(Jobs.ID.RE_ENCRYPT_CONTAINER_KEYS, params, timeout,
                        TimeUnit.MILLISECONDS);
            }).single().subscribe(new ConnectionCloseTerminus<Void>(httpServerRequest) {
                @Override
                public void onNext(Void aVoid) {
                    JsonObject responseJson = new JsonObject().put("code", HTTP_OK).put("message", "Success");
                    httpServerRequest.response().write(responseJson.encode(), StandardCharsets.UTF_8.toString())
                            .write(DELIMITER_BUFFER);
                }
            });
}