This repository has been archived on 2021-12-05. You can view files and clone it, but cannot push or open issues or pull requests.
envoy/server/src/main/java/envoy/server/data/ServerConfig.java

108 lines
3.3 KiB
Java

package envoy.server.data;
import static java.util.function.Function.identity;
import envoy.data.Config;
/**
* @author Leon Hofmeister
* @since Envoy Server v0.2-beta
*/
public final class ServerConfig extends Config {
private static ServerConfig config;
/**
* @return the singleton instance of the server config
* @since Envoy Client v0.1-beta
*/
public static ServerConfig getInstance() {
return config == null ? config = new ServerConfig() : config;
}
private ServerConfig() {
super(".envoy-server");
put("enter-to-stop", "dev-stop", Boolean::parseBoolean);
// parameters for issue reporting
put("issueCreationURL", "i-url", identity());
put("issueAuthToken", "i-token", identity());
put("userMadeLabel", "l-um", identity());
put("bugLabel", "l-b", identity());
put("featureLabel", "l-f", identity());
// enabling/ disabling several processors
put("enableIssueReporting", "e-ir", Boolean::parseBoolean);
put("enableGroups", "e-g", Boolean::parseBoolean);
put("enableAttachments", "e-a", Boolean::parseBoolean);
// user authentication
put("authTokenExpiration", "tok-exp", Integer::parseInt);
}
/**
* @return true if this server should be stoppable by pressing enter
* @since Envoy Server v0.2-beta
*/
public Boolean isEnterToStop() { return (Boolean) items.get("enter-to-stop").get(); }
/**
* @return {@code true} if issue reporting is enabled
* @since Envoy Client v0.3-alpha
*/
public Boolean isIssueReportingEnabled() {
return (Boolean) items.get("enableIssueReporting").get();
}
/**
* @return {@code true} if attachment support has been enabled
* @since Envoy Client v0.3-alpha
*/
public Boolean isAttachmentSupportEnabled() {
return (Boolean) items.get("enableAttachments").get();
}
/**
* @return {@code true} if group support has been enabled
* @since Envoy Client v0.3-alpha
*/
public Boolean isGroupSupportEnabled() { return (Boolean) items.get("enableGroups").get(); }
/**
* @return the URL where issues should be uploaded to
* @since Envoy Client v0.1-alpha
*/
public String getIssueReportingURL() { return (String) items.get("issueCreationURL").get(); }
/**
* @return the String representation for the "{@code user made}" - label
* @since Envoy Client v0.1-alpha
*/
public String getUserMadeLabel() { return (String) items.get("userMadeLabel").get(); }
/**
* @return the String representation for the "{@code user made}" - label
* @since Envoy Client v0.1-alpha
*/
public String getBugLabel() { return (String) items.get("bugLabel").get(); }
/**
* @return the String representation for the "{@code user made}" - label
* @since Envoy Client v0.1-alpha
*/
public String getFeatureLabel() { return (String) items.get("featureLabel").get(); }
/**
* @return the authorization token used to authenticate to
* {@link ServerConfig#getIssueReportingURL()}. If null, authorization is expected to
* occur via a query_param or via a basic user-password-combination
* @since Envoy Server v0.2-beta
*/
public String getIssueAuthToken() { return (String) items.get("issueAuthToken").get(); }
/**
* @return the amount of days after which user authentication tokens expire
* @since Envoy Server v0.2-beta
*/
public Integer getAuthTokenExpiration() {
return (Integer) items.get("authTokenExpiration").get();
}
}