/*
* The MIT License
*
* Copyright 2015 Ahseya.
*
* Permission is hereby granted, free of charge, to any person obtaining a flatCopy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, flatCopy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package com.github.horrorho.liquiddonkey.settings.config;
import com.github.horrorho.liquiddonkey.util.Props;
import com.github.horrorho.liquiddonkey.settings.Property;
import java.util.Properties;
import net.jcip.annotations.Immutable;
import net.jcip.annotations.ThreadSafe;
/**
* Http configuration.
*
* @author Ahseya
*/
@Immutable
@ThreadSafe
public final class HttpConfig {
public static HttpConfig from(Properties properties) {
Props<Property> props = Props.from(properties);
boolean isPersistent = props.getProperty(Property.ENGINE_PERSISTENT, props::asBoolean);
boolean isRelaxedSSL = props.getProperty(Property.HTTP_RELAX_SSL, props::asBoolean);
return from(isPersistent,
isRelaxedSSL,
props.getProperty(Property.HTTP_MAX_CONNECTIONS, props::asInteger),
isPersistent
? props.getProperty(Property.HTTP_RETRY_COUNT_PERSISTENT, props::asInteger)
: props.getProperty(Property.HTTP_RETRY_COUNT, props::asInteger),
isPersistent
? props.getProperty(Property.HTTP_RETRY_DELAY_MS_PERSISTENT, props::asInteger)
: props.getProperty(Property.HTTP_RETRY_DELAY_MS, props::asInteger),
isPersistent
? props.getProperty(Property.HTTP_SOCKET_TIMEOUT_RETRY_COUNT_PERSISTENT, props::asInteger)
: props.getProperty(Property.HTTP_SOCKET_TIMEOUT_RETRY_COUNT, props::asInteger),
props.getProperty(Property.HTTP_TIMEOUT_MS, props::asInteger),
props.getProperty(Property.HTTP_VALID_AFTER_INACTIVITY_MS, props::asInteger),
props.getProperty(Property.HTTP_DEFAULT_USER_AGENT));
}
public static HttpConfig from(
boolean isPersistent,
boolean isRelaxedSSL,
int maxConnections,
int retryCount,
int retryDelayMs,
int socketTimeoutRetryCount,
int timeoutMs,
int validateAfterInactivityMs,
String userAgent) {
return new HttpConfig(
isPersistent,
isRelaxedSSL,
maxConnections,
retryCount,
retryDelayMs,
socketTimeoutRetryCount,
timeoutMs,
validateAfterInactivityMs,
userAgent);
}
private final boolean isPersistent;
private final boolean isRelaxedSSL;
private final int maxConnections;
private final int retryCount;
private final int retryDelayMs;
private final int socketTimeoutRetryCount;
private final int timeoutMs;
private final int validateAfterInactivityMs;
private final String userAgent;
HttpConfig(
boolean isPersistent,
boolean isRelaxedSSL,
int maxConnections,
int retryCount,
int retryDelayMs,
int socketTimeoutRetryCount,
int timeoutMs,
int validateAfterInactivityMs,
String userAgent) {
this.isPersistent = isPersistent;
this.isRelaxedSSL = isRelaxedSSL;
this.maxConnections = maxConnections;
this.retryCount = retryCount;
this.retryDelayMs = retryDelayMs;
this.socketTimeoutRetryCount = socketTimeoutRetryCount;
this.timeoutMs = timeoutMs;
this.validateAfterInactivityMs = validateAfterInactivityMs;
this.userAgent = userAgent;
}
public boolean isPersistent() {
return isPersistent;
}
public boolean isRelaxedSSL() {
return isRelaxedSSL;
}
public int maxConnections() {
return maxConnections;
}
public int retryCount() {
return retryCount;
}
public int retryDelayMs() {
return retryDelayMs;
}
public int socketTimeoutRetryCount() {
return socketTimeoutRetryCount;
}
public int timeoutMs() {
return timeoutMs;
}
public int validateAfterInactivityMs() {
return validateAfterInactivityMs;
}
public String userAgent() {
return userAgent;
}
@Override
public String toString() {
return "HttpConfig{"
+ "isPersistent=" + isPersistent
+ ", isRelaxedSSL=" + isRelaxedSSL
+ ", maxConnections=" + maxConnections
+ ", retryCount=" + retryCount
+ ", retryDelayMs=" + retryDelayMs
+ ", socketTimeoutRetryCount=" + socketTimeoutRetryCount
+ ", timeoutMs=" + timeoutMs
+ ", validateAfterInactivityMs=" + validateAfterInactivityMs
+ ", userAgent=" + userAgent
+ '}';
}
}