All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.quarkus.vertx.http.runtime.HttpBuildTimeConfig Maven / Gradle / Ivy

The newest version!
package io.quarkus.vertx.http.runtime;

import java.time.Duration;
import java.util.List;
import java.util.Optional;
import java.util.OptionalInt;

import io.quarkus.runtime.annotations.ConfigItem;
import io.quarkus.runtime.annotations.ConfigPhase;
import io.quarkus.runtime.annotations.ConfigRoot;
import io.quarkus.runtime.annotations.ConvertWith;
import io.quarkus.runtime.configuration.NormalizeRootHttpPathConverter;
import io.quarkus.vertx.http.Compressed;
import io.quarkus.vertx.http.Uncompressed;
import io.vertx.core.http.ClientAuth;

@ConfigRoot(name = "http", phase = ConfigPhase.BUILD_AND_RUN_TIME_FIXED)
public class HttpBuildTimeConfig {

    /**
     * The HTTP root path. All web content will be served relative to this root path.
     */
    @ConfigItem(defaultValue = "/")
    @ConvertWith(NormalizeRootHttpPathConverter.class)
    public String rootPath;

    public AuthConfig auth;

    /**
     * Configures the engine to require/request client authentication.
     * {@code NONE, REQUEST, REQUIRED}.
     * 

* When set to {@code REQUIRED}, it's recommended to also set `quarkus.http.insecure-requests=disabled` to disable the * plain HTTP port. If `quarkus.http.insecure-requests` is not set, but this parameter is set to {@code REQUIRED}, then, * `quarkus.http.insecure-requests` is automatically set to `disabled`. */ @ConfigItem(name = "ssl.client-auth", defaultValue = "NONE") public ClientAuth tlsClientAuth; /** * If this is true then only a virtual channel will be set up for vertx web. * We have this switch for testing purposes. */ @ConfigItem public boolean virtual; /** * A common root path for non-application endpoints. Various extension-provided endpoints such as metrics, health, * and openapi are deployed under this path by default. *

* * Relative path (Default, `q`) -> * Non-application endpoints will be served from * `${quarkus.http.root-path}/${quarkus.http.non-application-root-path}`. * * Absolute path (`/q`) -> * Non-application endpoints will be served from the specified path. * * `${quarkus.http.root-path}` -> Setting this path to the same value as HTTP root path disables * this root path. All extension-provided endpoints will be served from `${quarkus.http.root-path}`. *

* If the management interface is enabled, the root path for the endpoints exposed on the management interface * is configured using the `quarkus.management.root-path` property instead of this property. * * @asciidoclet */ @ConfigItem(defaultValue = "q") public String nonApplicationRootPath; /** * The REST Assured client timeout for testing. */ @ConfigItem(defaultValue = "30s") public Duration testTimeout; /** * If enabled then the response body is compressed if the {@code Content-Type} header is set and the value is a compressed * media type as configured via {@link #compressMediaTypes}. *

* Note that the RESTEasy Reactive and Reactive Routes extensions also make it possible to enable/disable compression * declaratively using the annotations {@link io.quarkus.vertx.http.Compressed} and * {@link io.quarkus.vertx.http.Uncompressed}. */ @ConfigItem public boolean enableCompression; /** * When enabled, vert.x will decompress the request's body if it's compressed. *

* Note that the compression format (e.g., gzip) must be specified in the Content-Encoding header * in the request. */ @ConfigItem public boolean enableDecompression; /** * If user adds br, then brotli will be added to the list of supported compression algorithms. * It implies loading libbrotli native library via JNI and in case of native image, * packing the native library into the native image as a resource thus inflating its size. * Note that a native shared object library must be available for your platform in Brotli4J project. *

* Client expresses its capability by sending Accept-Encoding header, e.g. * Accept-Encoding: deflate, gzip, br * Server chooses the compression algorithm based on the client's capabilities and * marks it in a response header, e.g.: * content-encoding: gzip * */ @ConfigItem(defaultValue = "gzip,deflate") public Optional> compressors; /** * List of media types for which the compression should be enabled automatically, unless declared explicitly via * {@link Compressed} or {@link Uncompressed}. */ @ConfigItem(defaultValue = "text/html,text/plain,text/xml,text/css,text/javascript,application/javascript,application/json,application/graphql+json,application/xhtml+xml") public Optional> compressMediaTypes; /** * The compression level used when compression support is enabled. */ @ConfigItem public OptionalInt compressionLevel; }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy