Skip to content

Commit 72faa6d

Browse files
committed
chore: add codegen for eventstream handler
1 parent b45d52d commit 72faa6d

File tree

3 files changed

+27
-23
lines changed

3 files changed

+27
-23
lines changed
Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,18 @@
2121
import software.amazon.smithy.utils.ListUtils;
2222
import software.amazon.smithy.utils.MapUtils;
2323

24-
public class AddEventStreamSigningDependency implements TypeScriptIntegration {
24+
/**
25+
* Adds runtime client plugins that handle the eventstream flow in request,
26+
* including eventstream payload signing.
27+
*/
28+
public class AddEventStreamHandlingDependency implements TypeScriptIntegration {
2529
@Override
2630
public List<RuntimeClientPlugin> getClientPlugins() {
2731
return ListUtils.of(
2832
RuntimeClientPlugin.builder()
29-
.withConventions(AwsDependency.MIDDLEWARE_EVENTSTREAM_SIGNING.dependency,
33+
.withConventions(AwsDependency.MIDDLEWARE_EVENTSTREAM.dependency,
3034
"EventStream")
31-
.servicePredicate(AddEventStreamSigningDependency::hasEventStreamInput)
35+
.servicePredicate(AddEventStreamHandlingDependency::hasEventStreamInput)
3236
.build()
3337
);
3438
}
@@ -41,10 +45,10 @@ public void addConfigInterfaceFields(
4145
TypeScriptWriter writer
4246
) {
4347
if (hasEventStreamInput(model, settings.getService(model))) {
44-
writer.addImport("EventStreamSignerProvider", "__EventStreamSignerProvider",
48+
writer.addImport("EventStreamPayloadHandlerProvider", "__EventStreamPayloadHandlerProvider",
4549
TypeScriptDependency.AWS_SDK_TYPES.packageName);
46-
writer.writeDocs("The function that provides necessary utilities for singing event stream");
47-
writer.write("eventStreamSignerProvider?: __EventStreamSignerProvider;\n");
50+
writer.writeDocs("The function that provides necessary utilities for handling request event stream.");
51+
writer.write("eventStreamPayloadHandlerProvider?: __EventStreamPayloadHandlerProvider;\n");
4852
}
4953
}
5054

@@ -62,25 +66,24 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
6266

6367
switch (target) {
6468
case NODE:
65-
return MapUtils.of("eventStreamSignerProvider", writer -> {
66-
writer.addDependency(AwsDependency.AWS_SDK_EVENTSTREAM_SIGNER_NODE);
67-
writer.addImport("eventStreamSignerProvider", "eventStreamSignerProvider",
68-
AwsDependency.AWS_SDK_EVENTSTREAM_SIGNER_NODE.packageName);
69-
writer.write("eventStreamSignerProvider,");
69+
return MapUtils.of("eventStreamPayloadHandlerProvider", writer -> {
70+
writer.addDependency(AwsDependency.AWS_SDK_EVENTSTREAM_HANDLER_NODE);
71+
writer.addImport("eventStreamPayloadHandlerProvider", "eventStreamPayloadHandlerProvider",
72+
AwsDependency.AWS_SDK_EVENTSTREAM_HANDLER_NODE.packageName);
73+
writer.write("eventStreamPayloadHandlerProvider,");
7074
});
7175
case BROWSER:
7276
/**
7377
* Browser doesn't support streaming requests as of March 2020.
74-
* Here we don't supply invalidFunction. Each service client needs to support eventstream request
75-
* in browsers has to implement a customization providing its own eventStreamSignerProvider
76-
* TODO: update this when WebSocket event stream support lands
78+
* Each service client needs to support eventstream request in browser individually.
79+
* Services like TranscribeStreaming support it via WebSocket.
7780
*/
78-
return MapUtils.of("eventStreamSignerProvider", writer -> {
81+
return MapUtils.of("eventStreamPayloadHandlerProvider", writer -> {
7982
writer.addDependency(TypeScriptDependency.INVALID_DEPENDENCY);
8083
writer.addImport("invalidFunction", "invalidFunction",
8184
TypeScriptDependency.INVALID_DEPENDENCY.packageName);
82-
writer.openBlock("eventStreamSignerProvider: () => ({", "}),", () -> {
83-
writer.write("sign: invalidFunction(\"event stream request is not supported in browser.\"),");
85+
writer.openBlock("eventStreamPayloadHandlerProvider: () => ({", "}),", () -> {
86+
writer.write("handle: invalidFunction(\"event stream request is not supported in browser.\"),");
8487
});
8588
});
8689
case REACT_NATIVE:
@@ -89,12 +92,12 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
8992
* Here we don't supply invalidFunction. Each service client needs to support eventstream request
9093
* in RN has to implement a customization providing its own eventStreamSignerProvider
9194
*/
92-
return MapUtils.of("eventStreamSignerProvider", writer -> {
95+
return MapUtils.of("eventStreamPayloadHandlerProvider", writer -> {
9396
writer.addDependency(TypeScriptDependency.INVALID_DEPENDENCY);
9497
writer.addImport("invalidFunction", "invalidFunction",
9598
TypeScriptDependency.INVALID_DEPENDENCY.packageName);
96-
writer.openBlock("eventStreamSignerProvider: () => ({", "}),", () -> {
97-
writer.write("sign: invalidFunction(\"event stream request is not supported in ReactNative.\"),");
99+
writer.openBlock("eventStreamPayloadHandlerProvider: () => ({", "}),", () -> {
100+
writer.write("handle: invalidFunction(\"event stream request is not supported in ReactNative.\"),");
98101
});
99102
});
100103
default:

codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsDependency.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@ public enum AwsDependency implements SymbolDependencyContainer {
5656
XML_PARSER(NORMAL_DEPENDENCY, "fast-xml-parser", "^3.16.0"),
5757
UUID_GENERATOR(NORMAL_DEPENDENCY, "uuid", "^7.0.0"),
5858
UUID_GENERATOR_TYPES(DEV_DEPENDENCY, "@types/uuid", "^7.0.0"),
59-
MIDDLEWARE_EVENTSTREAM_SIGNING(NORMAL_DEPENDENCY, "@aws-sdk/middleware-eventstream-signing", "^1.0.0-beta.0"),
60-
AWS_SDK_EVENTSTREAM_SIGNER_NODE(NORMAL_DEPENDENCY, "@aws-sdk/eventstream-signer-node", "^1.0.0-beta.0");
59+
MIDDLEWARE_EVENTSTREAM(NORMAL_DEPENDENCY, "@aws-sdk/middleware-eventstream", "^1.0.0-beta.0"),
60+
AWS_SDK_EVENTSTREAM_HANDLER_NODE(NORMAL_DEPENDENCY, "@aws-sdk/eventstream-handler-node", "^1.0.0-beta.0"),
61+
TRANSCRIBESTREAMING_MIDDLEWARE(NORMAL_DEPENDENCY, "@aws-sdk/eventstream-handler", "^1.0.0-beta.0");
6162

6263
public final String packageName;
6364
public final String version;

codegen/smithy-aws-typescript-codegen/src/main/resources/META-INF/services/software.amazon.smithy.typescript.codegen.integration.TypeScriptIntegration

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ software.amazon.smithy.aws.typescript.codegen.AddMd5HashDependency
88
software.amazon.smithy.aws.typescript.codegen.AddStreamHasherDependency
99
software.amazon.smithy.aws.typescript.codegen.AddBodyChecksumGeneratorDependency
1010
software.amazon.smithy.aws.typescript.codegen.AddS3Config
11-
software.amazon.smithy.aws.typescript.codegen.AddEventStreamSigningDependency
11+
software.amazon.smithy.aws.typescript.codegen.AddEventStreamHandlingDependency
1212
software.amazon.smithy.aws.typescript.codegen.AddHttp2Dependency

0 commit comments

Comments
 (0)