com.ecwid.apiclient.v3.impl.BatchApiClientImpl.kt Maven / Gradle / Ivy
package com.ecwid.apiclient.v3.impl
import com.ecwid.apiclient.v3.ApiClientHelper
import com.ecwid.apiclient.v3.BatchApiClient
import com.ecwid.apiclient.v3.dto.batch.request.CancelBatchGroupRequest
import com.ecwid.apiclient.v3.dto.batch.request.CreateBatchRequest
import com.ecwid.apiclient.v3.dto.batch.request.CreateBatchRequestWithIds
import com.ecwid.apiclient.v3.dto.batch.request.GetEscapedBatchRequest
import com.ecwid.apiclient.v3.dto.batch.result.CancelBatchGroupResult
import com.ecwid.apiclient.v3.dto.batch.result.CreateBatchResult
import com.ecwid.apiclient.v3.dto.batch.result.GetEscapedBatchResult
import com.ecwid.apiclient.v3.dto.batch.result.GetTypedBatchResult
import com.ecwid.apiclient.v3.dto.common.EcwidApiError
import com.ecwid.apiclient.v3.exception.JsonDeserializationException
internal class BatchApiClientImpl(
private val apiClientHelper: ApiClientHelper
) : BatchApiClient {
override fun createBatch(request: CreateBatchRequestWithIds) =
apiClientHelper.makeObjectResultRequest(request)
override fun createBatch(request: CreateBatchRequest) =
apiClientHelper.makeObjectResultRequest(request)
override fun cancelBatchGroup(request: CancelBatchGroupRequest) =
apiClientHelper.makeObjectResultRequest(request)
override fun getEscapedBatch(request: GetEscapedBatchRequest) =
apiClientHelper.makeObjectResultRequest(request)
override fun getTypedBatch(request: GetEscapedBatchRequest) =
GetTypedBatchResult(getEscapedBatch(request), apiClientHelper.jsonTransformer)
}
sealed class TypedBatchResponse {
data class Ok(val value: T) : TypedBatchResponse()
data class ApiError(
val httpStatusCode: Int,
val httpStatusText: String,
val ecwidApiError: EcwidApiError?,
) : TypedBatchResponse()
data class ParseError(val jsonDeserializationException: JsonDeserializationException) : TypedBatchResponse()
class NotExecuted : TypedBatchResponse()
}