From b93eeafb2668a795a06de330e7114e0f57d35007 Mon Sep 17 00:00:00 2001 From: Martin Vogel <martin.vogel@sinc.de> Date: Wed, 22 Jun 2022 18:32:27 +0200 Subject: [PATCH] #414 Extend config by dev, prod and test environments --- .../fitconnect/client/ClientFactory.java | 27 ++++++---- .../dependency/ApplicationConfig.java | 50 ++++++++++++++++--- sdk.conf | 20 ++++++-- 3 files changed, 76 insertions(+), 21 deletions(-) diff --git a/client/src/main/java/de/fitko/fitconnect/client/ClientFactory.java b/client/src/main/java/de/fitko/fitconnect/client/ClientFactory.java index fa766fb69..6565cc60d 100644 --- a/client/src/main/java/de/fitko/fitconnect/client/ClientFactory.java +++ b/client/src/main/java/de/fitko/fitconnect/client/ClientFactory.java @@ -10,7 +10,6 @@ import de.fitko.fitconnect.api.services.crypto.CryptoService; import de.fitko.fitconnect.api.services.metadata.MetadataService; import de.fitko.fitconnect.api.services.validation.CertificateValidator; import de.fitko.fitconnect.api.services.validation.MetadataValidator; -import de.fitko.fitconnect.dependency.ApplicationConfig; import de.fitko.fitconnect.core.SubmissionSender; import de.fitko.fitconnect.core.SubmissionSubscriber; import de.fitko.fitconnect.core.auth.DefaultOAuthService; @@ -19,16 +18,22 @@ import de.fitko.fitconnect.core.http.ProxyConfig; import de.fitko.fitconnect.core.metadata.MetadataUploadService; import de.fitko.fitconnect.core.validation.KeyValidator; import de.fitko.fitconnect.core.validation.MetadataSubmissionValidator; +import de.fitko.fitconnect.dependency.ApplicationConfig; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.web.client.RestTemplate; import java.io.File; public class ClientFactory { + private static final Logger logger = LoggerFactory.getLogger(ClientFactory.class); + public static final String CONFIG_FILENAME = "sdk.conf"; public static final String CONFIG_CONTEXT = "sdk"; - private ClientFactory() {} + private ClientFactory() { + } public static SenderClient.WithDestination senderClient() { final ApplicationConfig config = loadConfig(); @@ -41,17 +46,17 @@ public class ClientFactory { final ApplicationConfig config = loadConfig(); final RestTemplate restTemplate = getRestTemplate(config); final Subscriber subscriber = getSubscriber(config, restTemplate); - return SubscriberClient.builder(subscriber); + return SubscriberClient.builder(subscriber, config.getClientId(), config.getClientSecret(), config.getPrivateKey()); } - private static Subscriber getSubscriber(ApplicationConfig config, RestTemplate restTemplate) { + private static Subscriber getSubscriber(final ApplicationConfig config, final RestTemplate restTemplate) { final OAuthService oAuthService = getOAuthService(config, restTemplate); final CryptoService cryptoService = getCryptoService(); final MetadataValidator validator = new MetadataSubmissionValidator(); - return new SubmissionSubscriber(oAuthService,cryptoService, validator); + return new SubmissionSubscriber(oAuthService, cryptoService, validator); } - private static Sender getSender(ApplicationConfig config, RestTemplate restTemplate) { + private static Sender getSender(final ApplicationConfig config, final RestTemplate restTemplate) { final OAuthService authService = getOAuthService(config, restTemplate); final CryptoService cryptoService = getCryptoService(); final CertificateValidator validator = new KeyValidator(); @@ -63,11 +68,11 @@ public class ClientFactory { return new JWECryptoService(); } - private static OAuthService getOAuthService(ApplicationConfig config, RestTemplate restTemplate) { - return new DefaultOAuthService(restTemplate, config.getAuthTokenUrl()); + private static OAuthService getOAuthService(final ApplicationConfig config, final RestTemplate restTemplate) { + return new DefaultOAuthService(restTemplate, config.getActiveEnvironment().getAuthTokenUrl()); } - private static RestTemplate getRestTemplate(ApplicationConfig config) { + private static RestTemplate getRestTemplate(final ApplicationConfig config) { final ProxyConfig proxyConfig = new ProxyConfig(config.getHttpProxyHost(), config.getHttpProxyPort()); return proxyConfig.proxyRestTemplate(); } @@ -75,6 +80,8 @@ public class ClientFactory { private static ApplicationConfig loadConfig() { final Config configFile = ConfigFactory.parseFile(new File(CONFIG_FILENAME)); final Config sdkConfig = ConfigFactory.load(configFile).getConfig(CONFIG_CONTEXT); - return ConfigBeanFactory.create(sdkConfig, ApplicationConfig.class); + final ApplicationConfig applicationConfig = ConfigBeanFactory.create(sdkConfig, ApplicationConfig.class); + logger.info("Using sdk environment config {} with {}", applicationConfig.getMode(), applicationConfig); + return applicationConfig; } } diff --git a/dependency/src/main/java/de/fitko/fitconnect/dependency/ApplicationConfig.java b/dependency/src/main/java/de/fitko/fitconnect/dependency/ApplicationConfig.java index 5904e9537..dcd890189 100644 --- a/dependency/src/main/java/de/fitko/fitconnect/dependency/ApplicationConfig.java +++ b/dependency/src/main/java/de/fitko/fitconnect/dependency/ApplicationConfig.java @@ -1,36 +1,70 @@ package de.fitko.fitconnect.dependency; +import de.fitko.fitconnect.core.SubmissionSender; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import java.util.List; import java.util.Properties; @Getter @Setter @ToString public class ApplicationConfig { - + private String httpProxyHost; private Integer httpProxyPort; - private String authTokenUrl; - private List<String> apiUrls; - private String clientId; private String clientSecret; + private String privateKey; + + private Environments environments; + private String mode; + + public Environment getActiveEnvironment() { + switch (mode) { + case "PROD": + return environments.prod; + case "TEST": + return environments.test; + default: + return environments.dev; + } + } public Properties getAsProperties() { - var props = new Properties(); + final var props = new Properties(); props.put("httpProxyHost", getHttpProxyHost()); props.put("httpProxyPort", getHttpProxyPort()); - props.put("authTokenUrl", getAuthTokenUrl()); - props.put("apiUrls", String.join(",",getApiUrls())); props.put("clientId", clientId); props.put("clientSecret", clientSecret); + props.put("privateKey", privateKey); + //props.put("environment", getActiveEnvironment(mode, environments)); return props; } + + + @Getter + @Setter + @ToString + @NoArgsConstructor + static public class Environments { + private Environment dev; + private Environment prod; + private Environment test; + } + + @Getter + @Setter + @ToString + @NoArgsConstructor + static public class Environment { + private String authTokenUrl; + } } diff --git a/sdk.conf b/sdk.conf index 50dacfca5..d1f7c0af3 100644 --- a/sdk.conf +++ b/sdk.conf @@ -3,10 +3,24 @@ sdk { clientId: "781f6213-0f0f-4a79-9372-e7187ffda98b" clientSecret: "PnzR8Vbmhpv_VwTkT34wponqXWK8WBm-LADlryYdV4o" + privateKey: "123" httpProxyHost: "" - httpProxyPort: "0" + httpProxyPort: 0 - apiUrls: ["http://test.url1", "http://test.url2", "http://test.url3"] - authTokenUrl: "https://auth-testing.fit-connect.fitko.dev/token" + # Mode which environment should be active DEV, PROD or TEST + mode: "DEV" + + environments { + dev { + authTokenUrl: "https://auth-testing.fit-connect.fitko.dev/token" + # apiUrls: ["http://test.url1", "http://test.url2", "http://test.url3"] + } + prod { + authTokenUrl: "https://auth-prod.fit-connect.fitko.dev/token" + } + test { + authTokenUrl: "https://auth-test.fit-connect.fitko.dev/token" + } + } } -- GitLab