Skip to content

Commit 6c324ca

Browse files
feat(client): add _queryParams and _headers methods (#469)
refactor(internal): extract request preparation logic
1 parent d3d89ea commit 6c324ca

File tree

336 files changed

+3121
-3686
lines changed

Some content is hidden

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

336 files changed

+3121
-3686
lines changed

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

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.lithic.api.core.handlers.withErrorHandler
1111
import com.lithic.api.core.http.HttpMethod
1212
import com.lithic.api.core.http.HttpRequest
1313
import com.lithic.api.core.http.HttpResponse.Handler
14+
import com.lithic.api.core.prepareAsync
1415
import com.lithic.api.errors.LithicError
1516
import com.lithic.api.models.ApiStatus
1617
import com.lithic.api.models.ClientApiStatusParams
@@ -252,21 +253,19 @@ class LithicClientAsyncImpl(
252253
HttpRequest.builder()
253254
.method(HttpMethod.GET)
254255
.addPathSegments("v1", "status")
255-
.putAllQueryParams(clientOptions.queryParams)
256-
.replaceAllQueryParams(params.getQueryParams())
257-
.putAllHeaders(clientOptions.headers)
258-
.replaceAllHeaders(params.getHeaders())
259256
.build()
260-
return clientOptions.httpClient.executeAsync(request, requestOptions).thenApply { response
261-
->
262-
response
263-
.use { apiStatusHandler.handle(it) }
264-
.apply {
265-
if (requestOptions.responseValidation ?: clientOptions.responseValidation) {
266-
validate()
257+
.prepareAsync(clientOptions, params)
258+
return request
259+
.thenComposeAsync { clientOptions.httpClient.executeAsync(it, requestOptions) }
260+
.thenApply { response ->
261+
response
262+
.use { apiStatusHandler.handle(it) }
263+
.apply {
264+
if (requestOptions.responseValidation ?: clientOptions.responseValidation) {
265+
validate()
266+
}
267267
}
268-
}
269-
}
268+
}
270269
}
271270

272271
override fun close() = clientOptions.httpClient.close()

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.lithic.api.core.handlers.withErrorHandler
1111
import com.lithic.api.core.http.HttpMethod
1212
import com.lithic.api.core.http.HttpRequest
1313
import com.lithic.api.core.http.HttpResponse.Handler
14+
import com.lithic.api.core.prepare
1415
import com.lithic.api.errors.LithicError
1516
import com.lithic.api.models.ApiStatus
1617
import com.lithic.api.models.ClientApiStatusParams
@@ -236,11 +237,8 @@ class LithicClientImpl(
236237
HttpRequest.builder()
237238
.method(HttpMethod.GET)
238239
.addPathSegments("v1", "status")
239-
.putAllQueryParams(clientOptions.queryParams)
240-
.replaceAllQueryParams(params.getQueryParams())
241-
.putAllHeaders(clientOptions.headers)
242-
.replaceAllHeaders(params.getHeaders())
243240
.build()
241+
.prepare(clientOptions, params)
244242
return clientOptions.httpClient.execute(request, requestOptions).let { response ->
245243
response
246244
.use { apiStatusHandler.handle(it) }
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.lithic.api.core
2+
3+
import com.lithic.api.core.http.Headers
4+
import com.lithic.api.core.http.QueryParams
5+
6+
/** An interface representing parameters passed to a service method. */
7+
interface Params {
8+
/** The full set of headers in the parameters, including both fixed and additional headers. */
9+
fun _headers(): Headers
10+
11+
/**
12+
* The full set of query params in the parameters, including both fixed and additional query
13+
* params.
14+
*/
15+
fun _queryParams(): QueryParams
16+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
@file:JvmName("PrepareRequest")
2+
3+
package com.lithic.api.core
4+
5+
import com.lithic.api.core.http.HttpRequest
6+
import java.util.concurrent.CompletableFuture
7+
8+
@JvmSynthetic
9+
internal fun HttpRequest.prepare(clientOptions: ClientOptions, params: Params): HttpRequest =
10+
toBuilder()
11+
.putAllQueryParams(clientOptions.queryParams)
12+
.replaceAllQueryParams(params._queryParams())
13+
.putAllHeaders(clientOptions.headers)
14+
.replaceAllHeaders(params._headers())
15+
.build()
16+
17+
@JvmSynthetic
18+
internal fun HttpRequest.prepareAsync(
19+
clientOptions: ClientOptions,
20+
params: Params
21+
): CompletableFuture<HttpRequest> =
22+
// This async version exists to make it easier to add async specific preparation logic in the
23+
// future.
24+
CompletableFuture.completedFuture(prepare(clientOptions, params))

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.lithic.api.core.BaseDeserializer
1313
import com.lithic.api.core.BaseSerializer
1414
import com.lithic.api.core.JsonValue
1515
import com.lithic.api.core.NoAutoDetect
16+
import com.lithic.api.core.Params
1617
import com.lithic.api.core.getOrThrow
1718
import com.lithic.api.core.http.Headers
1819
import com.lithic.api.core.http.QueryParams
@@ -33,7 +34,7 @@ private constructor(
3334
private val body: AccountHolderCreateBody,
3435
private val additionalHeaders: Headers,
3536
private val additionalQueryParams: QueryParams,
36-
) {
37+
) : Params {
3738

3839
fun kyb(): Optional<Kyb> = body.kyb()
3940

@@ -45,11 +46,11 @@ private constructor(
4546

4647
fun _additionalQueryParams(): QueryParams = additionalQueryParams
4748

48-
@JvmSynthetic internal fun getBody(): AccountHolderCreateBody = body
49+
@JvmSynthetic internal fun _body(): AccountHolderCreateBody = body
4950

50-
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
51+
override fun _headers(): Headers = additionalHeaders
5152

52-
@JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams
53+
override fun _queryParams(): QueryParams = additionalQueryParams
5354

5455
@JsonDeserialize(using = AccountHolderCreateBody.Deserializer::class)
5556
@JsonSerialize(using = AccountHolderCreateBody.Serializer::class)

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
package com.lithic.api.models
44

55
import com.lithic.api.core.NoAutoDetect
6+
import com.lithic.api.core.Params
67
import com.lithic.api.core.checkRequired
78
import com.lithic.api.core.http.Headers
89
import com.lithic.api.core.http.QueryParams
@@ -28,17 +29,17 @@ private constructor(
2829
private val accountHolderToken: String,
2930
private val additionalHeaders: Headers,
3031
private val additionalQueryParams: QueryParams,
31-
) {
32+
) : Params {
3233

3334
fun accountHolderToken(): String = accountHolderToken
3435

3536
fun _additionalHeaders(): Headers = additionalHeaders
3637

3738
fun _additionalQueryParams(): QueryParams = additionalQueryParams
3839

39-
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
40+
override fun _headers(): Headers = additionalHeaders
4041

41-
@JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams
42+
override fun _queryParams(): QueryParams = additionalQueryParams
4243

4344
fun getPathParam(index: Int): String {
4445
return when (index) {

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
package com.lithic.api.models
44

55
import com.lithic.api.core.NoAutoDetect
6+
import com.lithic.api.core.Params
67
import com.lithic.api.core.http.Headers
78
import com.lithic.api.core.http.QueryParams
89
import java.time.OffsetDateTime
@@ -26,7 +27,7 @@ private constructor(
2627
private val startingAfter: String?,
2728
private val additionalHeaders: Headers,
2829
private val additionalQueryParams: QueryParams,
29-
) {
30+
) : Params {
3031

3132
/**
3233
* Date string in RFC 3339 format. Only entries created after the specified time will be
@@ -86,10 +87,9 @@ private constructor(
8687

8788
fun _additionalQueryParams(): QueryParams = additionalQueryParams
8889

89-
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
90+
override fun _headers(): Headers = additionalHeaders
9091

91-
@JvmSynthetic
92-
internal fun getQueryParams(): QueryParams {
92+
override fun _queryParams(): QueryParams {
9393
val queryParams = QueryParams.builder()
9494
this.begin?.let {
9595
queryParams.put("begin", listOf(DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(it)))

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
package com.lithic.api.models
44

55
import com.lithic.api.core.NoAutoDetect
6+
import com.lithic.api.core.Params
67
import com.lithic.api.core.checkRequired
78
import com.lithic.api.core.http.Headers
89
import com.lithic.api.core.http.QueryParams
@@ -29,7 +30,7 @@ private constructor(
2930
private val documentToken: String,
3031
private val additionalHeaders: Headers,
3132
private val additionalQueryParams: QueryParams,
32-
) {
33+
) : Params {
3334

3435
fun accountHolderToken(): String = accountHolderToken
3536

@@ -39,9 +40,9 @@ private constructor(
3940

4041
fun _additionalQueryParams(): QueryParams = additionalQueryParams
4142

42-
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
43+
override fun _headers(): Headers = additionalHeaders
4344

44-
@JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams
45+
override fun _queryParams(): QueryParams = additionalQueryParams
4546

4647
fun getPathParam(index: Int): String {
4748
return when (index) {

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
package com.lithic.api.models
44

55
import com.lithic.api.core.NoAutoDetect
6+
import com.lithic.api.core.Params
67
import com.lithic.api.core.checkRequired
78
import com.lithic.api.core.http.Headers
89
import com.lithic.api.core.http.QueryParams
@@ -14,17 +15,17 @@ private constructor(
1415
private val accountHolderToken: String,
1516
private val additionalHeaders: Headers,
1617
private val additionalQueryParams: QueryParams,
17-
) {
18+
) : Params {
1819

1920
fun accountHolderToken(): String = accountHolderToken
2021

2122
fun _additionalHeaders(): Headers = additionalHeaders
2223

2324
fun _additionalQueryParams(): QueryParams = additionalQueryParams
2425

25-
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
26+
override fun _headers(): Headers = additionalHeaders
2627

27-
@JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams
28+
override fun _queryParams(): QueryParams = additionalQueryParams
2829

2930
fun getPathParam(index: Int): String {
3031
return when (index) {

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import com.lithic.api.core.JsonField
1212
import com.lithic.api.core.JsonMissing
1313
import com.lithic.api.core.JsonValue
1414
import com.lithic.api.core.NoAutoDetect
15+
import com.lithic.api.core.Params
1516
import com.lithic.api.core.checkRequired
1617
import com.lithic.api.core.http.Headers
1718
import com.lithic.api.core.http.QueryParams
@@ -27,7 +28,7 @@ private constructor(
2728
private val body: AccountHolderSimulateEnrollmentDocumentReviewBody,
2829
private val additionalHeaders: Headers,
2930
private val additionalQueryParams: QueryParams,
30-
) {
31+
) : Params {
3132

3233
/** The account holder document upload which to perform the simulation upon. */
3334
fun documentUploadToken(): String = body.documentUploadToken()
@@ -66,11 +67,11 @@ private constructor(
6667

6768
fun _additionalQueryParams(): QueryParams = additionalQueryParams
6869

69-
@JvmSynthetic internal fun getBody(): AccountHolderSimulateEnrollmentDocumentReviewBody = body
70+
@JvmSynthetic internal fun _body(): AccountHolderSimulateEnrollmentDocumentReviewBody = body
7071

71-
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
72+
override fun _headers(): Headers = additionalHeaders
7273

73-
@JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams
74+
override fun _queryParams(): QueryParams = additionalQueryParams
7475

7576
@NoAutoDetect
7677
class AccountHolderSimulateEnrollmentDocumentReviewBody

0 commit comments

Comments
 (0)