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

com.github.davidmoten.odata.client.internal.RequestOptionsImpl Maven / Gradle / Ivy

The newest version!
package com.github.davidmoten.odata.client.internal;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.TimeUnit;

import com.github.davidmoten.odata.client.RequestHeader;
import com.github.davidmoten.odata.client.RequestOptions;

public class RequestOptionsImpl implements RequestOptions {

    private final Optional requestConnectTimeoutMs;
    private final Optional requestReadTimeoutMs;
    private final List requestHeaders;
    private final Map queries;
    private final Optional urlOverride;

    public RequestOptionsImpl(Optional requestConnectTimeoutMs,
            Optional requestReadTimeoutMs, List requestHeaders,
            Map queries, Optional urlOverride) {
        this.requestConnectTimeoutMs = requestConnectTimeoutMs;
        this.requestReadTimeoutMs = requestReadTimeoutMs;
        this.requestHeaders = requestHeaders;
        this.queries = queries;
        this.urlOverride = urlOverride;

    }

    public RequestOptionsImpl(RequestOptions r) {
        this(r.requestConnectTimeoutMs(), r.requestReadTimeoutMs(), r.getRequestHeaders(),
                r.getQueries(), r.getUrlOverride());
    }

    public RequestOptionsImpl withConnectTimeoutMs(long duration, TimeUnit unit) {
        return new RequestOptionsImpl(Optional.of(unit.toMillis(duration)), requestReadTimeoutMs, requestHeaders,
                queries, urlOverride);
    }

    public RequestOptionsImpl withReadTimeoutMs(long duration, TimeUnit unit) {
        return new RequestOptionsImpl(requestConnectTimeoutMs, Optional.of(unit.toMillis(duration)), requestHeaders,
                queries, urlOverride);
    }

    public RequestOptionsImpl withRequestHeader(String name, String value) {
        List h = new ArrayList<>(requestHeaders);
        h.add(RequestHeader.create(name, value));
        return new RequestOptionsImpl(requestConnectTimeoutMs, requestReadTimeoutMs, h, queries,
                urlOverride);
    }

    @Override
    public Optional requestConnectTimeoutMs() {
        return requestConnectTimeoutMs;
    }

    @Override
    public Optional requestReadTimeoutMs() {
        return requestReadTimeoutMs;
    }

    @Override
    public List getRequestHeaders() {
        return requestHeaders;
    }

    @Override
    public Map getQueries() {
        return queries;
    }

    @Override
    public Optional getUrlOverride() {
        return urlOverride;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy