Skip to content

Commit

Permalink
chore(clients): populate and resolve flexible checksums client config (
Browse files Browse the repository at this point in the history
  • Loading branch information
trivikr committed Sep 13, 2024
1 parent 8c6a2fb commit 685f44d
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 10 deletions.
28 changes: 18 additions & 10 deletions clients/client-s3/src/S3Client.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
// smithy-typescript generated code
import { getAddExpectContinuePlugin } from "@aws-sdk/middleware-expect-continue";
import {
FlexibleChecksumsInputConfig,
FlexibleChecksumsResolvedConfig,
resolveFlexibleChecksumsConfig,
} from "@aws-sdk/middleware-flexible-checksums";
import {
getHostHeaderPlugin,
HostHeaderInputConfig,
Expand Down Expand Up @@ -729,6 +734,7 @@ export interface ClientDefaults extends Partial<__SmithyConfiguration<__HttpHand
export type S3ClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> &
ClientDefaults &
UserAgentInputConfig &
FlexibleChecksumsInputConfig &
RetryInputConfig &
RegionInputConfig &
HostHeaderInputConfig &
Expand All @@ -751,6 +757,7 @@ export type S3ClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHan
Required<ClientDefaults> &
RuntimeExtensionsConfig &
UserAgentResolvedConfig &
FlexibleChecksumsResolvedConfig &
RetryResolvedConfig &
RegionResolvedConfig &
HostHeaderResolvedConfig &
Expand Down Expand Up @@ -785,16 +792,17 @@ export class S3Client extends __Client<
const _config_0 = __getRuntimeConfig(configuration || {});
const _config_1 = resolveClientEndpointParameters(_config_0);
const _config_2 = resolveUserAgentConfig(_config_1);
const _config_3 = resolveRetryConfig(_config_2);
const _config_4 = resolveRegionConfig(_config_3);
const _config_5 = resolveHostHeaderConfig(_config_4);
const _config_6 = resolveEndpointConfig(_config_5);
const _config_7 = resolveEventStreamSerdeConfig(_config_6);
const _config_8 = resolveHttpAuthSchemeConfig(_config_7);
const _config_9 = resolveS3Config(_config_8, { session: [() => this, CreateSessionCommand] });
const _config_10 = resolveRuntimeExtensions(_config_9, configuration?.extensions || []);
super(_config_10);
this.config = _config_10;
const _config_3 = resolveFlexibleChecksumsConfig(_config_2);
const _config_4 = resolveRetryConfig(_config_3);
const _config_5 = resolveRegionConfig(_config_4);
const _config_6 = resolveHostHeaderConfig(_config_5);
const _config_7 = resolveEndpointConfig(_config_6);
const _config_8 = resolveEventStreamSerdeConfig(_config_7);
const _config_9 = resolveHttpAuthSchemeConfig(_config_8);
const _config_10 = resolveS3Config(_config_9, { session: [() => this, CreateSessionCommand] });
const _config_11 = resolveRuntimeExtensions(_config_10, configuration?.extensions || []);
super(_config_11);
this.config = _config_11;
this.middlewareStack.use(getUserAgentPlugin(this.config));
this.middlewareStack.use(getRetryPlugin(this.config));
this.middlewareStack.use(getContentLengthPlugin(this.config));
Expand Down
8 changes: 8 additions & 0 deletions clients/client-s3/src/runtimeConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ import packageInfo from "../package.json"; // eslint-disable-line
import { NODE_SIGV4A_CONFIG_OPTIONS, emitWarningIfUnsupportedVersion as awsCheckVersion } from "@aws-sdk/core";
import { defaultProvider as credentialDefaultProvider } from "@aws-sdk/credential-provider-node";
import { NODE_USE_ARN_REGION_CONFIG_OPTIONS } from "@aws-sdk/middleware-bucket-endpoint";
import {
NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS,
NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS,
} from "@aws-sdk/middleware-flexible-checksums";
import { NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS } from "@aws-sdk/middleware-sdk-s3";
import { ChecksumConstructor as __ChecksumConstructor, HashConstructor as __HashConstructor } from "@aws-sdk/types";
import { defaultUserAgent } from "@aws-sdk/util-user-agent-node";
Expand Down Expand Up @@ -53,7 +57,11 @@ export const getRuntimeConfig = (config: S3ClientConfig) => {
maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS),
md5: config?.md5 ?? Hash.bind(null, "md5"),
region: config?.region ?? loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS),
requestChecksumCalculation:
config?.requestChecksumCalculation ?? loadNodeConfig(NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS),
requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider),
responseChecksumValidation:
config?.responseChecksumValidation ?? loadNodeConfig(NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS),
retryMode:
config?.retryMode ??
loadNodeConfig({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

package software.amazon.smithy.aws.typescript.codegen;

import static software.amazon.smithy.typescript.codegen.integration.RuntimeClientPlugin.Convention.HAS_CONFIG;
import static software.amazon.smithy.typescript.codegen.integration.RuntimeClientPlugin.Convention.HAS_MIDDLEWARE;

import java.util.Collections;
Expand Down Expand Up @@ -131,6 +132,22 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
writer.addImport("ChecksumConstructor", "__ChecksumConstructor",
TypeScriptDependency.AWS_SDK_TYPES);
writer.write("Hash.bind(null, \"sha1\")");
},
"requestChecksumCalculation", writer -> {
writer.addDependency(TypeScriptDependency.NODE_CONFIG_PROVIDER);
writer.addImport("loadConfig", "loadNodeConfig",
TypeScriptDependency.NODE_CONFIG_PROVIDER);
writer.addImport("NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS", null,
AwsDependency.FLEXIBLE_CHECKSUMS_MIDDLEWARE);
writer.write("loadNodeConfig(NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS)");
},
"responseChecksumValidation", writer -> {
writer.addDependency(TypeScriptDependency.NODE_CONFIG_PROVIDER);
writer.addImport("loadConfig", "loadNodeConfig",
TypeScriptDependency.NODE_CONFIG_PROVIDER);
writer.addImport("NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS", null,
AwsDependency.FLEXIBLE_CHECKSUMS_MIDDLEWARE);
writer.write("loadNodeConfig(NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS)");
}
);
case BROWSER:
Expand Down Expand Up @@ -160,6 +177,11 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
@Override
public List<RuntimeClientPlugin> getClientPlugins() {
return ListUtils.of(
RuntimeClientPlugin.builder()
.withConventions(AwsDependency.FLEXIBLE_CHECKSUMS_MIDDLEWARE.dependency, "FlexibleChecksums",
HAS_CONFIG)
.servicePredicate((m, s) -> hasHttpChecksumTrait(m, s))
.build(),
RuntimeClientPlugin.builder()
.withConventions(AwsDependency.FLEXIBLE_CHECKSUMS_MIDDLEWARE.dependency, "FlexibleChecksums",
HAS_MIDDLEWARE)
Expand Down
1 change: 1 addition & 0 deletions private/aws-client-api-test/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
"@aws-sdk/client-s3": "*",
"@aws-sdk/credential-provider-node": "*",
"@aws-sdk/middleware-bucket-endpoint": "*",
"@aws-sdk/middleware-flexible-checksums": "*",
"@aws-sdk/middleware-sdk-s3": "*",
"@aws-sdk/signature-v4-multi-region": "*",
"@aws-sdk/util-user-agent-node": "*",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import { S3Client, S3ClientConfigType } from "@aws-sdk/client-s3";
import { defaultProvider as credentialDefaultProvider, defaultProvider } from "@aws-sdk/credential-provider-node";
import { NODE_USE_ARN_REGION_CONFIG_OPTIONS } from "@aws-sdk/middleware-bucket-endpoint";
import {
DEFAULT_REQUEST_CHECKSUM_CALCULATION,
DEFAULT_RESPONSE_CHECKSUM_VALIDATION,
} from "@aws-sdk/middleware-flexible-checksums";
import { S3ExpressIdentityProviderImpl } from "@aws-sdk/middleware-sdk-s3";
import { SignatureV4MultiRegion } from "@aws-sdk/signature-v4-multi-region";
import { defaultUserAgent } from "@aws-sdk/util-user-agent-node";
Expand Down Expand Up @@ -122,6 +126,8 @@ export const initializeWithMaximalConfiguration = () => {
signingEscapePath: false,
bucketEndpoint: false,
sigv4aSigningRegionSet: [],
requestChecksumCalculation: DEFAULT_REQUEST_CHECKSUM_CALCULATION,
responseChecksumValidation: DEFAULT_RESPONSE_CHECKSUM_VALIDATION,
};

const s3 = new S3Client(config);
Expand Down

0 comments on commit 685f44d

Please sign in to comment.