Skip to content

Commit 2a19f7e

Browse files
feat(client): support setting base URL via env var (#535)
1 parent a7c802c commit 2a19f7e

File tree

4 files changed

+18
-22
lines changed

4 files changed

+18
-22
lines changed

README.md

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ import com.tryfinch.api.models.HrisDirectoryListPage;
5454
import com.tryfinch.api.models.HrisDirectoryListParams;
5555

5656
FinchClient client = FinchOkHttpClient.builder()
57-
// Configures using the `FINCH_CLIENT_ID`, `FINCH_CLIENT_SECRET` and `FINCH_WEBHOOK_SECRET` environment variables
57+
// Configures using the `FINCH_CLIENT_ID`, `FINCH_CLIENT_SECRET`, `FINCH_WEBHOOK_SECRET` and `FINCH_BASE_URL` environment variables
5858
.fromEnv()
5959
.accessToken("My Access Token")
6060
.build();
@@ -71,7 +71,7 @@ import com.tryfinch.api.client.FinchClient;
7171
import com.tryfinch.api.client.okhttp.FinchOkHttpClient;
7272

7373
FinchClient client = FinchOkHttpClient.builder()
74-
// Configures using the `FINCH_CLIENT_ID`, `FINCH_CLIENT_SECRET` and `FINCH_WEBHOOK_SECRET` environment variables
74+
// Configures using the `FINCH_CLIENT_ID`, `FINCH_CLIENT_SECRET`, `FINCH_WEBHOOK_SECRET` and `FINCH_BASE_URL` environment variables
7575
.fromEnv()
7676
.accessToken("My Access Token")
7777
.build();
@@ -95,19 +95,20 @@ import com.tryfinch.api.client.FinchClient;
9595
import com.tryfinch.api.client.okhttp.FinchOkHttpClient;
9696

9797
FinchClient client = FinchOkHttpClient.builder()
98-
// Configures using the `FINCH_CLIENT_ID`, `FINCH_CLIENT_SECRET` and `FINCH_WEBHOOK_SECRET` environment variables
98+
// Configures using the `FINCH_CLIENT_ID`, `FINCH_CLIENT_SECRET`, `FINCH_WEBHOOK_SECRET` and `FINCH_BASE_URL` environment variables
9999
.fromEnv()
100100
.accessToken("My Access Token")
101101
.build();
102102
```
103103

104104
See this table for the available options:
105105

106-
| Setter | Environment variable | Required | Default value |
107-
| --------------- | ---------------------- | -------- | ------------- |
108-
| `clientId` | `FINCH_CLIENT_ID` | false | - |
109-
| `clientSecret` | `FINCH_CLIENT_SECRET` | false | - |
110-
| `webhookSecret` | `FINCH_WEBHOOK_SECRET` | false | - |
106+
| Setter | Environment variable | Required | Default value |
107+
| --------------- | ---------------------- | -------- | ---------------------------- |
108+
| `clientId` | `FINCH_CLIENT_ID` | false | - |
109+
| `clientSecret` | `FINCH_CLIENT_SECRET` | false | - |
110+
| `webhookSecret` | `FINCH_WEBHOOK_SECRET` | false | - |
111+
| `baseUrl` | `FINCH_BASE_URL` | true | `"https://api.tryfinch.com"` |
111112

112113
> [!TIP]
113114
> Don't create more than one client in the same application. Each client has a connection pool and
@@ -139,7 +140,7 @@ import com.tryfinch.api.models.HrisDirectoryListParams;
139140
import java.util.concurrent.CompletableFuture;
140141

141142
FinchClient client = FinchOkHttpClient.builder()
142-
// Configures using the `FINCH_CLIENT_ID`, `FINCH_CLIENT_SECRET` and `FINCH_WEBHOOK_SECRET` environment variables
143+
// Configures using the `FINCH_CLIENT_ID`, `FINCH_CLIENT_SECRET`, `FINCH_WEBHOOK_SECRET` and `FINCH_BASE_URL` environment variables
143144
.fromEnv()
144145
.accessToken("My Access Token")
145146
.build();
@@ -157,7 +158,7 @@ import com.tryfinch.api.models.HrisDirectoryListParams;
157158
import java.util.concurrent.CompletableFuture;
158159

159160
FinchClientAsync client = FinchOkHttpClientAsync.builder()
160-
// Configures using the `FINCH_CLIENT_ID`, `FINCH_CLIENT_SECRET` and `FINCH_WEBHOOK_SECRET` environment variables
161+
// Configures using the `FINCH_CLIENT_ID`, `FINCH_CLIENT_SECRET`, `FINCH_WEBHOOK_SECRET` and `FINCH_BASE_URL` environment variables
161162
.fromEnv()
162163
.accessToken("My Access Token")
163164
.build();

finch-java-client-okhttp/src/main/kotlin/com/tryfinch/api/client/okhttp/FinchOkHttpClient.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,10 @@ class FinchOkHttpClient private constructor() {
2929
class Builder internal constructor() {
3030

3131
private var clientOptions: ClientOptions.Builder = ClientOptions.builder()
32-
private var baseUrl: String = ClientOptions.PRODUCTION_URL
3332
private var timeout: Timeout = Timeout.default()
3433
private var proxy: Proxy? = null
3534

36-
fun baseUrl(baseUrl: String) = apply {
37-
clientOptions.baseUrl(baseUrl)
38-
this.baseUrl = baseUrl
39-
}
35+
fun baseUrl(baseUrl: String) = apply { clientOptions.baseUrl(baseUrl) }
4036

4137
/**
4238
* Whether to throw an exception if any of the Jackson versions detected at runtime are
@@ -190,7 +186,7 @@ class FinchOkHttpClient private constructor() {
190186
clientOptions
191187
.httpClient(
192188
OkHttpClient.builder()
193-
.baseUrl(baseUrl)
189+
.baseUrl(clientOptions.baseUrl())
194190
.timeout(timeout)
195191
.proxy(proxy)
196192
.build()

finch-java-client-okhttp/src/main/kotlin/com/tryfinch/api/client/okhttp/FinchOkHttpClientAsync.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,10 @@ class FinchOkHttpClientAsync private constructor() {
2929
class Builder internal constructor() {
3030

3131
private var clientOptions: ClientOptions.Builder = ClientOptions.builder()
32-
private var baseUrl: String = ClientOptions.PRODUCTION_URL
3332
private var timeout: Timeout = Timeout.default()
3433
private var proxy: Proxy? = null
3534

36-
fun baseUrl(baseUrl: String) = apply {
37-
clientOptions.baseUrl(baseUrl)
38-
this.baseUrl = baseUrl
39-
}
35+
fun baseUrl(baseUrl: String) = apply { clientOptions.baseUrl(baseUrl) }
4036

4137
/**
4238
* Whether to throw an exception if any of the Jackson versions detected at runtime are
@@ -190,7 +186,7 @@ class FinchOkHttpClientAsync private constructor() {
190186
clientOptions
191187
.httpClient(
192188
OkHttpClient.builder()
193-
.baseUrl(baseUrl)
189+
.baseUrl(clientOptions.baseUrl())
194190
.timeout(timeout)
195191
.proxy(proxy)
196192
.build()

finch-java-core/src/main/kotlin/com/tryfinch/api/core/ClientOptions.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,10 @@ private constructor(
222222

223223
fun removeAllQueryParams(keys: Set<String>) = apply { queryParams.removeAll(keys) }
224224

225+
fun baseUrl(): String = baseUrl
226+
225227
fun fromEnv() = apply {
228+
System.getenv("FINCH_BASE_URL")?.let { baseUrl(it) }
226229
System.getenv("FINCH_CLIENT_ID")?.let { clientId(it) }
227230
System.getenv("FINCH_CLIENT_SECRET")?.let { clientSecret(it) }
228231
System.getenv("FINCH_WEBHOOK_SECRET")?.let { webhookSecret(it) }

0 commit comments

Comments
 (0)