Skip to content

Commit e181182

Browse files
authored
Merge pull request #194 from Ecwid/api-storage-endpoint
Api storage endpoint
2 parents ae399cc + 4dfda2e commit e181182

18 files changed

Lines changed: 294 additions & 2 deletions

config/detekt.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ complexity:
99
LongParameterList:
1010
functionThreshold: 10
1111
constructorThreshold: 15
12+
excludes: ['**/com/ecwid/apiclient/v3/ApiClient.kt']
1213
NestedBlockDepth:
1314
excludes: ['**/test/**']
1415
TooManyFunctions:

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

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ import com.ecwid.apiclient.v3.dto.profile.request.*
3131
import com.ecwid.apiclient.v3.dto.profile.result.*
3232
import com.ecwid.apiclient.v3.dto.saleschannels.request.*
3333
import com.ecwid.apiclient.v3.dto.saleschannels.response.*
34+
import com.ecwid.apiclient.v3.dto.storage.request.*
35+
import com.ecwid.apiclient.v3.dto.storage.result.*
3436
import com.ecwid.apiclient.v3.dto.variation.request.*
3537
import com.ecwid.apiclient.v3.dto.variation.result.*
3638
import com.ecwid.apiclient.v3.httptransport.HttpTransport
@@ -52,6 +54,7 @@ open class ApiClient private constructor(
5254
cartsApiClient: CartsApiClient,
5355
salesChannelsApiClient: SalesChannelsApiClient,
5456
applicationApiClient: ApplicationApiClient,
57+
applicationStorageApiClient: ApplicationStorageApiClient,
5558
) :
5659
StoreProfileApiClient by storeProfileApiClient,
5760
ProductsApiClient by productsApiClient,
@@ -65,7 +68,8 @@ open class ApiClient private constructor(
6568
CouponsApiClient by discountCouponsApiClient,
6669
CartsApiClient by cartsApiClient,
6770
SalesChannelsApiClient by salesChannelsApiClient,
68-
ApplicationApiClient by applicationApiClient {
71+
ApplicationApiClient by applicationApiClient,
72+
ApplicationStorageApiClient by applicationStorageApiClient {
6973

7074
constructor(apiClientHelper: ApiClientHelper) : this(
7175
apiClientHelper = apiClientHelper,
@@ -82,6 +86,7 @@ open class ApiClient private constructor(
8286
cartsApiClient = CartsApiClientImpl(apiClientHelper),
8387
salesChannelsApiClient = SalesChannelsApiClientImpl(apiClientHelper),
8488
applicationApiClient = ApplicationApiClientImpl(apiClientHelper),
89+
applicationStorageApiClient = ApplicationStorageApiClientImpl(apiClientHelper),
8590
)
8691

8792
companion object {
@@ -290,6 +295,16 @@ interface ApplicationApiClient {
290295
fun deleteApplication(request: ApplicationDeleteRequest): ApplicationDeleteResult
291296
}
292297

298+
// Application storage
299+
// https://developers.ecwid.com/api-documentation/app-storage
300+
interface ApplicationStorageApiClient {
301+
fun getStorageData(request: StorageDataRequest): FetchedStorageData
302+
fun getAllStorageData(request: AllStorageDataRequest): AllStorageDataResult
303+
fun createStorageData(request: StorageDataCreateRequest): StorageDataCreateResult
304+
fun updateStorageData(request: StorageDataUpdateRequest): StorageDataUpdateResult
305+
fun deleteStorageData(request: StorageDataDeleteRequest): StorageDataDeleteResult
306+
}
307+
293308
// Starter site
294309
// https://developers.ecwid.com/api-documentation/starter-site
295310
// TODO
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.ecwid.apiclient.v3.converter
2+
3+
import com.ecwid.apiclient.v3.dto.storage.request.UpdatedStorageData
4+
import com.ecwid.apiclient.v3.dto.storage.result.FetchedStorageData
5+
6+
fun FetchedStorageData.toUpdated(): UpdatedStorageData {
7+
return UpdatedStorageData(key = key, value = value)
8+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.ecwid.apiclient.v3.dto.storage.request
2+
3+
import com.ecwid.apiclient.v3.dto.ApiRequest
4+
import com.ecwid.apiclient.v3.impl.RequestInfo
5+
6+
class AllStorageDataRequest : ApiRequest {
7+
8+
override fun toRequestInfo() = RequestInfo.createGetRequest(
9+
pathSegments = listOf(
10+
"storage"
11+
)
12+
)
13+
14+
}
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.storage.request
2+
3+
import com.ecwid.apiclient.v3.dto.ApiRequest
4+
import com.ecwid.apiclient.v3.httptransport.HttpBody
5+
import com.ecwid.apiclient.v3.impl.MIME_TYPE_APPLICATION_JSON
6+
import com.ecwid.apiclient.v3.impl.RequestInfo
7+
8+
data class StorageDataCreateRequest(
9+
private val updatedStorageData: UpdatedStorageData = UpdatedStorageData(),
10+
) : ApiRequest {
11+
12+
override fun toRequestInfo() = RequestInfo.createPostRequest(
13+
pathSegments = listOf(
14+
"storage",
15+
updatedStorageData.key,
16+
),
17+
httpBody = HttpBody.ByteArrayBody(
18+
bytes = updatedStorageData.value?.toByteArray() ?: ByteArray(0),
19+
mimeType = MIME_TYPE_APPLICATION_JSON,
20+
),
21+
)
22+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.ecwid.apiclient.v3.dto.storage.request
2+
3+
import com.ecwid.apiclient.v3.dto.ApiRequest
4+
import com.ecwid.apiclient.v3.impl.RequestInfo
5+
6+
data class StorageDataDeleteRequest(
7+
val key: String = "",
8+
) : ApiRequest {
9+
10+
override fun toRequestInfo() = RequestInfo.createDeleteRequest(
11+
pathSegments = listOf(
12+
"storage",
13+
key,
14+
),
15+
)
16+
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.ecwid.apiclient.v3.dto.storage.request
2+
3+
import com.ecwid.apiclient.v3.dto.ApiRequest
4+
import com.ecwid.apiclient.v3.impl.RequestInfo
5+
6+
data class StorageDataRequest(
7+
val key: String = "",
8+
) : ApiRequest {
9+
10+
override fun toRequestInfo() = RequestInfo.createGetRequest(
11+
pathSegments = listOf(
12+
"storage",
13+
key
14+
),
15+
)
16+
17+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.ecwid.apiclient.v3.dto.storage.request
2+
3+
import com.ecwid.apiclient.v3.dto.ApiRequest
4+
import com.ecwid.apiclient.v3.httptransport.HttpBody
5+
import com.ecwid.apiclient.v3.impl.MIME_TYPE_APPLICATION_JSON
6+
import com.ecwid.apiclient.v3.impl.RequestInfo
7+
8+
data class StorageDataUpdateRequest(
9+
private val updatedStorageData: UpdatedStorageData = UpdatedStorageData(),
10+
) : ApiRequest {
11+
12+
override fun toRequestInfo() = RequestInfo.createPutRequest(
13+
pathSegments = listOf(
14+
"storage",
15+
updatedStorageData.key,
16+
),
17+
httpBody = HttpBody.ByteArrayBody(
18+
bytes = updatedStorageData.value?.toByteArray() ?: ByteArray(0),
19+
mimeType = MIME_TYPE_APPLICATION_JSON,
20+
),
21+
)
22+
}
23+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.ecwid.apiclient.v3.dto.storage.request
2+
3+
import com.ecwid.apiclient.v3.dto.common.ApiUpdatedDTO
4+
import com.ecwid.apiclient.v3.dto.storage.result.FetchedStorageData
5+
6+
data class UpdatedStorageData(
7+
val key: String = "",
8+
val value: String? = null,
9+
) : ApiUpdatedDTO {
10+
11+
override fun getModifyKind() = ApiUpdatedDTO.ModifyKind.ReadWrite(FetchedStorageData::class)
12+
13+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.ecwid.apiclient.v3.dto.storage.result
2+
3+
class AllStorageDataResult : ArrayList<FetchedStorageData>()

0 commit comments

Comments
 (0)