Skip to content

Commit d854a66

Browse files
refactor(Go): remove magic string and comment on cxt propagation (#1909)
1 parent 33144be commit d854a66

File tree

1 file changed

+57
-26
lines changed
  • DynamoDbEncryption/runtimes/go/ImplementationFromDafny-go/dbesdkmiddleware

1 file changed

+57
-26
lines changed

DynamoDbEncryption/runtimes/go/ImplementationFromDafny-go/dbesdkmiddleware/middleware.go

Lines changed: 57 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ import (
1010
"github.com/aws/smithy-go/middleware"
1111
)
1212

13+
const (
14+
// ContextKeyOriginalInput is the key used to store the original DynamoDB input in the context
15+
ContextKeyOriginalInput = "originalInput"
16+
)
17+
1318
type DBEsdkMiddleware struct {
1419
client *awscryptographydbencryptionsdkdynamodbtransformssmithygenerated.Client
1520
}
@@ -56,7 +61,8 @@ func (m DBEsdkMiddleware) createRequestInterceptor() middleware.InitializeMiddle
5661
func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, request interface{}) (context.Context, error) {
5762
switch v := request.(type) {
5863
case *dynamodb.PutItemInput:
59-
ctx = middleware.WithStackValue(ctx, "originalInput", *v)
64+
ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v)
65+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
6066
transformedRequest, err := m.client.PutItemInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemInputTransformInput{
6167
SdkInput: *v,
6268
})
@@ -65,7 +71,8 @@ func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, request
6571
}
6672
*v = transformedRequest.TransformedInput
6773
case *dynamodb.GetItemInput:
68-
ctx = middleware.WithStackValue(ctx, "originalInput", *v)
74+
ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v)
75+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
6976
transformedRequest, err := m.client.GetItemInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemInputTransformInput{
7077
SdkInput: *v,
7178
})
@@ -74,7 +81,8 @@ func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, request
7481
}
7582
*v = transformedRequest.TransformedInput
7683
case *dynamodb.BatchGetItemInput:
77-
ctx = middleware.WithStackValue(ctx, "originalInput", *v)
84+
ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v)
85+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
7886
transformedRequest, err := m.client.BatchGetItemInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemInputTransformInput{
7987
SdkInput: *v,
8088
})
@@ -83,7 +91,8 @@ func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, request
8391
}
8492
*v = transformedRequest.TransformedInput
8593
case *dynamodb.BatchWriteItemInput:
86-
ctx = middleware.WithStackValue(ctx, "originalInput", *v)
94+
ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v)
95+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
8796
transformedRequest, err := m.client.BatchWriteItemInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemInputTransformInput{
8897
SdkInput: *v,
8998
})
@@ -92,7 +101,8 @@ func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, request
92101
}
93102
*v = transformedRequest.TransformedInput
94103
case *dynamodb.BatchExecuteStatementInput:
95-
ctx = middleware.WithStackValue(ctx, "originalInput", *v)
104+
ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v)
105+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
96106
transformedRequest, err := m.client.BatchExecuteStatementInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementInputTransformInput{
97107
SdkInput: *v,
98108
})
@@ -101,7 +111,8 @@ func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, request
101111
}
102112
*v = transformedRequest.TransformedInput
103113
case *dynamodb.DeleteItemInput:
104-
ctx = middleware.WithStackValue(ctx, "originalInput", *v)
114+
ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v)
115+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
105116
transformedRequest, err := m.client.DeleteItemInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemInputTransformInput{
106117
SdkInput: *v,
107118
})
@@ -110,7 +121,8 @@ func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, request
110121
}
111122
*v = transformedRequest.TransformedInput
112123
case *dynamodb.ExecuteStatementInput:
113-
ctx = middleware.WithStackValue(ctx, "originalInput", *v)
124+
ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v)
125+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
114126
transformedRequest, err := m.client.ExecuteStatementInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementInputTransformInput{
115127
SdkInput: *v,
116128
})
@@ -119,7 +131,8 @@ func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, request
119131
}
120132
*v = transformedRequest.TransformedInput
121133
case *dynamodb.ExecuteTransactionInput:
122-
ctx = middleware.WithStackValue(ctx, "originalInput", *v)
134+
ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v)
135+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
123136
transformedRequest, err := m.client.ExecuteTransactionInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionInputTransformInput{
124137
SdkInput: *v,
125138
})
@@ -128,7 +141,8 @@ func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, request
128141
}
129142
*v = transformedRequest.TransformedInput
130143
case *dynamodb.QueryInput:
131-
ctx = middleware.WithStackValue(ctx, "originalInput", *v)
144+
ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v)
145+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
132146
transformedRequest, err := m.client.QueryInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryInputTransformInput{
133147
SdkInput: *v,
134148
})
@@ -137,7 +151,8 @@ func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, request
137151
}
138152
*v = transformedRequest.TransformedInput
139153
case *dynamodb.ScanInput:
140-
ctx = middleware.WithStackValue(ctx, "originalInput", *v)
154+
ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v)
155+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
141156
transformedRequest, err := m.client.ScanInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanInputTransformInput{
142157
SdkInput: *v,
143158
})
@@ -146,7 +161,8 @@ func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, request
146161
}
147162
*v = transformedRequest.TransformedInput
148163
case *dynamodb.TransactGetItemsInput:
149-
ctx = middleware.WithStackValue(ctx, "originalInput", *v)
164+
ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v)
165+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
150166
transformedRequest, err := m.client.TransactGetItemsInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsInputTransformInput{
151167
SdkInput: *v,
152168
})
@@ -155,7 +171,8 @@ func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, request
155171
}
156172
*v = transformedRequest.TransformedInput
157173
case *dynamodb.TransactWriteItemsInput:
158-
ctx = middleware.WithStackValue(ctx, "originalInput", *v)
174+
ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v)
175+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
159176
transformedRequest, err := m.client.TransactWriteItemsInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsInputTransformInput{
160177
SdkInput: *v,
161178
})
@@ -164,7 +181,8 @@ func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, request
164181
}
165182
*v = transformedRequest.TransformedInput
166183
case *dynamodb.UpdateItemInput:
167-
ctx = middleware.WithStackValue(ctx, "originalInput", *v)
184+
ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v)
185+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
168186
transformedRequest, err := m.client.UpdateItemInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemInputTransformInput{
169187
SdkInput: *v,
170188
})
@@ -198,116 +216,129 @@ func (m DBEsdkMiddleware) createResponseInterceptor() middleware.FinalizeMiddlew
198216
func (m DBEsdkMiddleware) handleResponseInterception(ctx context.Context, response interface{}) error {
199217
switch v := response.(type) {
200218
case *dynamodb.PutItemOutput:
219+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
201220
transformedRequest, err := m.client.PutItemOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemOutputTransformInput{
202-
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.PutItemInput),
221+
OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.PutItemInput),
203222
SdkOutput: *v,
204223
})
205224
if err != nil {
206225
return err
207226
}
208227
*v = transformedRequest.TransformedOutput
209228
case *dynamodb.GetItemOutput:
229+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
210230
transformedRequest, err := m.client.GetItemOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemOutputTransformInput{
211-
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.GetItemInput),
231+
OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.GetItemInput),
212232
SdkOutput: *v,
213233
})
214234
if err != nil {
215235
return err
216236
}
217237
*v = transformedRequest.TransformedOutput
218238
case *dynamodb.BatchGetItemOutput:
239+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
219240
transformedRequest, err := m.client.BatchGetItemOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemOutputTransformInput{
220-
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.BatchGetItemInput),
241+
OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.BatchGetItemInput),
221242
SdkOutput: *v,
222243
})
223244
if err != nil {
224245
return err
225246
}
226247
*v = transformedRequest.TransformedOutput
227248
case *dynamodb.BatchWriteItemOutput:
249+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
228250
transformedRequest, err := m.client.BatchWriteItemOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemOutputTransformInput{
229-
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.BatchWriteItemInput),
251+
OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.BatchWriteItemInput),
230252
SdkOutput: *v,
231253
})
232254
if err != nil {
233255
return err
234256
}
235257
*v = transformedRequest.TransformedOutput
236258
case *dynamodb.BatchExecuteStatementOutput:
259+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
237260
transformedRequest, err := m.client.BatchExecuteStatementOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementOutputTransformInput{
238-
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.BatchExecuteStatementInput),
261+
OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.BatchExecuteStatementInput),
239262
SdkOutput: *v,
240263
})
241264
if err != nil {
242265
return err
243266
}
244267
*v = transformedRequest.TransformedOutput
245268
case *dynamodb.DeleteItemOutput:
269+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
246270
transformedRequest, err := m.client.DeleteItemOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemOutputTransformInput{
247-
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.DeleteItemInput),
271+
OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.DeleteItemInput),
248272
SdkOutput: *v,
249273
})
250274
if err != nil {
251275
return err
252276
}
253277
*v = transformedRequest.TransformedOutput
254278
case *dynamodb.ExecuteStatementOutput:
279+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
255280
transformedRequest, err := m.client.ExecuteStatementOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementOutputTransformInput{
256-
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.ExecuteStatementInput),
281+
OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.ExecuteStatementInput),
257282
SdkOutput: *v,
258283
})
259284
if err != nil {
260285
return err
261286
}
262287
*v = transformedRequest.TransformedOutput
263288
case *dynamodb.ExecuteTransactionOutput:
289+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
264290
transformedRequest, err := m.client.ExecuteTransactionOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionOutputTransformInput{
265-
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.ExecuteTransactionInput),
291+
OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.ExecuteTransactionInput),
266292
SdkOutput: *v,
267293
})
268294
if err != nil {
269295
return err
270296
}
271297
*v = transformedRequest.TransformedOutput
272298
case *dynamodb.QueryOutput:
299+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
273300
transformedRequest, err := m.client.QueryOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryOutputTransformInput{
274-
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.QueryInput),
301+
OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.QueryInput),
275302
SdkOutput: *v,
276303
})
277304
if err != nil {
278305
return err
279306
}
280307
*v = transformedRequest.TransformedOutput
281308
case *dynamodb.ScanOutput:
309+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
282310
transformedRequest, err := m.client.ScanOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanOutputTransformInput{
283-
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.ScanInput),
311+
OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.ScanInput),
284312
SdkOutput: *v,
285313
})
286314
if err != nil {
287315
return err
288316
}
289317
*v = transformedRequest.TransformedOutput
290318
case *dynamodb.TransactGetItemsOutput:
319+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
291320
transformedRequest, err := m.client.TransactGetItemsOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsOutputTransformInput{
292-
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.TransactGetItemsInput),
321+
OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.TransactGetItemsInput),
293322
SdkOutput: *v,
294323
})
295324
if err != nil {
296325
return err
297326
}
298327
*v = transformedRequest.TransformedOutput
299328
case *dynamodb.TransactWriteItemsOutput:
329+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
300330
transformedRequest, err := m.client.TransactWriteItemsOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsOutputTransformInput{
301-
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.TransactWriteItemsInput),
331+
OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.TransactWriteItemsInput),
302332
SdkOutput: *v,
303333
})
304334
if err != nil {
305335
return err
306336
}
307337
*v = transformedRequest.TransformedOutput
308338
case *dynamodb.UpdateItemOutput:
339+
// Note: this context is not propagated downstream into dafny layer so it's left as context.TODO() https://issues.amazon.com/CrypTool-5403
309340
transformedRequest, err := m.client.UpdateItemOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemOutputTransformInput{
310-
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.UpdateItemInput),
341+
OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.UpdateItemInput),
311342
SdkOutput: *v,
312343
})
313344
if err != nil {

0 commit comments

Comments
 (0)