Skip to content

Commit 2b98ed2

Browse files
feat(client): add support for putQueryParam on ClientOptions (#239)
1 parent 6068915 commit 2b98ed2

63 files changed

Lines changed: 253 additions & 1 deletion

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

lithic-java-core/src/main/kotlin/com/lithic/api/client/LithicClientAsyncImpl.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ constructor(
155155
HttpRequest.builder()
156156
.method(HttpMethod.GET)
157157
.addPathSegments("status")
158+
.putAllQueryParams(clientOptions.queryParams)
158159
.putAllQueryParams(params.getQueryParams())
159160
.putAllHeaders(clientOptions.headers)
160161
.putAllHeaders(params.getHeaders())

lithic-java-core/src/main/kotlin/com/lithic/api/client/LithicClientImpl.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ constructor(
149149
HttpRequest.builder()
150150
.method(HttpMethod.GET)
151151
.addPathSegments("status")
152+
.putAllQueryParams(clientOptions.queryParams)
152153
.putAllQueryParams(params.getQueryParams())
153154
.putAllHeaders(clientOptions.headers)
154155
.putAllHeaders(params.getHeaders())

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

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ private constructor(
1818
@get:JvmName("apiKey") val apiKey: String,
1919
@get:JvmName("webhookSecret") val webhookSecret: String?,
2020
@get:JvmName("headers") val headers: ListMultimap<String, String>,
21+
@get:JvmName("queryParams") val queryParams: ListMultimap<String, String>,
2122
@get:JvmName("responseValidation") val responseValidation: Boolean,
2223
) {
2324

@@ -39,6 +40,7 @@ private constructor(
3940
private var clock: Clock = Clock.systemUTC()
4041
private var baseUrl: String = PRODUCTION_URL
4142
private var headers: MutableMap<String, MutableList<String>> = mutableMapOf()
43+
private var queryParams: MutableMap<String, MutableList<String>> = mutableMapOf()
4244
private var responseValidation: Boolean = false
4345
private var maxRetries: Int = 2
4446
private var apiKey: String? = null
@@ -71,6 +73,25 @@ private constructor(
7173

7274
fun removeHeader(name: String) = apply { this.headers.put(name, mutableListOf()) }
7375

76+
fun queryParams(queryParams: Map<String, Iterable<String>>) = apply {
77+
this.queryParams.clear()
78+
putAllQueryParams(queryParams)
79+
}
80+
81+
fun putQueryParam(name: String, value: String) = apply {
82+
this.queryParams.getOrPut(name) { mutableListOf() }.add(value)
83+
}
84+
85+
fun putQueryParams(name: String, values: Iterable<String>) = apply {
86+
this.queryParams.getOrPut(name) { mutableListOf() }.addAll(values)
87+
}
88+
89+
fun putAllQueryParams(queryParams: Map<String, Iterable<String>>) = apply {
90+
queryParams.forEach(this::putQueryParams)
91+
}
92+
93+
fun removeQueryParam(name: String) = apply { this.queryParams.put(name, mutableListOf()) }
94+
7495
fun responseValidation(responseValidation: Boolean) = apply {
7596
this.responseValidation = responseValidation
7697
}
@@ -91,15 +112,19 @@ private constructor(
91112
checkNotNull(apiKey) { "`apiKey` is required but was not set" }
92113

93114
val headers = ArrayListMultimap.create<String, String>()
115+
val queryParams = ArrayListMultimap.create<String, String>()
94116
headers.put("X-Stainless-Lang", "java")
95117
headers.put("X-Stainless-Arch", getOsArch())
96118
headers.put("X-Stainless-OS", getOsName())
97119
headers.put("X-Stainless-OS-Version", getOsVersion())
98120
headers.put("X-Stainless-Package-Version", getPackageVersion())
99121
headers.put("X-Stainless-Runtime-Version", getJavaVersion())
100122
headers.put("X-Lithic-Pagination", "cursor")
101-
headers.put("Authorization", apiKey)
123+
if (!apiKey.isNullOrEmpty()) {
124+
headers.put("Authorization", apiKey)
125+
}
102126
this.headers.forEach(headers::replaceValues)
127+
this.queryParams.forEach(queryParams::replaceValues)
103128

104129
return ClientOptions(
105130
RetryingHttpClient.builder()
@@ -113,6 +138,7 @@ private constructor(
113138
apiKey!!,
114139
webhookSecret,
115140
headers.toUnmodifiable(),
141+
queryParams.toUnmodifiable(),
116142
responseValidation,
117143
)
118144
}

lithic-java-core/src/main/kotlin/com/lithic/api/services/async/AccountHolderServiceAsyncImpl.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ constructor(
5555
HttpRequest.builder()
5656
.method(HttpMethod.POST)
5757
.addPathSegments("account_holders")
58+
.putAllQueryParams(clientOptions.queryParams)
5859
.putAllQueryParams(params.getQueryParams())
5960
.putAllHeaders(clientOptions.headers)
6061
.putAllHeaders(params.getHeaders())
@@ -90,6 +91,7 @@ constructor(
9091
HttpRequest.builder()
9192
.method(HttpMethod.GET)
9293
.addPathSegments("account_holders", params.getPathParam(0))
94+
.putAllQueryParams(clientOptions.queryParams)
9395
.putAllQueryParams(params.getQueryParams())
9496
.putAllHeaders(clientOptions.headers)
9597
.putAllHeaders(params.getHeaders())
@@ -119,6 +121,7 @@ constructor(
119121
HttpRequest.builder()
120122
.method(HttpMethod.PATCH)
121123
.addPathSegments("account_holders", params.getPathParam(0))
124+
.putAllQueryParams(clientOptions.queryParams)
122125
.putAllQueryParams(params.getQueryParams())
123126
.putAllHeaders(clientOptions.headers)
124127
.putAllHeaders(params.getHeaders())
@@ -151,6 +154,7 @@ constructor(
151154
HttpRequest.builder()
152155
.method(HttpMethod.GET)
153156
.addPathSegments("account_holders")
157+
.putAllQueryParams(clientOptions.queryParams)
154158
.putAllQueryParams(params.getQueryParams())
155159
.putAllHeaders(clientOptions.headers)
156160
.putAllHeaders(params.getHeaders())
@@ -195,6 +199,7 @@ constructor(
195199
HttpRequest.builder()
196200
.method(HttpMethod.GET)
197201
.addPathSegments("account_holders", params.getPathParam(0), "documents")
202+
.putAllQueryParams(clientOptions.queryParams)
198203
.putAllQueryParams(params.getQueryParams())
199204
.putAllHeaders(clientOptions.headers)
200205
.putAllHeaders(params.getHeaders())
@@ -231,6 +236,7 @@ constructor(
231236
HttpRequest.builder()
232237
.method(HttpMethod.POST)
233238
.addPathSegments("account_holders", params.getPathParam(0), "resubmit")
239+
.putAllQueryParams(clientOptions.queryParams)
234240
.putAllQueryParams(params.getQueryParams())
235241
.putAllHeaders(clientOptions.headers)
236242
.putAllHeaders(params.getHeaders())
@@ -279,6 +285,7 @@ constructor(
279285
"documents",
280286
params.getPathParam(1)
281287
)
288+
.putAllQueryParams(clientOptions.queryParams)
282289
.putAllQueryParams(params.getQueryParams())
283290
.putAllHeaders(clientOptions.headers)
284291
.putAllHeaders(params.getHeaders())
@@ -324,6 +331,7 @@ constructor(
324331
HttpRequest.builder()
325332
.method(HttpMethod.POST)
326333
.addPathSegments("account_holders", params.getPathParam(0), "documents")
334+
.putAllQueryParams(clientOptions.queryParams)
327335
.putAllQueryParams(params.getQueryParams())
328336
.putAllHeaders(clientOptions.headers)
329337
.putAllHeaders(params.getHeaders())

lithic-java-core/src/main/kotlin/com/lithic/api/services/async/AccountServiceAsyncImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ constructor(
4040
HttpRequest.builder()
4141
.method(HttpMethod.GET)
4242
.addPathSegments("accounts", params.getPathParam(0))
43+
.putAllQueryParams(clientOptions.queryParams)
4344
.putAllQueryParams(params.getQueryParams())
4445
.putAllHeaders(clientOptions.headers)
4546
.putAllHeaders(params.getHeaders())
@@ -73,6 +74,7 @@ constructor(
7374
HttpRequest.builder()
7475
.method(HttpMethod.PATCH)
7576
.addPathSegments("accounts", params.getPathParam(0))
77+
.putAllQueryParams(clientOptions.queryParams)
7678
.putAllQueryParams(params.getQueryParams())
7779
.putAllHeaders(clientOptions.headers)
7880
.putAllHeaders(params.getHeaders())
@@ -103,6 +105,7 @@ constructor(
103105
HttpRequest.builder()
104106
.method(HttpMethod.GET)
105107
.addPathSegments("accounts")
108+
.putAllQueryParams(clientOptions.queryParams)
106109
.putAllQueryParams(params.getQueryParams())
107110
.putAllHeaders(clientOptions.headers)
108111
.putAllHeaders(params.getHeaders())
@@ -137,6 +140,7 @@ constructor(
137140
HttpRequest.builder()
138141
.method(HttpMethod.GET)
139142
.addPathSegments("accounts", params.getPathParam(0), "spend_limits")
143+
.putAllQueryParams(clientOptions.queryParams)
140144
.putAllQueryParams(params.getQueryParams())
141145
.putAllHeaders(clientOptions.headers)
142146
.putAllHeaders(params.getHeaders())

lithic-java-core/src/main/kotlin/com/lithic/api/services/async/AggregateBalanceServiceAsyncImpl.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ constructor(
3535
HttpRequest.builder()
3636
.method(HttpMethod.GET)
3737
.addPathSegments("aggregate_balances")
38+
.putAllQueryParams(clientOptions.queryParams)
3839
.putAllQueryParams(params.getQueryParams())
3940
.putAllHeaders(clientOptions.headers)
4041
.putAllHeaders(params.getHeaders())

lithic-java-core/src/main/kotlin/com/lithic/api/services/async/AuthRuleServiceAsyncImpl.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ constructor(
4646
HttpRequest.builder()
4747
.method(HttpMethod.POST)
4848
.addPathSegments("auth_rules")
49+
.putAllQueryParams(clientOptions.queryParams)
4950
.putAllQueryParams(params.getQueryParams())
5051
.putAllHeaders(clientOptions.headers)
5152
.putAllHeaders(params.getHeaders())
@@ -79,6 +80,7 @@ constructor(
7980
HttpRequest.builder()
8081
.method(HttpMethod.GET)
8182
.addPathSegments("auth_rules", params.getPathParam(0))
83+
.putAllQueryParams(clientOptions.queryParams)
8284
.putAllQueryParams(params.getQueryParams())
8385
.putAllHeaders(clientOptions.headers)
8486
.putAllHeaders(params.getHeaders())
@@ -107,6 +109,7 @@ constructor(
107109
HttpRequest.builder()
108110
.method(HttpMethod.PUT)
109111
.addPathSegments("auth_rules", params.getPathParam(0))
112+
.putAllQueryParams(clientOptions.queryParams)
110113
.putAllQueryParams(params.getQueryParams())
111114
.putAllHeaders(clientOptions.headers)
112115
.putAllHeaders(params.getHeaders())
@@ -137,6 +140,7 @@ constructor(
137140
HttpRequest.builder()
138141
.method(HttpMethod.GET)
139142
.addPathSegments("auth_rules")
143+
.putAllQueryParams(clientOptions.queryParams)
140144
.putAllQueryParams(params.getQueryParams())
141145
.putAllHeaders(clientOptions.headers)
142146
.putAllHeaders(params.getHeaders())
@@ -166,6 +170,7 @@ constructor(
166170
HttpRequest.builder()
167171
.method(HttpMethod.POST)
168172
.addPathSegments("auth_rules", params.getPathParam(0), "apply")
173+
.putAllQueryParams(clientOptions.queryParams)
169174
.putAllQueryParams(params.getQueryParams())
170175
.putAllHeaders(clientOptions.headers)
171176
.putAllHeaders(params.getHeaders())
@@ -197,6 +202,7 @@ constructor(
197202
HttpRequest.builder()
198203
.method(HttpMethod.DELETE)
199204
.addPathSegments("auth_rules", "remove")
205+
.putAllQueryParams(clientOptions.queryParams)
200206
.putAllQueryParams(params.getQueryParams())
201207
.putAllHeaders(clientOptions.headers)
202208
.putAllHeaders(params.getHeaders())

lithic-java-core/src/main/kotlin/com/lithic/api/services/async/AuthStreamEnrollmentServiceAsyncImpl.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ constructor(
4343
HttpRequest.builder()
4444
.method(HttpMethod.GET)
4545
.addPathSegments("auth_stream", "secret")
46+
.putAllQueryParams(clientOptions.queryParams)
4647
.putAllQueryParams(params.getQueryParams())
4748
.putAllHeaders(clientOptions.headers)
4849
.putAllHeaders(params.getHeaders())
@@ -75,6 +76,7 @@ constructor(
7576
HttpRequest.builder()
7677
.method(HttpMethod.POST)
7778
.addPathSegments("auth_stream", "secret", "rotate")
79+
.putAllQueryParams(clientOptions.queryParams)
7880
.putAllQueryParams(params.getQueryParams())
7981
.putAllHeaders(clientOptions.headers)
8082
.putAllHeaders(params.getHeaders())

lithic-java-core/src/main/kotlin/com/lithic/api/services/async/BalanceServiceAsyncImpl.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ constructor(
3535
HttpRequest.builder()
3636
.method(HttpMethod.GET)
3737
.addPathSegments("balances")
38+
.putAllQueryParams(clientOptions.queryParams)
3839
.putAllQueryParams(params.getQueryParams())
3940
.putAllHeaders(clientOptions.headers)
4041
.putAllHeaders(params.getHeaders())

lithic-java-core/src/main/kotlin/com/lithic/api/services/async/BookTransferServiceAsyncImpl.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ constructor(
4040
HttpRequest.builder()
4141
.method(HttpMethod.POST)
4242
.addPathSegments("book_transfers")
43+
.putAllQueryParams(clientOptions.queryParams)
4344
.putAllQueryParams(params.getQueryParams())
4445
.putAllHeaders(clientOptions.headers)
4546
.putAllHeaders(params.getHeaders())
@@ -69,6 +70,7 @@ constructor(
6970
HttpRequest.builder()
7071
.method(HttpMethod.GET)
7172
.addPathSegments("book_transfers", params.getPathParam(0))
73+
.putAllQueryParams(clientOptions.queryParams)
7274
.putAllQueryParams(params.getQueryParams())
7375
.putAllHeaders(clientOptions.headers)
7476
.putAllHeaders(params.getHeaders())
@@ -98,6 +100,7 @@ constructor(
98100
HttpRequest.builder()
99101
.method(HttpMethod.GET)
100102
.addPathSegments("book_transfers")
103+
.putAllQueryParams(clientOptions.queryParams)
101104
.putAllQueryParams(params.getQueryParams())
102105
.putAllHeaders(clientOptions.headers)
103106
.putAllHeaders(params.getHeaders())

0 commit comments

Comments
 (0)