1
1
package software .amazon .smithy .aws .typescript .codegen ;
2
2
3
+ import static software .amazon .smithy .typescript .codegen .integration .RuntimeClientPlugin .Convention .HAS_CONFIG ;
4
+ import static software .amazon .smithy .typescript .codegen .integration .RuntimeClientPlugin .Convention .HAS_MIDDLEWARE ;
5
+
6
+
3
7
import java .util .Collections ;
4
8
import java .util .List ;
5
9
import java .util .Map ;
21
25
import software .amazon .smithy .utils .ListUtils ;
22
26
import software .amazon .smithy .utils .MapUtils ;
23
27
24
- public class AddEventStreamSigningDependency implements TypeScriptIntegration {
28
+ /**
29
+ * Adds runtime client plugins that handle the eventstream flow in request,
30
+ * including eventstream payload signing.
31
+ */
32
+ public class AddEventStreamHandlingDependency implements TypeScriptIntegration {
25
33
@ Override
26
34
public List <RuntimeClientPlugin > getClientPlugins () {
27
35
return ListUtils .of (
28
36
RuntimeClientPlugin .builder ()
29
- .withConventions (AwsDependency .MIDDLEWARE_EVENTSTREAM_SIGNING .dependency ,
30
- "EventStream" )
31
- .servicePredicate (AddEventStreamSigningDependency ::hasEventStreamInput )
37
+ .withConventions (AwsDependency .MIDDLEWARE_EVENTSTREAM .dependency ,
38
+ "EventStream" , HAS_CONFIG )
39
+ .servicePredicate (AddEventStreamHandlingDependency ::hasEventStreamInput )
40
+ .build (),
41
+ RuntimeClientPlugin .builder ()
42
+ .withConventions (AwsDependency .MIDDLEWARE_EVENTSTREAM .dependency ,
43
+ "EventStream" , HAS_MIDDLEWARE )
44
+ .operationPredicate ((m , s , o ) -> AddEventStreamHandlingDependency .hasEventStreamInput (m , s ))
32
45
.build ()
33
46
);
34
47
}
@@ -41,10 +54,10 @@ public void addConfigInterfaceFields(
41
54
TypeScriptWriter writer
42
55
) {
43
56
if (hasEventStreamInput (model , settings .getService (model ))) {
44
- writer .addImport ("EventStreamSignerProvider " , "__EventStreamSignerProvider " ,
57
+ writer .addImport ("EventStreamPayloadHandlerProvider " , "__EventStreamPayloadHandlerProvider " ,
45
58
TypeScriptDependency .AWS_SDK_TYPES .packageName );
46
- writer .writeDocs ("The function that provides necessary utilities for singing event stream" );
47
- writer .write ("eventStreamSignerProvider ?: __EventStreamSignerProvider ;\n " );
59
+ writer .writeDocs ("The function that provides necessary utilities for handling request event stream. " );
60
+ writer .write ("eventStreamPayloadHandlerProvider ?: __EventStreamPayloadHandlerProvider ;\n " );
48
61
}
49
62
}
50
63
@@ -62,25 +75,24 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
62
75
63
76
switch (target ) {
64
77
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 ," );
78
+ return MapUtils .of ("eventStreamPayloadHandlerProvider " , writer -> {
79
+ writer .addDependency (AwsDependency .AWS_SDK_EVENTSTREAM_HANDLER_NODE );
80
+ writer .addImport ("eventStreamPayloadHandlerProvider " , "eventStreamPayloadHandlerProvider " ,
81
+ AwsDependency .AWS_SDK_EVENTSTREAM_HANDLER_NODE .packageName );
82
+ writer .write ("eventStreamPayloadHandlerProvider ," );
70
83
});
71
84
case BROWSER :
72
85
/**
73
86
* 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
87
+ * Each service client needs to support eventstream request in browser individually.
88
+ * Services like TranscribeStreaming support it via WebSocket.
77
89
*/
78
- return MapUtils .of ("eventStreamSignerProvider " , writer -> {
90
+ return MapUtils .of ("eventStreamPayloadHandlerProvider " , writer -> {
79
91
writer .addDependency (TypeScriptDependency .INVALID_DEPENDENCY );
80
92
writer .addImport ("invalidFunction" , "invalidFunction" ,
81
93
TypeScriptDependency .INVALID_DEPENDENCY .packageName );
82
- writer .openBlock ("eventStreamSignerProvider : () => ({" , "})," , () -> {
83
- writer .write ("sign : invalidFunction(\" event stream request is not supported in browser.\" )," );
94
+ writer .openBlock ("eventStreamPayloadHandlerProvider : () => ({" , "})," , () -> {
95
+ writer .write ("handle : invalidFunction(\" event stream request is not supported in browser.\" )," );
84
96
});
85
97
});
86
98
case REACT_NATIVE :
@@ -89,12 +101,12 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
89
101
* Here we don't supply invalidFunction. Each service client needs to support eventstream request
90
102
* in RN has to implement a customization providing its own eventStreamSignerProvider
91
103
*/
92
- return MapUtils .of ("eventStreamSignerProvider " , writer -> {
104
+ return MapUtils .of ("eventStreamPayloadHandlerProvider " , writer -> {
93
105
writer .addDependency (TypeScriptDependency .INVALID_DEPENDENCY );
94
106
writer .addImport ("invalidFunction" , "invalidFunction" ,
95
107
TypeScriptDependency .INVALID_DEPENDENCY .packageName );
96
- writer .openBlock ("eventStreamSignerProvider : () => ({" , "})," , () -> {
97
- writer .write ("sign : invalidFunction(\" event stream request is not supported in ReactNative.\" )," );
108
+ writer .openBlock ("eventStreamPayloadHandlerProvider : () => ({" , "})," , () -> {
109
+ writer .write ("handle : invalidFunction(\" event stream request is not supported in ReactNative.\" )," );
98
110
});
99
111
});
100
112
default :
0 commit comments