Skip to content

Commit 62c4321

Browse files
authored
Merge pull request #420 from Ecwid/ECWID-142216
Ecwid 142216
2 parents 3c0f56a + df2312a commit 62c4321

8 files changed

Lines changed: 61 additions & 19 deletions

File tree

src/main/kotlin/com/ecwid/apiclient/v3/ApiClient.kt

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -136,23 +136,6 @@ open class ApiClient private constructor(
136136
}
137137
}
138138

139-
// Orders
140-
// https://developers.ecwid.com/api-documentation/orders
141-
interface OrdersApiClient {
142-
fun searchOrders(request: OrdersSearchRequest): OrdersSearchResult
143-
fun searchOrdersAsSequence(request: OrdersSearchRequest): Sequence<FetchedOrder>
144-
fun getOrderDetails(request: OrderDetailsRequest): FetchedOrder
145-
fun getOrderInvoice(request: OrderInvoiceRequest): String
146-
fun createOrder(request: OrderCreateRequest): OrderCreateResult
147-
fun updateOrder(request: OrderUpdateRequest): OrderUpdateResult
148-
fun deleteOrder(request: OrderDeleteRequest): OrderDeleteResult
149-
fun uploadOrderItemOptionFile(request: OrderItemOptionFileUploadRequest): OrderItemOptionFileUploadResult
150-
fun deleteOrderItemOptionFile(request: OrderItemOptionFileDeleteRequest): OrderItemOptionFileDeleteResult
151-
fun deleteOrderItemOptionFiles(request: OrderItemOptionFilesDeleteRequest): OrderItemOptionFileDeleteResult
152-
fun searchDeletedOrders(request: DeletedOrdersSearchRequest): DeletedOrdersSearchResult
153-
fun searchDeletedOrdersAsSequence(request: DeletedOrdersSearchRequest): Sequence<DeletedOrder>
154-
}
155-
156139
// Product types
157140
// https://developers.ecwid.com/api-documentation/product-types
158141
interface ProductTypesApiClient {
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.ecwid.apiclient.v3
2+
3+
import com.ecwid.apiclient.v3.dto.common.PartialResult
4+
import com.ecwid.apiclient.v3.dto.order.request.*
5+
import com.ecwid.apiclient.v3.dto.order.result.*
6+
import kotlin.reflect.KClass
7+
8+
// Orders
9+
// https://developers.ecwid.com/api-documentation/orders
10+
interface OrdersApiClient {
11+
fun searchOrders(request: OrdersSearchRequest): OrdersSearchResult
12+
fun <Result> searchOrders(request: OrdersSearchRequest, resultClass: KClass<Result>): Result
13+
where Result : PartialResult<OrdersSearchResult>
14+
fun searchOrdersAsSequence(request: OrdersSearchRequest): Sequence<FetchedOrder>
15+
fun getOrderDetails(request: OrderDetailsRequest): FetchedOrder
16+
fun getOrderInvoice(request: OrderInvoiceRequest): String
17+
fun createOrder(request: OrderCreateRequest): OrderCreateResult
18+
fun updateOrder(request: OrderUpdateRequest): OrderUpdateResult
19+
fun deleteOrder(request: OrderDeleteRequest): OrderDeleteResult
20+
fun uploadOrderItemOptionFile(request: OrderItemOptionFileUploadRequest): OrderItemOptionFileUploadResult
21+
fun deleteOrderItemOptionFile(request: OrderItemOptionFileDeleteRequest): OrderItemOptionFileDeleteResult
22+
fun deleteOrderItemOptionFiles(request: OrderItemOptionFilesDeleteRequest): OrderItemOptionFileDeleteResult
23+
fun searchDeletedOrders(request: DeletedOrdersSearchRequest): DeletedOrdersSearchResult
24+
fun searchDeletedOrdersAsSequence(request: DeletedOrdersSearchRequest): Sequence<DeletedOrder>
25+
}
26+
27+
@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
28+
inline fun <reified Result : PartialResult<OrdersSearchResult>> OrdersApiClient.searchOrders(request: OrdersSearchRequest): Result {
29+
return searchOrders(request, Result::class)
30+
}

src/main/kotlin/com/ecwid/apiclient/v3/StoreProfileApiClient.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ interface StoreProfileApiClient {
3535
fun updateExtrafieldConfig(request: ExtrafieldConfigUpdateRequest): ExtrafieldConfigUpdateResult
3636
fun deleteExtrafieldConfig(request: ExtrafieldConfigDeleteRequest): ExtrafieldConfigDeleteResult
3737
fun searchOrderStatusesSettings(request: OrderStatusSettingsSearchRequest): OrderStatusSettingsSearchResult
38+
fun <Result> searchOrderStatusesSettings(request: OrderStatusSettingsSearchRequest, resultClass: KClass<Result>): Result
39+
where Result : PartialResult<OrderStatusSettingsSearchResult>
3840
fun getOrderStatusSettingsDetails(request: OrderStatusSettingsDetailsRequest): FetchedOrderStatusSettings
3941
fun updateOrderStatusSettings(request: OrderStatusSettingsUpdateRequest): OrderStatusSettingsUpdateResult
4042
}
@@ -43,3 +45,8 @@ interface StoreProfileApiClient {
4345
inline fun <reified Result : PartialResult<FetchedStoreProfile>> StoreProfileApiClient.getStoreProfile(request: StoreProfileRequest): Result {
4446
return getStoreProfile(request, Result::class)
4547
}
48+
49+
@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
50+
inline fun <reified Result : PartialResult<OrderStatusSettingsSearchResult>> StoreProfileApiClient.searchOrderStatusesSettings(request: OrderStatusSettingsSearchRequest): Result {
51+
return searchOrderStatusesSettings(request, Result::class)
52+
}

src/main/kotlin/com/ecwid/apiclient/v3/dto/order/result/FetchedOrder.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.ecwid.apiclient.v3.dto.order.result
22

33
import com.ecwid.apiclient.v3.dto.common.ApiFetchedDTO
44
import com.ecwid.apiclient.v3.dto.common.ApiFetchedDTO.ModifyKind
5+
import com.ecwid.apiclient.v3.dto.common.ApiResultDTO
56
import com.ecwid.apiclient.v3.dto.common.ExtendedOrderTax
67
import com.ecwid.apiclient.v3.dto.common.OrderedStringToListStringMap
78
import com.ecwid.apiclient.v3.dto.common.OrderedStringToStringMap
@@ -119,7 +120,7 @@ data class FetchedOrder(
119120
val loyalty: Loyalty? = null,
120121
val customerFiscalCode: String? = null,
121122

122-
) : ApiFetchedDTO {
123+
) : ApiFetchedDTO, ApiResultDTO {
123124

124125
data class CreditCardStatus(
125126
val avsMessage: String? = null,

src/main/kotlin/com/ecwid/apiclient/v3/dto/profile/result/FetchedOrderStatusSettings.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.ecwid.apiclient.v3.dto.profile.result
22

33
import com.ecwid.apiclient.v3.dto.common.ApiFetchedDTO
4+
import com.ecwid.apiclient.v3.dto.common.ApiResultDTO
45
import com.ecwid.apiclient.v3.dto.common.LocalizedValueMap
56
import com.ecwid.apiclient.v3.dto.profile.request.UpdatedOrderStatusSettings
67

@@ -13,6 +14,6 @@ data class FetchedOrderStatusSettings(
1314
val nameTranslations: LocalizedValueMap? = null,
1415
val sendNotificationWhenStatusIsAssigned: Boolean = true,
1516
val lastNameChangeDate: String? = null,
16-
) : ApiFetchedDTO {
17+
) : ApiFetchedDTO, ApiResultDTO {
1718
override fun getModifyKind() = ApiFetchedDTO.ModifyKind.ReadWrite(UpdatedOrderStatusSettings::class)
1819
}

src/main/kotlin/com/ecwid/apiclient/v3/dto/profile/result/OrderStatusSettingsSearchResult.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ import com.ecwid.apiclient.v3.dto.common.ApiResultDTO
44

55
data class OrderStatusSettingsSearchResult(
66
val items: List<FetchedOrderStatusSettings> = listOf(),
7+
val limit: Int = 0,
78
) : ApiResultDTO

src/main/kotlin/com/ecwid/apiclient/v3/impl/OrdersApiClientImpl.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ package com.ecwid.apiclient.v3.impl
22

33
import com.ecwid.apiclient.v3.ApiClientHelper
44
import com.ecwid.apiclient.v3.OrdersApiClient
5+
import com.ecwid.apiclient.v3.dto.common.PartialResult
56
import com.ecwid.apiclient.v3.dto.order.request.*
67
import com.ecwid.apiclient.v3.dto.order.result.*
78
import com.ecwid.apiclient.v3.responsefields.AS_SEQUENCE_SEARCH_RESULT_REQUIRED_FIELDS
9+
import kotlin.reflect.KClass
810

911
internal class OrdersApiClientImpl(
1012
private val apiClientHelper: ApiClientHelper
@@ -13,6 +15,16 @@ internal class OrdersApiClientImpl(
1315
override fun searchOrders(request: OrdersSearchRequest) =
1416
apiClientHelper.makeObjectResultRequest<OrdersSearchResult>(request)
1517

18+
override fun <Result : PartialResult<OrdersSearchResult>> searchOrders(
19+
request: OrdersSearchRequest,
20+
resultClass: KClass<Result>
21+
): Result {
22+
return apiClientHelper.makeObjectPartialResultRequest(
23+
request = request,
24+
resultClass = resultClass,
25+
)
26+
}
27+
1628
override fun searchOrdersAsSequence(request: OrdersSearchRequest) = sequence {
1729
var offsetRequest = request.copy(
1830
responseFields = request.responseFields + AS_SEQUENCE_SEARCH_RESULT_REQUIRED_FIELDS

src/main/kotlin/com/ecwid/apiclient/v3/impl/StoreProfileApiClientImpl.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,11 @@ internal class StoreProfileApiClientImpl(
7979
override fun <Result : PartialResult<FetchedStoreProfile>> getStoreProfile(request: StoreProfileRequest, resultClass: KClass<Result>): Result {
8080
return apiClientHelper.makeObjectPartialResultRequest(request, resultClass)
8181
}
82+
83+
override fun <Result : PartialResult<OrderStatusSettingsSearchResult>> searchOrderStatusesSettings(
84+
request: OrderStatusSettingsSearchRequest,
85+
resultClass: KClass<Result>
86+
): Result {
87+
return apiClientHelper.makeObjectPartialResultRequest(request, resultClass)
88+
}
8289
}

0 commit comments

Comments
 (0)