Skip to content

Commit 81674e3

Browse files
committed
feat(client-s3-control): add md5 header for operations with httpChecksumRequired trait
1 parent 7af03fa commit 81674e3

File tree

8 files changed

+36
-0
lines changed

8 files changed

+36
-0
lines changed

clients/client-s3-control/S3ControlClient.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,11 @@ import {
186186
Logger as __Logger,
187187
Provider as __Provider,
188188
StreamCollector as __StreamCollector,
189+
StreamHasher as __StreamHasher,
189190
UrlParser as __UrlParser,
190191
UserAgent as __UserAgent,
191192
} from "@aws-sdk/types";
193+
import { Readable } from "stream";
192194

193195
export type ServiceInputTypes =
194196
| CreateAccessPointCommandInput
@@ -403,6 +405,20 @@ export interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__
403405
* @internal
404406
*/
405407
defaultUserAgentProvider?: Provider<__UserAgent>;
408+
409+
/**
410+
* A function that, given a hash constructor and a stream, calculates the
411+
* hash of the streamed value.
412+
* @internal
413+
*/
414+
streamHasher?: __StreamHasher<Readable> | __StreamHasher<Blob>;
415+
416+
/**
417+
* A constructor for a class implementing the @aws-sdk/types.Hash interface
418+
* that computes MD5 hashes.
419+
* @internal
420+
*/
421+
md5?: __HashConstructor;
406422
}
407423

408424
type S3ControlClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> &

clients/client-s3-control/commands/CreateBucketCommand.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
deserializeAws_restXmlCreateBucketCommand,
55
serializeAws_restXmlCreateBucketCommand,
66
} from "../protocols/Aws_restXml";
7+
import { getApplyMd5BodyChecksumPlugin } from "@aws-sdk/middleware-apply-body-checksum";
78
import { getRedirectFromPostIdPlugin } from "@aws-sdk/middleware-sdk-s3-control";
89
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
910
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
@@ -111,6 +112,7 @@ export class CreateBucketCommand extends $Command<
111112
): Handler<CreateBucketCommandInput, CreateBucketCommandOutput> {
112113
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
113114
this.middlewareStack.use(getRedirectFromPostIdPlugin(configuration));
115+
this.middlewareStack.use(getApplyMd5BodyChecksumPlugin(configuration));
114116

115117
const stack = clientStack.concat(this.middlewareStack);
116118

clients/client-s3-control/commands/PutBucketLifecycleConfigurationCommand.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
deserializeAws_restXmlPutBucketLifecycleConfigurationCommand,
55
serializeAws_restXmlPutBucketLifecycleConfigurationCommand,
66
} from "../protocols/Aws_restXml";
7+
import { getApplyMd5BodyChecksumPlugin } from "@aws-sdk/middleware-apply-body-checksum";
78
import { getProcessArnablesPlugin } from "@aws-sdk/middleware-sdk-s3-control";
89
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
910
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
@@ -84,6 +85,7 @@ export class PutBucketLifecycleConfigurationCommand extends $Command<
8485
): Handler<PutBucketLifecycleConfigurationCommandInput, PutBucketLifecycleConfigurationCommandOutput> {
8586
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
8687
this.middlewareStack.use(getProcessArnablesPlugin(configuration));
88+
this.middlewareStack.use(getApplyMd5BodyChecksumPlugin(configuration));
8789

8890
const stack = clientStack.concat(this.middlewareStack);
8991

clients/client-s3-control/commands/PutBucketPolicyCommand.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
deserializeAws_restXmlPutBucketPolicyCommand,
55
serializeAws_restXmlPutBucketPolicyCommand,
66
} from "../protocols/Aws_restXml";
7+
import { getApplyMd5BodyChecksumPlugin } from "@aws-sdk/middleware-apply-body-checksum";
78
import { getProcessArnablesPlugin } from "@aws-sdk/middleware-sdk-s3-control";
89
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
910
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
@@ -100,6 +101,7 @@ export class PutBucketPolicyCommand extends $Command<
100101
): Handler<PutBucketPolicyCommandInput, PutBucketPolicyCommandOutput> {
101102
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
102103
this.middlewareStack.use(getProcessArnablesPlugin(configuration));
104+
this.middlewareStack.use(getApplyMd5BodyChecksumPlugin(configuration));
103105

104106
const stack = clientStack.concat(this.middlewareStack);
105107

clients/client-s3-control/commands/PutBucketTaggingCommand.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
deserializeAws_restXmlPutBucketTaggingCommand,
55
serializeAws_restXmlPutBucketTaggingCommand,
66
} from "../protocols/Aws_restXml";
7+
import { getApplyMd5BodyChecksumPlugin } from "@aws-sdk/middleware-apply-body-checksum";
78
import { getProcessArnablesPlugin } from "@aws-sdk/middleware-sdk-s3-control";
89
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
910
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
@@ -145,6 +146,7 @@ export class PutBucketTaggingCommand extends $Command<
145146
): Handler<PutBucketTaggingCommandInput, PutBucketTaggingCommandOutput> {
146147
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
147148
this.middlewareStack.use(getProcessArnablesPlugin(configuration));
149+
this.middlewareStack.use(getApplyMd5BodyChecksumPlugin(configuration));
148150

149151
const stack = clientStack.concat(this.middlewareStack);
150152

clients/client-s3-control/package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,12 @@
3232
"@aws-sdk/config-resolver": "3.18.0",
3333
"@aws-sdk/credential-provider-node": "3.18.0",
3434
"@aws-sdk/fetch-http-handler": "3.18.0",
35+
"@aws-sdk/hash-blob-browser": "3.18.0",
3536
"@aws-sdk/hash-node": "3.18.0",
37+
"@aws-sdk/hash-stream-node": "3.18.0",
3638
"@aws-sdk/invalid-dependency": "3.18.0",
39+
"@aws-sdk/md5-js": "3.18.0",
40+
"@aws-sdk/middleware-apply-body-checksum": "3.18.0",
3741
"@aws-sdk/middleware-content-length": "3.18.0",
3842
"@aws-sdk/middleware-host-header": "3.18.0",
3943
"@aws-sdk/middleware-logger": "3.18.0",

clients/client-s3-control/runtimeConfig.browser.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ import packageInfo from "./package.json";
22

33
import { Sha256 } from "@aws-crypto/sha256-browser";
44
import { FetchHttpHandler, streamCollector } from "@aws-sdk/fetch-http-handler";
5+
import { blobHasher as streamHasher } from "@aws-sdk/hash-blob-browser";
56
import { invalidProvider } from "@aws-sdk/invalid-dependency";
7+
import { Md5 } from "@aws-sdk/md5-js";
68
import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@aws-sdk/middleware-retry";
79
import { fromBase64, toBase64 } from "@aws-sdk/util-base64-browser";
810
import { calculateBodyLength } from "@aws-sdk/util-body-length-browser";
@@ -26,11 +28,13 @@ export const ClientDefaultValues: Required<ClientDefaults> = {
2628
clientVersion: packageInfo.version,
2729
}),
2830
maxAttempts: DEFAULT_MAX_ATTEMPTS,
31+
md5: Md5,
2932
region: invalidProvider("Region is missing"),
3033
requestHandler: new FetchHttpHandler(),
3134
retryModeProvider: () => Promise.resolve(DEFAULT_RETRY_MODE),
3235
sha256: Sha256,
3336
streamCollector,
37+
streamHasher,
3438
utf8Decoder: fromUtf8,
3539
utf8Encoder: toUtf8,
3640
};

clients/client-s3-control/runtimeConfig.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ import { decorateDefaultCredentialProvider } from "@aws-sdk/client-sts";
44
import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS } from "@aws-sdk/config-resolver";
55
import { defaultProvider as credentialDefaultProvider } from "@aws-sdk/credential-provider-node";
66
import { Hash } from "@aws-sdk/hash-node";
7+
import { fileStreamHasher as streamHasher } from "@aws-sdk/hash-stream-node";
78
import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@aws-sdk/middleware-retry";
89
import { loadConfig as loadNodeConfig } from "@aws-sdk/node-config-provider";
910
import { NodeHttpHandler, streamCollector } from "@aws-sdk/node-http-handler";
11+
import { HashConstructor as __HashConstructor } from "@aws-sdk/types";
1012
import { fromBase64, toBase64 } from "@aws-sdk/util-base64-node";
1113
import { calculateBodyLength } from "@aws-sdk/util-body-length-node";
1214
import { defaultUserAgent } from "@aws-sdk/util-user-agent-node";
@@ -29,11 +31,13 @@ export const ClientDefaultValues: Required<ClientDefaults> = {
2931
clientVersion: packageInfo.version,
3032
}),
3133
maxAttempts: loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS),
34+
md5: Hash.bind(null, "md5"),
3235
region: loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS),
3336
requestHandler: new NodeHttpHandler(),
3437
retryModeProvider: loadNodeConfig(NODE_RETRY_MODE_CONFIG_OPTIONS),
3538
sha256: Hash.bind(null, "sha256"),
3639
streamCollector,
40+
streamHasher,
3741
utf8Decoder: fromUtf8,
3842
utf8Encoder: toUtf8,
3943
};

0 commit comments

Comments
 (0)