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

com.github.lontime.exthttp.configuration.ClientOption Maven / Gradle / Ivy

package com.github.lontime.exthttp.configuration;

import java.time.Duration;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

import com.github.lontime.base.commonj.constants.Consts;
import com.github.lontime.exthttp.common.ClientCookieDecoderEnum;
import com.github.lontime.exthttp.common.ClientCookieEncoderEnum;
import com.github.lontime.exthttp.common.ConfigKey;
import io.netty.handler.codec.http.cookie.Cookie;
import lombok.Getter;
import lombok.Setter;
import reactor.netty.http.HttpProtocol;
import reactor.netty.transport.ProxyProvider;

/**
 * ClientOption.
 * @author lontime
 * @since 1.0
 */
@Getter
@Setter
public class ClientOption {

    public static final ClientOption DEFAULT = new ClientOption();

    private String name = Consts.DEFAULT_OBJECT_NAME;

    private String connectionName;

    private List protocols = Arrays.asList(HttpProtocol.HTTP11);

    private String host;

    private Integer port;

    private String baseUrl;

    private Boolean keepAlive;

    private Map headers;

    private List cookies;

    private ClientCookieEncoderEnum cookieEncoder;

    private ClientCookieDecoderEnum cookieDecoder;

    private Boolean compress;

    private Boolean disableRetry;

    private ResponseDecoder responseDecoder;

    private Boolean wiretapEnabled;

    private WiretapSpec wiretapSpec;

    private Boolean secure;

    private Boolean http11Secure;

    private Boolean http2Secure;

    private Boolean noSSL;

    private Boolean noProxy;

    private Boolean warmup = Boolean.FALSE;

    private Boolean followRedirect;

    private Redirect redirect;

    private Map channelOptions;

    private Map epollChannelOptions;

    private Map nioChannelOptions;

    private Map attrs;

    private Duration responseTimeout = Duration.ofMinutes(2);

    private Proxy proxy;

    @Getter
    @Setter
    public static class ResponseDecoder {
        private Boolean parseHttpAfterConnectRequest;
        private Integer initialBufferSize;
        private Integer maxChunkSize;
        private Integer maxHeaderSize;
        private Integer maxInitialLineLength;
        private Boolean failOnMissingResponse;
        private Boolean allowDuplicateContentLengths;
        private Boolean validateHeaders;
        private Integer h2cMaxContentLength;
    }

    @Getter
    @Setter
    public static class Redirect {

        private Duration responseTimeout;

        private Map headers;

        private Boolean isFollowRedirect;

        private Cookie cookie;

    }

    @Getter
    @Setter
    public static class Proxy {

        private ProxyProvider.Proxy type;

        private String host;

        private Integer port;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy