com.clinia.config.RequestOptions Maven / Gradle / Ivy
package com.clinia.config;
import com.clinia.utils.StringUtils;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;
/**
* Request options are used to pass extra parameters, headers, timeout to the request. Parameters
* set in the request option will override default parameter.
*/
public final class RequestOptions {
private final Map headers = new HashMap<>();
private final Map queryParameters = new HashMap<>();
private Duration readTimeout;
private Duration writeTimeout;
public RequestOptions addExtraHeader(String key, Object value) {
if (value == null) return this;
headers.put(key.toLowerCase(), String.valueOf(value));
return this;
}
public RequestOptions addExtraQueryParameters(String key, Object value) {
if (value == null) return this;
queryParameters.put(key, StringUtils.paramToString((value)));
return this;
}
public Map getExtraHeaders() {
return headers;
}
public Map getExtraQueryParameters() {
return queryParameters;
}
public Map getHeaders() {
return headers;
}
public Map getQueryParameters() {
return queryParameters;
}
public Duration getReadTimeout() {
return readTimeout;
}
public RequestOptions setReadTimeout(Duration readTimeout) {
this.readTimeout = readTimeout;
return this;
}
public Duration getWriteTimeout() {
return writeTimeout;
}
public RequestOptions setWriteTimeout(Duration writeTimeout) {
this.writeTimeout = writeTimeout;
return this;
}
@Override
public String toString() {
return (
"RequestOptions{" +
"headers=" +
headers +
", queryParameters=" +
queryParameters +
", readTimeout=" +
readTimeout +
", writeTimeout=" +
writeTimeout +
'}'
);
}
}