From b73f6d98193a8c98657ff558f1b0a0390308cc38 Mon Sep 17 00:00:00 2001 From: valkiriya Date: Mon, 14 Jul 2025 10:58:23 +0400 Subject: [PATCH 1/2] Add images/main-colors endpoint --- .../com/ecwid/apiclient/v3/ApiClient.kt | 9 +++++++ .../images/request/ImagesMainColorsRequest.kt | 26 +++++++++++++++++++ .../result/FetchedImagesMainColorsResult.kt | 12 +++++++++ .../apiclient/v3/impl/ImagesApiClientImpl.kt | 14 ++++++++++ 4 files changed, 61 insertions(+) create mode 100644 src/main/kotlin/com/ecwid/apiclient/v3/dto/images/request/ImagesMainColorsRequest.kt create mode 100644 src/main/kotlin/com/ecwid/apiclient/v3/dto/images/result/FetchedImagesMainColorsResult.kt create mode 100644 src/main/kotlin/com/ecwid/apiclient/v3/impl/ImagesApiClientImpl.kt diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/ApiClient.kt b/src/main/kotlin/com/ecwid/apiclient/v3/ApiClient.kt index b2dc63c1..7bc1f3b0 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/ApiClient.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/ApiClient.kt @@ -24,6 +24,8 @@ import com.ecwid.apiclient.v3.dto.customer.request.* import com.ecwid.apiclient.v3.dto.customer.result.* import com.ecwid.apiclient.v3.dto.customergroup.request.* import com.ecwid.apiclient.v3.dto.customergroup.result.* +import com.ecwid.apiclient.v3.dto.images.request.ImagesMainColorsRequest +import com.ecwid.apiclient.v3.dto.images.result.FetchedImagesMainColorsResult import com.ecwid.apiclient.v3.dto.instantsite.redirects.request.* import com.ecwid.apiclient.v3.dto.instantsite.redirects.result.* import com.ecwid.apiclient.v3.dto.productreview.request.* @@ -77,6 +79,7 @@ open class ApiClient private constructor( productReviewsApiClient: ProductReviewsApiClientImpl, storeExtrafieldsApiClient: StoreExtrafieldsApiClientImpl, swatchesApiClient: SwatchesApiClientImpl, + imagesApiClient: ImagesApiClientImpl, ) : StoreProfileApiClient by storeProfileApiClient, BrandsApiClient by brandsApiClient, @@ -100,6 +103,7 @@ open class ApiClient private constructor( ProductReviewsApiClient by productReviewsApiClient, StoreExtrafieldsApiClient by storeExtrafieldsApiClient, SwatchesApiClient by swatchesApiClient, + ImagesApiClient by imagesApiClient, Closeable { constructor(apiClientHelper: ApiClientHelper) : this( @@ -126,6 +130,7 @@ open class ApiClient private constructor( productReviewsApiClient = ProductReviewsApiClientImpl(apiClientHelper), storeExtrafieldsApiClient = StoreExtrafieldsApiClientImpl(apiClientHelper), swatchesApiClient = SwatchesApiClientImpl(apiClientHelper), + imagesApiClient = ImagesApiClientImpl(apiClientHelper), ) override fun close() { @@ -332,3 +337,7 @@ interface ProductReviewsApiClient { interface SwatchesApiClient { fun getRecentSwatchColors(request: RecentSwatchColorsGetRequest): FetchedSwatchColorsResult } + +interface ImagesApiClient { + fun getImagesMainColors(request: ImagesMainColorsRequest): FetchedImagesMainColorsResult +} diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/images/request/ImagesMainColorsRequest.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/images/request/ImagesMainColorsRequest.kt new file mode 100644 index 00000000..a0760d8b --- /dev/null +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/images/request/ImagesMainColorsRequest.kt @@ -0,0 +1,26 @@ +package com.ecwid.apiclient.v3.dto.images.request + +import com.ecwid.apiclient.v3.dto.ApiRequest +import com.ecwid.apiclient.v3.httptransport.HttpBody +import com.ecwid.apiclient.v3.impl.RequestInfo + +data class ImagesMainColorsRequest( + val imagesMainColorsRequest: ImagesMainColorsRequestBody = ImagesMainColorsRequestBody() +) : ApiRequest { + override fun toRequestInfo(): RequestInfo { + return RequestInfo.createPostRequest( + pathSegments = listOf( + "images", + "main-colors", + ), + httpBody = HttpBody.JsonBody( + obj = imagesMainColorsRequest, + ) + ) + } +} + +data class ImagesMainColorsRequestBody( + val imageUrls: List = emptyList(), + val colorsCount: Int = 5, +) diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/images/result/FetchedImagesMainColorsResult.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/images/result/FetchedImagesMainColorsResult.kt new file mode 100644 index 00000000..4b4d6bb9 --- /dev/null +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/images/result/FetchedImagesMainColorsResult.kt @@ -0,0 +1,12 @@ +package com.ecwid.apiclient.v3.dto.images.result + +import com.ecwid.apiclient.v3.dto.common.ApiResultDTO + +data class FetchedImagesMainColorsResult( + val result: Map, +) : ApiResultDTO + + +data class FetchedImageMainColors( + val colors: List, +) diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/impl/ImagesApiClientImpl.kt b/src/main/kotlin/com/ecwid/apiclient/v3/impl/ImagesApiClientImpl.kt new file mode 100644 index 00000000..8a78480b --- /dev/null +++ b/src/main/kotlin/com/ecwid/apiclient/v3/impl/ImagesApiClientImpl.kt @@ -0,0 +1,14 @@ +package com.ecwid.apiclient.v3.impl + +import com.ecwid.apiclient.v3.ApiClientHelper +import com.ecwid.apiclient.v3.ImagesApiClient +import com.ecwid.apiclient.v3.dto.images.request.ImagesMainColorsRequest +import com.ecwid.apiclient.v3.dto.images.result.FetchedImagesMainColorsResult + +class ImagesApiClientImpl( + private val apiClientHelper: ApiClientHelper, +) : ImagesApiClient { + override fun getImagesMainColors(request: ImagesMainColorsRequest): FetchedImagesMainColorsResult { + return apiClientHelper.makeObjectResultRequest(request) + } +} From 30c02f9b36c471d115125bf8d4c5a9726beaeb07 Mon Sep 17 00:00:00 2001 From: valkiriya Date: Mon, 14 Jul 2025 11:33:17 +0400 Subject: [PATCH 2/2] fix DtoContractUnitTest --- .../v3/dto/images/request/ImagesMainColorsRequest.kt | 3 ++- .../v3/dto/images/result/FetchedImagesMainColorsResult.kt | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/images/request/ImagesMainColorsRequest.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/images/request/ImagesMainColorsRequest.kt index a0760d8b..8b3e8540 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/images/request/ImagesMainColorsRequest.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/images/request/ImagesMainColorsRequest.kt @@ -1,6 +1,7 @@ package com.ecwid.apiclient.v3.dto.images.request import com.ecwid.apiclient.v3.dto.ApiRequest +import com.ecwid.apiclient.v3.dto.common.ApiRequestDTO import com.ecwid.apiclient.v3.httptransport.HttpBody import com.ecwid.apiclient.v3.impl.RequestInfo @@ -23,4 +24,4 @@ data class ImagesMainColorsRequest( data class ImagesMainColorsRequestBody( val imageUrls: List = emptyList(), val colorsCount: Int = 5, -) +) : ApiRequestDTO diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/images/result/FetchedImagesMainColorsResult.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/images/result/FetchedImagesMainColorsResult.kt index 4b4d6bb9..7947f307 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/images/result/FetchedImagesMainColorsResult.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/images/result/FetchedImagesMainColorsResult.kt @@ -3,10 +3,10 @@ package com.ecwid.apiclient.v3.dto.images.result import com.ecwid.apiclient.v3.dto.common.ApiResultDTO data class FetchedImagesMainColorsResult( - val result: Map, + val result: Map = emptyMap(), ) : ApiResultDTO data class FetchedImageMainColors( - val colors: List, -) + val colors: List = emptyList(), +) : ApiResultDTO