Skip to content

Commit 3e4c891

Browse files
committed
E2E tests pass
1 parent abdba02 commit 3e4c891

File tree

5 files changed

+11
-32
lines changed

5 files changed

+11
-32
lines changed

runtime/auth/aws-signing-common/common/src/aws/smithy/kotlin/runtime/auth/awssigning/internal/AwsChunkedUtil.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,6 @@ public fun HttpRequestBuilder.setAwsChunkedBody(signer: AwsSigner, signingConfig
9595
trailingHeaders,
9696
).toHttpBody(-1)
9797

98-
is HttpBody.Bytes -> this.body // TODO: Might need a bit more work here
99-
10098
else -> throw ClientException("HttpBody type is not supported")
10199
}
102100
}

runtime/auth/http-auth-aws/common/src/aws/smithy/kotlin/runtime/http/auth/AwsHttpSigner.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import aws.smithy.kotlin.runtime.auth.awssigning.internal.useAwsChunkedEncoding
1414
import aws.smithy.kotlin.runtime.client.LogMode
1515
import aws.smithy.kotlin.runtime.client.SdkClientOption
1616
import aws.smithy.kotlin.runtime.collections.get
17-
import aws.smithy.kotlin.runtime.hashing.HashingAttributes.ChecksumStreamingRequest
1817
import aws.smithy.kotlin.runtime.http.HttpBody
1918
import aws.smithy.kotlin.runtime.http.operation.HttpOperationContext
2019
import aws.smithy.kotlin.runtime.http.request.HttpRequest
@@ -129,7 +128,6 @@ public class AwsHttpSigner(private val config: Config) : HttpSigner {
129128
val contextOmitSessionToken = attributes.getOrNull(AwsSigningAttributes.OmitSessionToken)
130129

131130
val enableAwsChunked = attributes.getOrNull(AwsSigningAttributes.EnableAwsChunked) ?: false
132-
val checksumStreamingRequest = attributes.getOrNull(ChecksumStreamingRequest) ?: false
133131

134132
// operation signing config is baseConfig + operation specific config/overrides
135133
val signingConfig = AwsSigningConfig {
@@ -166,7 +164,7 @@ public class AwsHttpSigner(private val config: Config) : HttpSigner {
166164
hashSpecification = when {
167165
contextHashSpecification != null -> contextHashSpecification
168166
body is HttpBody.Empty -> HashSpecification.EmptyBody
169-
((body.isEligibleForAwsChunkedStreaming && enableAwsChunked) || checksumStreamingRequest) -> {
167+
(body.isEligibleForAwsChunkedStreaming && enableAwsChunked) -> { // TODO: Enable AWS chunked for all ?!
170168
if (request.headers.contains("x-amz-trailer")) {
171169
if (config.isUnsignedPayload) HashSpecification.StreamingUnsignedPayloadWithTrailers else HashSpecification.StreamingAws4HmacSha256PayloadWithTrailers
172170
} else {

runtime/protocol/http-client/api/http-client.api

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ public final class aws/smithy/kotlin/runtime/http/interceptors/DiscoveredEndpoin
332332
}
333333

334334
public final class aws/smithy/kotlin/runtime/http/interceptors/FlexibleChecksumsRequestInterceptor : aws/smithy/kotlin/runtime/http/interceptors/AbstractChecksumInterceptor {
335-
public fun <init> (ZLaws/smithy/kotlin/runtime/client/config/ChecksumConfigOption;Ljava/lang/String;Z)V
335+
public fun <init> (ZLaws/smithy/kotlin/runtime/client/config/ChecksumConfigOption;Ljava/lang/String;)V
336336
public fun applyChecksum (Laws/smithy/kotlin/runtime/client/ProtocolRequestInterceptorContext;Ljava/lang/String;)Laws/smithy/kotlin/runtime/http/request/HttpRequest;
337337
public fun calculateChecksum (Laws/smithy/kotlin/runtime/client/ProtocolRequestInterceptorContext;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
338338
public fun modifyBeforeSigning (Laws/smithy/kotlin/runtime/client/ProtocolRequestInterceptorContext;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;

runtime/protocol/http-client/common/src/aws/smithy/kotlin/runtime/http/interceptors/FlexibleChecksumsRequestInterceptor.kt

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ import aws.smithy.kotlin.runtime.businessmetrics.SmithyBusinessMetric
1212
import aws.smithy.kotlin.runtime.businessmetrics.emitBusinessMetric
1313
import aws.smithy.kotlin.runtime.client.ProtocolRequestInterceptorContext
1414
import aws.smithy.kotlin.runtime.client.config.ChecksumConfigOption
15-
import aws.smithy.kotlin.runtime.collections.putIfAbsent
1615
import aws.smithy.kotlin.runtime.hashing.*
17-
import aws.smithy.kotlin.runtime.hashing.HashingAttributes.ChecksumStreamingRequest
1816
import aws.smithy.kotlin.runtime.http.*
1917
import aws.smithy.kotlin.runtime.http.request.HttpRequest
2018
import aws.smithy.kotlin.runtime.http.request.header
@@ -34,7 +32,6 @@ public class FlexibleChecksumsRequestInterceptor(
3432
requestChecksumRequired: Boolean,
3533
requestChecksumCalculation: ChecksumConfigOption?,
3634
private val userSelectedChecksumAlgorithm: String?,
37-
private val streamingPayload: Boolean,
3835
) : AbstractChecksumInterceptor() {
3936
private val forcedToCalculateChecksum = requestChecksumRequired || requestChecksumCalculation == ChecksumConfigOption.WHEN_SUPPORTED
4037
private val checksumHeader = StringBuilder("x-amz-checksum-")
@@ -75,31 +72,22 @@ public class FlexibleChecksumsRequestInterceptor(
7572

7673
val request = context.protocolRequest.toBuilder()
7774

78-
if (request.body.isEligibleForAwsChunkedStreaming || streamingPayload) {
75+
// throw Exception("\nBody type: ${request.body::class.simpleName}\nEligible for chunked streaming: ${request.body.isEligibleForAwsChunkedStreaming}\nContent Length: ${request.body.contentLength}\nIs one shot: ${request.body.isOneShot}")
76+
77+
if (request.body.isEligibleForAwsChunkedStreaming) {
7978
val deferredChecksum = CompletableDeferred<String>(context.executionContext.coroutineContext.job)
8079

81-
if (request.body is HttpBody.Bytes) {
82-
checksumAlgorithm.update(
83-
request.body.readAll() ?: byteArrayOf(),
80+
request.body = request.body
81+
.toHashingBody(
82+
checksumAlgorithm,
83+
request.body.contentLength,
8484
)
85-
deferredChecksum.complete(
86-
checksumAlgorithm.digest().encodeBase64String(),
85+
.toCompletingBody(
86+
deferredChecksum,
8787
)
88-
} else {
89-
request.body = request.body
90-
.toHashingBody(
91-
checksumAlgorithm,
92-
request.body.contentLength,
93-
)
94-
.toCompletingBody(
95-
deferredChecksum,
96-
)
97-
}
9888

9989
request.headers.append("x-amz-trailer", checksumHeader.toString())
10090
request.trailingHeaders.append(checksumHeader.toString(), deferredChecksum)
101-
102-
context.executionContext.putIfAbsent(ChecksumStreamingRequest, true)
10391
} else {
10492
checksumAlgorithm.update(
10593
request.body.readAll() ?: byteArrayOf(),

runtime/protocol/http-client/common/test/aws/smithy/kotlin/runtime/http/interceptors/FlexibleChecksumsRequestInterceptorTest.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ class FlexibleChecksumsRequestInterceptorTest {
4646
userSelectedChecksumAlgorithm = checksumAlgorithmName,
4747
requestChecksumRequired = true,
4848
requestChecksumCalculation = ChecksumConfigOption.WHEN_SUPPORTED,
49-
streamingPayload = false,
5049
),
5150
)
5251

@@ -74,7 +73,6 @@ class FlexibleChecksumsRequestInterceptorTest {
7473
userSelectedChecksumAlgorithm = checksumAlgorithmName,
7574
requestChecksumRequired = true,
7675
requestChecksumCalculation = ChecksumConfigOption.WHEN_SUPPORTED,
77-
streamingPayload = false,
7876
),
7977
)
8078

@@ -100,7 +98,6 @@ class FlexibleChecksumsRequestInterceptorTest {
10098
userSelectedChecksumAlgorithm = unsupportedChecksumAlgorithmName,
10199
requestChecksumRequired = true,
102100
requestChecksumCalculation = ChecksumConfigOption.WHEN_SUPPORTED,
103-
streamingPayload = false,
104101
),
105102
)
106103
}
@@ -127,7 +124,6 @@ class FlexibleChecksumsRequestInterceptorTest {
127124
userSelectedChecksumAlgorithm = checksumAlgorithmName,
128125
requestChecksumRequired = true,
129126
requestChecksumCalculation = ChecksumConfigOption.WHEN_SUPPORTED,
130-
streamingPayload = false,
131127
),
132128
)
133129

@@ -196,7 +192,6 @@ class FlexibleChecksumsRequestInterceptorTest {
196192
userSelectedChecksumAlgorithm = checksumAlgorithmName,
197193
requestChecksumRequired = true,
198194
requestChecksumCalculation = ChecksumConfigOption.WHEN_SUPPORTED,
199-
streamingPayload = false,
200195
),
201196
)
202197

0 commit comments

Comments
 (0)