diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/ApiClient.kt b/src/main/kotlin/com/ecwid/apiclient/v3/ApiClient.kt index df8896fe6..41689b9e8 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/ApiClient.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/ApiClient.kt @@ -32,7 +32,9 @@ import com.ecwid.apiclient.v3.dto.productreview.request.* import com.ecwid.apiclient.v3.dto.productreview.result.* import com.ecwid.apiclient.v3.dto.producttype.request.* import com.ecwid.apiclient.v3.dto.producttype.result.* +import com.ecwid.apiclient.v3.dto.report.request.ReportAdviceRequest import com.ecwid.apiclient.v3.dto.report.request.ReportRequest +import com.ecwid.apiclient.v3.dto.report.result.FetchedReportAdviceResponse import com.ecwid.apiclient.v3.dto.report.result.FetchedReportResponse import com.ecwid.apiclient.v3.dto.saleschannels.request.* import com.ecwid.apiclient.v3.dto.saleschannels.response.* @@ -277,6 +279,7 @@ interface ApplicationStorageApiClient { // Report API interface ReportsApiClient { fun fetchReport(request: ReportRequest): FetchedReportResponse + fun getReportAdvice(request: ReportAdviceRequest): FetchedReportAdviceResponse } // Recurring subscriptions diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/report/request/ReportAdviceRequest.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/report/request/ReportAdviceRequest.kt new file mode 100644 index 000000000..b757c135c --- /dev/null +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/report/request/ReportAdviceRequest.kt @@ -0,0 +1,22 @@ +package com.ecwid.apiclient.v3.dto.report.request + +import com.ecwid.apiclient.v3.dto.ApiRequest +import com.ecwid.apiclient.v3.dto.report.enums.ReportType +import com.ecwid.apiclient.v3.impl.RequestInfo +import com.ecwid.apiclient.v3.responsefields.ResponseFields + +data class ReportAdviceRequest( + val reportType: ReportType = ReportType.allTraffic, +) : ApiRequest { + + override fun toRequestInfo() = RequestInfo.createGetRequest( + pathSegments = listOf( + "reports", + reportType.toString(), + "tip" + ), + params = emptyMap(), + responseFields = ResponseFields.All + ) + +} diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/report/result/FetchedReportAdviceResponse.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/report/result/FetchedReportAdviceResponse.kt new file mode 100644 index 000000000..1eb74d585 --- /dev/null +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/report/result/FetchedReportAdviceResponse.kt @@ -0,0 +1,11 @@ +package com.ecwid.apiclient.v3.dto.report.result + +import com.ecwid.apiclient.v3.dto.common.ApiFetchedDTO + +data class FetchedReportAdviceResponse( + val tip: String? = null +) : ApiFetchedDTO { + + override fun getModifyKind() = ApiFetchedDTO.ModifyKind.ReadOnly + +} diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/impl/ReportsApiClientImpl.kt b/src/main/kotlin/com/ecwid/apiclient/v3/impl/ReportsApiClientImpl.kt index 224eb6cb4..d289b1947 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/impl/ReportsApiClientImpl.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/impl/ReportsApiClientImpl.kt @@ -2,7 +2,9 @@ package com.ecwid.apiclient.v3.impl import com.ecwid.apiclient.v3.ApiClientHelper import com.ecwid.apiclient.v3.ReportsApiClient +import com.ecwid.apiclient.v3.dto.report.request.ReportAdviceRequest import com.ecwid.apiclient.v3.dto.report.request.ReportRequest +import com.ecwid.apiclient.v3.dto.report.result.FetchedReportAdviceResponse import com.ecwid.apiclient.v3.dto.report.result.FetchedReportResponse class ReportsApiClientImpl( @@ -12,4 +14,7 @@ class ReportsApiClientImpl( override fun fetchReport(request: ReportRequest) = apiClientHelper.makeObjectResultRequest(request) + override fun getReportAdvice(request: ReportAdviceRequest) = + apiClientHelper.makeObjectResultRequest(request) + } diff --git a/src/test/kotlin/com/ecwid/apiclient/v3/DtoContractUnitTest.kt b/src/test/kotlin/com/ecwid/apiclient/v3/DtoContractUnitTest.kt index 81f11545d..0505a327b 100644 --- a/src/test/kotlin/com/ecwid/apiclient/v3/DtoContractUnitTest.kt +++ b/src/test/kotlin/com/ecwid/apiclient/v3/DtoContractUnitTest.kt @@ -151,7 +151,7 @@ class DtoContractUnitTest { .filterNot { dtoClass -> dtoClass.isClassifiedDTOOrEnclosingClass(*dtoMarkerInterfaces) } assertTrue(problemDtoClasses.isEmpty()) { val interfacesStr = dtoMarkerInterfaces.joinToString(separator = ", ") { int -> int.simpleName } - "Some of top level DTO data classes does implement one of marker interfaces [$interfacesStr]:\n" + + "Some of top level DTO data classes do not implement any marker interfaces [$interfacesStr]:\n" + classesToLoggableString(problemDtoClasses) } } diff --git a/src/test/kotlin/com/ecwid/apiclient/v3/rule/NullablePropertyRules.kt b/src/test/kotlin/com/ecwid/apiclient/v3/rule/NullablePropertyRules.kt index c42a6de4d..b8fd414bd 100644 --- a/src/test/kotlin/com/ecwid/apiclient/v3/rule/NullablePropertyRules.kt +++ b/src/test/kotlin/com/ecwid/apiclient/v3/rule/NullablePropertyRules.kt @@ -19,6 +19,7 @@ import com.ecwid.apiclient.v3.dto.productreview.request.UpdatedProductReviewStat import com.ecwid.apiclient.v3.dto.profile.request.StoreProfileRequest import com.ecwid.apiclient.v3.dto.profile.result.FetchedLatestStats import com.ecwid.apiclient.v3.dto.report.request.ReportRequest +import com.ecwid.apiclient.v3.dto.report.result.FetchedReportAdviceResponse import com.ecwid.apiclient.v3.dto.report.result.FetchedReportResponse import com.ecwid.apiclient.v3.dto.storage.result.FetchedStorageData import com.ecwid.apiclient.v3.dto.variation.request.ProductVariationsRequest @@ -95,6 +96,8 @@ val otherNullablePropertyRules: List> = listOf( AllowNullable(FetchedReportResponse::comparePeriodDataset), AllowNullable(FetchedReportResponse::additionalData), + AllowNullable(FetchedReportAdviceResponse::tip), + AllowNullable(FetchedReportResponse.FetchedDataset::startTimeStamp), AllowNullable(FetchedReportResponse.FetchedDataset::endTimeStamp), AllowNullable(FetchedReportResponse.FetchedDataset::percentage),