Example usage for io.vertx.core MultiMap caseInsensitiveMultiMap

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

Introduction

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

Prototype

static MultiMap caseInsensitiveMultiMap() 

Source Link

Document

Create a multi-map implementation with case insensitive keys, for instance it can be used to hold some HTTP headers.

Usage

From source file:com.hubrick.vertx.s3.client.S3Client.java

License:Apache License

private void populateHeadResponseHeaders(MultiMap headers, HeadObjectResponseHeaders headResponseHeaders) {
    populateCommonResponseHeaders(headers, headResponseHeaders);
    populateServerSideEncryptionResponseHeaders(headers, headResponseHeaders);
    headResponseHeaders.setAmzExpiration(Optional.ofNullable(headers.get(Headers.X_AMZ_EXPIRATION))
            .filter(StringUtils::isNotBlank).orElse(null));
    headResponseHeaders.setAmzMissingMeta(Optional.ofNullable(headers.get(Headers.X_AMZ_MISSING_META))
            .filter(StringUtils::isNotBlank).orElse(null));
    headResponseHeaders/* ww  w  .  ja  v  a  2 s. co m*/
            .setAmzReplicationStatus(Optional.ofNullable(headers.get(Headers.X_AMZ_REPLICATION_STATUS))
                    .filter(StringUtils::isNotBlank).map(ReplicationStatus::valueOf).orElse(null));
    headResponseHeaders.setAmzRestore(Optional.ofNullable(headers.get(Headers.X_AMZ_RESTORE))
            .filter(StringUtils::isNotBlank).orElse(null));
    headResponseHeaders.setAmzStorageClass(Optional.ofNullable(headers.get(Headers.X_AMZ_STORAGE_CLASS))
            .filter(StringUtils::isNotBlank).map(StorageClass::fromString).orElse(null));

    final MultiMap amzMeta = MultiMap.caseInsensitiveMultiMap();
    StreamSupport.stream(headers.spliterator(), true)
            .filter(header -> header.getKey().toLowerCase().startsWith(Headers.X_AMZ_META_PREFIX))
            .forEach(header -> amzMeta.add(header.getKey().replaceFirst(Headers.X_AMZ_META_PREFIX, ""),
                    header.getValue()));
    headResponseHeaders.setAmzMeta(amzMeta);
}

From source file:com.thesoftwarefactory.vertx.web.mvc.impl.ContentResultImpl.java

License:Apache License

@Override
public ContentResult header(String name, String value) {
    if (headers == null) {
        headers = MultiMap.caseInsensitiveMultiMap();
    }//  w  w w. j  a va 2s  .  c o  m

    headers.add(name, value);

    return this;
}

From source file:de.braintags.netrelay.controller.api.MailController.java

License:Open Source License

private static MailAttachment createAttachment(RoutingContext context, URI uri, String cidName) {
    UriMailAttachment attachment = new UriMailAttachment(uri);
    attachment.setName(cidName);/*  w ww.  j  a v  a 2  s.c  o  m*/
    attachment.setContentType(getContentType(uri));
    attachment.setDisposition("inline");
    MultiMap headers = MultiMap.caseInsensitiveMultiMap();
    headers.add("Content-ID", "<" + cidName + ">");
    attachment.setHeaders(headers);
    return attachment;
}

From source file:examples.GraphQLExamples.java

License:Apache License

public void handlerSetupGraphiQLAuthn(GraphQL graphQL, Router router) {
    GraphQLHandlerOptions options = new GraphQLHandlerOptions()
            .setGraphiQLOptions(new GraphiQLOptions().setEnabled(true));

    GraphQLHandler graphQLHandler = GraphQLHandler.create(graphQL, options).graphiQLRequestHeaders(rc -> {
        String token = rc.get("token");
        return MultiMap.caseInsensitiveMultiMap().add(HttpHeaders.AUTHORIZATION, "Bearer " + token);
    });/*from   w  w w. j  a  va  2s. co m*/
}

From source file:org.eclipse.hono.devices.HonoHttpDevice.java

License:Open Source License

/**
 * Send a message to Hono HTTP adapter. Delay any successful response by 1000 milliseconds.
 *
 * @param payload JSON object that will be sent as UTF-8 encoded String.
 * @param headersToAdd A map that contains all headers to add to the http request.
 * @param asEvent If {@code true}, an event message is sent, otherwise a telemetry message.
 * @return CompletableFuture&lt;MultiMap&gt; A completable future that contains the HTTP response in a MultiMap.
 *//* ww w .  java  2  s  . c  o m*/
private CompletableFuture<MultiMap> sendMessage(final JsonObject payload, final MultiMap headersToAdd,
        final boolean asEvent) {
    final CompletableFuture<MultiMap> result = new CompletableFuture<>();

    final Predicate<Integer> successfulStatus = statusCode -> statusCode == HttpURLConnection.HTTP_ACCEPTED;
    final HttpClientRequest req = vertx.createHttpClient()
            .post(HONO_HTTP_ADAPTER_PORT, HONO_HTTP_ADAPTER_HOST, asEvent ? "/event" : "/telemetry")
            .handler(response -> {
                if (successfulStatus.test(response.statusCode())) {
                    vertx.setTimer(1000, l -> result.complete(response.headers()));
                } else {
                    result.completeExceptionally(new ServiceInvocationException(response.statusCode()));
                }
            }).exceptionHandler(t -> result.completeExceptionally(t));

    req.headers().addAll(headersToAdd);
    req.headers()
            .addAll(MultiMap.caseInsensitiveMultiMap()
                    .add(HttpHeaders.AUTHORIZATION, getBasicAuth(TENANT_ID, DEVICE_AUTH_ID, DEVICE_PASSWORD))
                    .add(HttpHeaders.ORIGIN, ORIGIN_URI));

    if (payload == null) {
        req.end();
    } else {
        req.end(payload.encode());
    }
    return result;
}

From source file:org.eclipse.hono.devices.HonoHttpDevice.java

License:Open Source License

/**
 * Send messages to Hono HTTP adapter in a sequence.
 * <p>// w w  w  .j av  a  2  s .co  m
 * Alternate the event every 4th time to be an event.
 */
protected void sendData() {
    // Send single messages sequentially in a loop and print a summary of the message deliveries.
    System.out.println(String.format("Total number of messages: %s", messages.size()));

    messages.stream().forEachOrdered(messageType -> {
        final MultiMap headerMap = MultiMap.caseInsensitiveMultiMap();
        headerMap.add(HttpHeaders.CONTENT_TYPE, messageType.contentType);
        Optional.ofNullable(messageType.ttd).ifPresent(
                timeToDeliver -> headerMap.add(Constants.HEADER_TIME_TIL_DISCONNECT, timeToDeliver.toString()));

        System.out.println(String.format("Sending message type %s", messageType.toString()));

        final CompletableFuture<MultiMap> responseFuture = sendMessage(messageType.payload, headerMap,
                messageType.isEvent);
        try {
            final MultiMap resultMap = responseFuture.get();
            System.out.println(String.format("Got %d response keys.", resultMap.size()));
            resultMap.entries().stream().forEach(entry -> {
                System.out.println(String.format("  %s:%s", entry.getKey(), entry.getValue()));
            });
        } catch (final InterruptedException e) {
            e.printStackTrace();
        } catch (final ExecutionException e) {
            e.printStackTrace();
        }
    });

    // give some time for flushing asynchronous message buffers before shutdown
    vertx.setTimer(2000, timerId -> {
        vertx.close();
    });
}

From source file:org.eclipse.hono.tests.CrudHttpClient.java

License:Open Source License

/**
 * Creates a resource using an HTTP POST request.
 * /*from   w w w. j a v a 2  s .c  o m*/
 * @param uri The URI to post to.
 * @param body The body to post (may be {@code null}).
 * @param contentType The content type to set in the request (may be {@code null}).
 * @param successPredicate A predicate on the returned HTTP status code for determining success.
 * @return A future that will succeed if the predicate evaluates to {@code true}.
 * @throws NullPointerException if URI or predicate are {@code null}.
 */
public Future<Void> create(final String uri, final Buffer body, final String contentType,
        final Predicate<Integer> successPredicate) {

    final MultiMap headers = Optional.ofNullable(contentType)
            .map(ct -> MultiMap.caseInsensitiveMultiMap().add(HttpHeaders.CONTENT_TYPE, contentType))
            .orElse(null);

    return create(uri, body, headers, successPredicate).compose(ok -> Future.succeededFuture());
}

From source file:org.eclipse.hono.tests.CrudHttpClient.java

License:Open Source License

/**
 * Updates a resource using an HTTP PUT request.
 * /*from   w w  w .j a  v  a  2 s. co  m*/
 * @param uri The resource to update.
 * @param body The content to update the resource with.
 * @param contentType The content type to set in the request.
 * @param successPredicate A predicate on the returned HTTP status code for determining success.
 * @return A future that will succeed if the predicate evaluates to {@code true}.
 * @throws NullPointerException if URI or predicate are {@code null}.
 */
public Future<Void> update(final String uri, final Buffer body, final String contentType,
        final Predicate<Integer> successPredicate) {

    final MultiMap headers = Optional.ofNullable(contentType)
            .map(ct -> MultiMap.caseInsensitiveMultiMap().add(HttpHeaders.CONTENT_TYPE, ct)).orElse(null);

    return update(uri, body, headers, successPredicate).compose(ok -> Future.succeededFuture());
}

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;//www .ja va 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.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;/*from  w  w  w .  j  a  va  2s  .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);
                }
            });
}