Skip to content

Commit fb28203

Browse files
authored
feat: add support for presigning DeleteObject requests (#1610)
1 parent 8e3169c commit fb28203

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"id": "6632426a-83de-4ceb-8aef-0d27b01b070b",
3+
"type": "feature",
4+
"description": "Add support for presigning DeleteObject requests",
5+
"issues": [
6+
"https://github.com/awslabs/aws-sdk-kotlin/issues/1609"
7+
],
8+
"module": "s3"
9+
}

codegen/aws-sdk-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/customization/PresignableOperations.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ internal val DEFAULT_PRESIGNABLE_OPERATIONS: Map<String, Set<String>> = mapOf(
1818
"com.amazonaws.s3#GetObject",
1919
"com.amazonaws.s3#PutObject",
2020
"com.amazonaws.s3#UploadPart",
21+
"com.amazonaws.s3#DeleteObject",
2122
),
2223
"com.amazonaws.sts#AWSSecurityTokenServiceV20110615" to setOf(
2324
"com.amazonaws.sts#GetCallerIdentity",

services/s3/e2eTest/src/S3PresignerTest.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
package aws.sdk.kotlin.e2etest
66

77
import aws.sdk.kotlin.services.s3.S3Client
8+
import aws.sdk.kotlin.services.s3.model.DeleteObjectRequest
89
import aws.sdk.kotlin.services.s3.model.GetObjectRequest
910
import aws.sdk.kotlin.services.s3.model.PutObjectRequest
11+
import aws.sdk.kotlin.services.s3.presigners.presignDeleteObject
1012
import aws.sdk.kotlin.services.s3.presigners.presignGetObject
1113
import aws.sdk.kotlin.services.s3.presigners.presignPutObject
1214
import aws.sdk.kotlin.testing.PRINTABLE_CHARS
@@ -50,6 +52,7 @@ class S3PresignerTest {
5052
withAllEngines { engine ->
5153
val httpClient = SdkHttpClient(engine)
5254

55+
// PUT
5356
val unsignedPutRequest = PutObjectRequest {
5457
bucket = testBucket
5558
key = keyName
@@ -58,6 +61,7 @@ class S3PresignerTest {
5861

5962
S3TestUtils.responseCodeFromPut(presignedPutRequest, contents)
6063

64+
// GET
6165
val unsignedGetRequest = GetObjectRequest {
6266
bucket = testBucket
6367
key = keyName
@@ -69,6 +73,17 @@ class S3PresignerTest {
6973
call.complete()
7074
assertEquals(200, call.response.status.value)
7175
assertEquals(contents, body)
76+
77+
// DELETE
78+
val unsignedDeleteRequest = DeleteObjectRequest {
79+
bucket = testBucket
80+
key = keyName
81+
}
82+
val presignedDeleteObject = client.presignDeleteObject(unsignedDeleteRequest, 60.seconds)
83+
84+
val deleteCall = httpClient.call(presignedDeleteObject)
85+
deleteCall.complete()
86+
assertEquals(204, deleteCall.response.status.value)
7287
}
7388
}
7489

0 commit comments

Comments
 (0)