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(); } }