diff --git a/src/main/java/com/plaid/client/ApiClient.java b/src/main/java/com/plaid/client/ApiClient.java index 2274e7680..f79f328f3 100644 --- a/src/main/java/com/plaid/client/ApiClient.java +++ b/src/main/java/com/plaid/client/ApiClient.java @@ -15,6 +15,7 @@ import retrofit2.converter.scalars.ScalarsConverterFactory; import com.plaid.client.auth.HttpBasicAuth; import com.plaid.client.auth.HttpBearerAuth; +import com.plaid.client.request.PlaidApi; import com.plaid.client.auth.ApiKeyAuth; import java.io.IOException; @@ -114,6 +115,16 @@ public ApiClient(Map apiKeys) { addAuthorization(authName, auth); } } + + /** + * Helper constructor for creating an ApiClient and setting the environment + * @param apiKeys + * @param environment + */ + public ApiClient(Map apiKeys, Environment environment) { + this(apiKeys); + this.setPlaidAdapter(environment); + } /** * Basic constructor for single auth name @@ -157,17 +168,18 @@ public void createDefaultAdapter() { .addConverterFactory(ScalarsConverterFactory.create()) .addConverterFactory(GsonCustomConverterFactory.create(json.getGson())); } - public void setPlaidAdapter(String baseUrl) { + public void setPlaidAdapter(Environment environment) { json = new JSON(); - - List PLAID_ENVS = Arrays.asList("https://sandbox.plaid.com", "https://production.plaid.com", "https://development.plaid.com"); - - if(!PLAID_ENVS.contains(baseUrl)) { - System.out.println("baseUrl not found in PLAID_ENVS, must be one of the following: https://sandbox.plaid.com, https://production.plaid.com, https://development.plaid.com"); - } - - if (!baseUrl.endsWith("/")) - baseUrl = baseUrl + "/"; + + String baseUrl = environment.toString(); +// final List PLAID_ENVS = Arrays.asList("https://sandbox.plaid.com", "https://production.plaid.com", "https://development.plaid.com"); +// +// if(!PLAID_ENVS.contains(baseUrl)) { +// System.out.println("baseUrl not found in PLAID_ENVS, must be one of the following: https://sandbox.plaid.com, https://production.plaid.com, https://development.plaid.com"); +// } +// +// if (!baseUrl.endsWith("/")) +// baseUrl = baseUrl + "/"; adapterBuilder = new Retrofit .Builder() @@ -183,6 +195,10 @@ public S createService(Class serviceClass) { return adapterBuilder.client(okBuilder.build()).build().create(serviceClass); } } + + public PlaidApi newPlaidApi() { + return createService(PlaidApi.class); + } public ApiClient setDateFormat(DateFormat dateFormat) { this.json.setDateFormat(dateFormat); diff --git a/src/main/java/com/plaid/client/Environment.java b/src/main/java/com/plaid/client/Environment.java new file mode 100644 index 000000000..649600aee --- /dev/null +++ b/src/main/java/com/plaid/client/Environment.java @@ -0,0 +1,30 @@ +package com.plaid.client; + +/** + * The Plaid environment to be used when making API calls. + *
+ * See quickstart for the difference between them. + * @author Sam Hieken + * + */ +public enum Environment { + PRODUCTION, DEVELOPMENT, SANDBOX; + + /** + * Converts the Plaid environment into its URL form. + */ + @Override + public String toString() { + switch (this) { + + case PRODUCTION: + return "https://production.plaid.com/"; + case DEVELOPMENT: + return "https://development.plaid.com/"; + case SANDBOX: + return "https://sandbox.plaid.com/"; + } + + return null; + } +} diff --git a/src/test/java/com/plaid/client/integration/AbstractIntegrationTest.java b/src/test/java/com/plaid/client/integration/AbstractIntegrationTest.java index 30d337395..f37b1c82c 100644 --- a/src/test/java/com/plaid/client/integration/AbstractIntegrationTest.java +++ b/src/test/java/com/plaid/client/integration/AbstractIntegrationTest.java @@ -4,6 +4,7 @@ import com.google.gson.Gson; import com.plaid.client.ApiClient; +import com.plaid.client.Environment; import com.plaid.client.model.Error; import com.plaid.client.model.Item; import com.plaid.client.request.PlaidApi; @@ -60,7 +61,7 @@ public void setUpClient() throws Exception { apiKeys.put("secret", plaidSecret); apiKeys.put("plaidVersion", "2020-09-14"); apiClient = new ApiClient(apiKeys); - apiClient.setPlaidAdapter(ApiClient.Sandbox); + apiClient.setPlaidAdapter(Environment.SANDBOX); plaidClient = apiClient.createService(PlaidApi.class); }