Skip to content

Commit

Permalink
chore: add back uploadEvidence override
Browse files Browse the repository at this point in the history
  • Loading branch information
meorphis committed Apr 10, 2024
1 parent ce96c10 commit 272bb7f
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -93,4 +93,6 @@ interface DisputeServiceAsync {
params: DisputeRetrieveEvidenceParams,
requestOptions: RequestOptions = RequestOptions.none()
): CompletableFuture<DisputeEvidence>

fun uploadEvidence(disputeToken: String, file: ByteArray): CompletableFuture<Void>
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,14 @@
package com.lithic.api.services.async

import com.lithic.api.core.ClientOptions
import com.lithic.api.core.ContentTypes
import com.lithic.api.core.MultipartFormValue
import com.lithic.api.core.RequestOptions
import com.lithic.api.core.http.HttpMethod
import com.lithic.api.core.http.HttpRequest
import com.lithic.api.core.http.HttpResponse.Handler
import com.lithic.api.errors.LithicError
import com.lithic.api.errors.LithicInvalidDataException
import com.lithic.api.models.Dispute
import com.lithic.api.models.DisputeCreateParams
import com.lithic.api.models.DisputeDeleteEvidenceParams
Expand All @@ -21,9 +24,11 @@ import com.lithic.api.models.DisputeListParams
import com.lithic.api.models.DisputeRetrieveEvidenceParams
import com.lithic.api.models.DisputeRetrieveParams
import com.lithic.api.models.DisputeUpdateParams
import com.lithic.api.services.emptyHandler
import com.lithic.api.services.errorHandler
import com.lithic.api.services.json
import com.lithic.api.services.jsonHandler
import com.lithic.api.services.multipartFormData
import com.lithic.api.services.withErrorHandler
import java.util.concurrent.CompletableFuture

Expand Down Expand Up @@ -313,4 +318,29 @@ constructor(
}
}
}

override fun uploadEvidence(disputeToken: String, file: ByteArray): CompletableFuture<Void> {
val initiateParams =
DisputeInitiateEvidenceUploadParams.builder().disputeToken(disputeToken).build()
val initiateResponse = initiateEvidenceUpload(initiateParams)

return initiateResponse
.thenCompose { response ->
val uploadUrl =
response.uploadUrl().orElseThrow {
LithicInvalidDataException("Missing 'upload_url' from response payload")
}

val fileParam =
MultipartFormValue.fromByteArray("file", file, ContentTypes.DefaultBinary)
val uploadRequest =
HttpRequest.builder()
.method(HttpMethod.PUT)
.url(uploadUrl)
.body(multipartFormData(clientOptions.jsonMapper, arrayOf(fileParam)))
.build()
clientOptions.httpClient.executeAsync(uploadRequest)
}
.thenApply { response -> response.let { emptyHandler().handle(it) } }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -92,4 +92,6 @@ interface DisputeService {
params: DisputeRetrieveEvidenceParams,
requestOptions: RequestOptions = RequestOptions.none()
): DisputeEvidence

fun uploadEvidence(disputeToken: String, file: ByteArray)
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,14 @@
package com.lithic.api.services.blocking

import com.lithic.api.core.ClientOptions
import com.lithic.api.core.ContentTypes
import com.lithic.api.core.MultipartFormValue
import com.lithic.api.core.RequestOptions
import com.lithic.api.core.http.HttpMethod
import com.lithic.api.core.http.HttpRequest
import com.lithic.api.core.http.HttpResponse.Handler
import com.lithic.api.errors.LithicError
import com.lithic.api.errors.LithicInvalidDataException
import com.lithic.api.models.Dispute
import com.lithic.api.models.DisputeCreateParams
import com.lithic.api.models.DisputeDeleteEvidenceParams
Expand All @@ -21,9 +24,11 @@ import com.lithic.api.models.DisputeListParams
import com.lithic.api.models.DisputeRetrieveEvidenceParams
import com.lithic.api.models.DisputeRetrieveParams
import com.lithic.api.models.DisputeUpdateParams
import com.lithic.api.services.emptyHandler
import com.lithic.api.services.errorHandler
import com.lithic.api.services.json
import com.lithic.api.services.jsonHandler
import com.lithic.api.services.multipartFormData
import com.lithic.api.services.withErrorHandler

class DisputeServiceImpl
Expand Down Expand Up @@ -288,4 +293,26 @@ constructor(
}
}
}

override fun uploadEvidence(disputeToken: String, file: ByteArray) {
val initiateParams =
DisputeInitiateEvidenceUploadParams.builder().disputeToken(disputeToken).build()
val initiateResponse = initiateEvidenceUpload(initiateParams)

val uploadUrl =
initiateResponse.uploadUrl().orElseThrow {
LithicInvalidDataException("Missing 'upload_url' from response payload")
}

val fileParams = MultipartFormValue.fromByteArray("file", file, ContentTypes.DefaultBinary)
val uploadRequest =
HttpRequest.builder()
.method(HttpMethod.PUT)
.url(uploadUrl)
.body(multipartFormData(clientOptions.jsonMapper, arrayOf(fileParams)))
.build()
clientOptions.httpClient.execute(uploadRequest).let { response ->
response.let { emptyHandler().handle(it) }
}
}
}

0 comments on commit 272bb7f

Please sign in to comment.