-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathCartsApiClientImpl.kt
More file actions
41 lines (33 loc) · 1.69 KB
/
CartsApiClientImpl.kt
File metadata and controls
41 lines (33 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.ecwid.apiclient.v3.impl
import com.ecwid.apiclient.v3.ApiClientHelper
import com.ecwid.apiclient.v3.CartsApiClient
import com.ecwid.apiclient.v3.dto.cart.request.*
import com.ecwid.apiclient.v3.dto.cart.result.*
import com.ecwid.apiclient.v3.dto.order.request.RepeatOrderURLRequest
import com.ecwid.apiclient.v3.dto.order.result.RepeatOrderURLResult
internal data class CartsApiClientImpl(
private val apiClientHelper: ApiClientHelper
) : CartsApiClient {
override fun searchCarts(request: CartsSearchRequest) =
apiClientHelper.makeObjectResultRequest<CartsSearchResult>(request)
override fun searchCartsAsSequence(request: CartsSearchRequest): List<FetchedCart> {
var offsetRequest = request
val totalList: MutableList<FetchedCart> = mutableListOf()
do {
val searchResult = searchCarts(offsetRequest)
totalList.addAll(searchResult.items)
offsetRequest = offsetRequest.copy(offset = offsetRequest.offset + searchResult.count)
} while (searchResult.count >= searchResult.limit)
return totalList
}
override fun getCartDetails(request: CartDetailsRequest) =
apiClientHelper.makeObjectResultRequest<FetchedCart>(request)
override fun updateCart(request: CartUpdateRequest) =
apiClientHelper.makeObjectResultRequest<CartUpdateResult>(request)
override fun calculateOrderDetails(request: CalculateOrderDetailsRequest) =
apiClientHelper.makeObjectResultRequest<CalculateOrderDetailsResult>(request)
override fun convertCartToOrder(request: ConvertCartToOrderRequest) =
apiClientHelper.makeObjectResultRequest<ConvertCartToOrderResult>(request)
override fun getRepeatCartURL(request: RepeatCartURLRequest) =
apiClientHelper.makeObjectResultRequest<RepeatCartURLResult>(request)
}