Skip to content

Commit 13b770f

Browse files
authored
Merge pull request #421 from Ecwid/report-advice
Add support for report advices endpoints
2 parents 69bcaae + fad3604 commit 13b770f

6 files changed

Lines changed: 45 additions & 1 deletion

File tree

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ import com.ecwid.apiclient.v3.dto.productreview.request.*
3232
import com.ecwid.apiclient.v3.dto.productreview.result.*
3333
import com.ecwid.apiclient.v3.dto.producttype.request.*
3434
import com.ecwid.apiclient.v3.dto.producttype.result.*
35+
import com.ecwid.apiclient.v3.dto.report.request.ReportAdviceRequest
3536
import com.ecwid.apiclient.v3.dto.report.request.ReportRequest
37+
import com.ecwid.apiclient.v3.dto.report.result.FetchedReportAdviceResponse
3638
import com.ecwid.apiclient.v3.dto.report.result.FetchedReportResponse
3739
import com.ecwid.apiclient.v3.dto.saleschannels.request.*
3840
import com.ecwid.apiclient.v3.dto.saleschannels.response.*
@@ -277,6 +279,7 @@ interface ApplicationStorageApiClient {
277279
// Report API
278280
interface ReportsApiClient {
279281
fun fetchReport(request: ReportRequest): FetchedReportResponse
282+
fun getReportAdvice(request: ReportAdviceRequest): FetchedReportAdviceResponse
280283
}
281284

282285
// Recurring subscriptions
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.ecwid.apiclient.v3.dto.report.request
2+
3+
import com.ecwid.apiclient.v3.dto.ApiRequest
4+
import com.ecwid.apiclient.v3.dto.report.enums.ReportType
5+
import com.ecwid.apiclient.v3.impl.RequestInfo
6+
import com.ecwid.apiclient.v3.responsefields.ResponseFields
7+
8+
data class ReportAdviceRequest(
9+
val reportType: ReportType = ReportType.allTraffic,
10+
) : ApiRequest {
11+
12+
override fun toRequestInfo() = RequestInfo.createGetRequest(
13+
pathSegments = listOf(
14+
"reports",
15+
reportType.toString(),
16+
"tip"
17+
),
18+
params = emptyMap(),
19+
responseFields = ResponseFields.All
20+
)
21+
22+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.ecwid.apiclient.v3.dto.report.result
2+
3+
import com.ecwid.apiclient.v3.dto.common.ApiFetchedDTO
4+
5+
data class FetchedReportAdviceResponse(
6+
val tip: String? = null
7+
) : ApiFetchedDTO {
8+
9+
override fun getModifyKind() = ApiFetchedDTO.ModifyKind.ReadOnly
10+
11+
}

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

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

33
import com.ecwid.apiclient.v3.ApiClientHelper
44
import com.ecwid.apiclient.v3.ReportsApiClient
5+
import com.ecwid.apiclient.v3.dto.report.request.ReportAdviceRequest
56
import com.ecwid.apiclient.v3.dto.report.request.ReportRequest
7+
import com.ecwid.apiclient.v3.dto.report.result.FetchedReportAdviceResponse
68
import com.ecwid.apiclient.v3.dto.report.result.FetchedReportResponse
79

810
class ReportsApiClientImpl(
@@ -12,4 +14,7 @@ class ReportsApiClientImpl(
1214
override fun fetchReport(request: ReportRequest) =
1315
apiClientHelper.makeObjectResultRequest<FetchedReportResponse>(request)
1416

17+
override fun getReportAdvice(request: ReportAdviceRequest) =
18+
apiClientHelper.makeObjectResultRequest<FetchedReportAdviceResponse>(request)
19+
1520
}

src/test/kotlin/com/ecwid/apiclient/v3/DtoContractUnitTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ class DtoContractUnitTest {
151151
.filterNot { dtoClass -> dtoClass.isClassifiedDTOOrEnclosingClass(*dtoMarkerInterfaces) }
152152
assertTrue(problemDtoClasses.isEmpty()) {
153153
val interfacesStr = dtoMarkerInterfaces.joinToString(separator = ", ") { int -> int.simpleName }
154-
"Some of top level DTO data classes does implement one of marker interfaces [$interfacesStr]:\n" +
154+
"Some of top level DTO data classes do not implement any marker interfaces [$interfacesStr]:\n" +
155155
classesToLoggableString(problemDtoClasses)
156156
}
157157
}

src/test/kotlin/com/ecwid/apiclient/v3/rule/NullablePropertyRules.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import com.ecwid.apiclient.v3.dto.productreview.request.UpdatedProductReviewStat
1919
import com.ecwid.apiclient.v3.dto.profile.request.StoreProfileRequest
2020
import com.ecwid.apiclient.v3.dto.profile.result.FetchedLatestStats
2121
import com.ecwid.apiclient.v3.dto.report.request.ReportRequest
22+
import com.ecwid.apiclient.v3.dto.report.result.FetchedReportAdviceResponse
2223
import com.ecwid.apiclient.v3.dto.report.result.FetchedReportResponse
2324
import com.ecwid.apiclient.v3.dto.storage.result.FetchedStorageData
2425
import com.ecwid.apiclient.v3.dto.variation.request.ProductVariationsRequest
@@ -95,6 +96,8 @@ val otherNullablePropertyRules: List<NullablePropertyRule<*, *>> = listOf(
9596
AllowNullable(FetchedReportResponse::comparePeriodDataset),
9697
AllowNullable(FetchedReportResponse::additionalData),
9798

99+
AllowNullable(FetchedReportAdviceResponse::tip),
100+
98101
AllowNullable(FetchedReportResponse.FetchedDataset::startTimeStamp),
99102
AllowNullable(FetchedReportResponse.FetchedDataset::endTimeStamp),
100103
AllowNullable(FetchedReportResponse.FetchedDataset::percentage),

0 commit comments

Comments
 (0)