Skip to content

Commit 2cc3e10

Browse files
Complete interceptor
1 parent 0afe6be commit 2cc3e10

File tree

2 files changed

+923
-15
lines changed

2 files changed

+923
-15
lines changed

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

Lines changed: 211 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package dbesdkmiddleware
22

33
import (
44
"context"
5-
"fmt"
65

76
"github.com/aws/aws-database-encryption-sdk-dynamodb/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes"
87
"github.com/aws/aws-database-encryption-sdk-dynamodb/awscryptographydbencryptionsdkdynamodbtransformssmithygenerated"
@@ -45,21 +44,24 @@ func (m DBEsdkMiddleware) createRequestInterceptor() middleware.InitializeMiddle
4544
) (
4645
out middleware.InitializeOutput, metadata middleware.Metadata, err error,
4746
) {
48-
ctx = m.handleRequestInterception(ctx, in.Parameters)
47+
ctx, err = m.handleRequestInterception(ctx, in.Parameters)
48+
if err != nil {
49+
return middleware.InitializeOutput{}, middleware.Metadata{}, err
50+
}
4951
return next.HandleInitialize(ctx, in)
5052
})
5153
}
5254

5355
// handleRequestInterception handles the interception logic before the DynamoDB operation
54-
func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, params interface{}) context.Context {
55-
switch v := params.(type) {
56+
func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, request interface{}) (context.Context, error) {
57+
switch v := request.(type) {
5658
case *dynamodb.PutItemInput:
5759
ctx = middleware.WithStackValue(ctx, "originalInput", *deepCopyPutItemInput(v))
5860
transformedRequest, err := m.client.PutItemInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemInputTransformInput{
5961
SdkInput: *v,
6062
})
6163
if err != nil {
62-
fmt.Println(err)
64+
return nil, err
6365
}
6466
*v = transformedRequest.TransformedInput
6567
case *dynamodb.GetItemInput:
@@ -68,13 +70,110 @@ func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, params
6870
SdkInput: *v,
6971
})
7072
if err != nil {
71-
fmt.Println(err)
73+
return nil, err
74+
}
75+
*v = transformedRequest.TransformedInput
76+
case *dynamodb.BatchGetItemInput:
77+
ctx = middleware.WithStackValue(ctx, "originalInput", *deepCopyBatchGetItemInput(v))
78+
transformedRequest, err := m.client.BatchGetItemInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemInputTransformInput{
79+
SdkInput: *v,
80+
})
81+
if err != nil {
82+
return nil, err
83+
}
84+
*v = transformedRequest.TransformedInput
85+
case *dynamodb.BatchWriteItemInput:
86+
ctx = middleware.WithStackValue(ctx, "originalInput", *deepCopyBatchWriteItemInput(v))
87+
transformedRequest, err := m.client.BatchWriteItemInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemInputTransformInput{
88+
SdkInput: *v,
89+
})
90+
if err != nil {
91+
return nil, err
92+
}
93+
*v = transformedRequest.TransformedInput
94+
case *dynamodb.BatchExecuteStatementInput:
95+
ctx = middleware.WithStackValue(ctx, "originalInput", *deepCopyBatchExecuteStatementInput(v))
96+
transformedRequest, err := m.client.BatchExecuteStatementInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementInputTransformInput{
97+
SdkInput: *v,
98+
})
99+
if err != nil {
100+
return nil, err
101+
}
102+
*v = transformedRequest.TransformedInput
103+
case *dynamodb.DeleteItemInput:
104+
ctx = middleware.WithStackValue(ctx, "originalInput", *deepCopyDeleteItemInput(v))
105+
transformedRequest, err := m.client.DeleteItemInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemInputTransformInput{
106+
SdkInput: *v,
107+
})
108+
if err != nil {
109+
return nil, err
110+
}
111+
*v = transformedRequest.TransformedInput
112+
case *dynamodb.ExecuteStatementInput:
113+
ctx = middleware.WithStackValue(ctx, "originalInput", *deepCopyExecuteStatementInput(v))
114+
transformedRequest, err := m.client.ExecuteStatementInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementInputTransformInput{
115+
SdkInput: *v,
116+
})
117+
if err != nil {
118+
return nil, err
119+
}
120+
*v = transformedRequest.TransformedInput
121+
case *dynamodb.ExecuteTransactionInput:
122+
ctx = middleware.WithStackValue(ctx, "originalInput", *deepCopyExecuteTransactionInput(v))
123+
transformedRequest, err := m.client.ExecuteTransactionInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionInputTransformInput{
124+
SdkInput: *v,
125+
})
126+
if err != nil {
127+
return nil, err
128+
}
129+
*v = transformedRequest.TransformedInput
130+
case *dynamodb.QueryInput:
131+
ctx = middleware.WithStackValue(ctx, "originalInput", *deepCopyQueryInput(v))
132+
transformedRequest, err := m.client.QueryInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryInputTransformInput{
133+
SdkInput: *v,
134+
})
135+
if err != nil {
136+
return nil, err
137+
}
138+
*v = transformedRequest.TransformedInput
139+
case *dynamodb.ScanInput:
140+
ctx = middleware.WithStackValue(ctx, "originalInput", *deepCopyScanInput(v))
141+
transformedRequest, err := m.client.ScanInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanInputTransformInput{
142+
SdkInput: *v,
143+
})
144+
if err != nil {
145+
return nil, err
146+
}
147+
*v = transformedRequest.TransformedInput
148+
case *dynamodb.TransactGetItemsInput:
149+
ctx = middleware.WithStackValue(ctx, "originalInput", *deepCopyTransactGetItemsInput(v))
150+
transformedRequest, err := m.client.TransactGetItemsInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsInputTransformInput{
151+
SdkInput: *v,
152+
})
153+
if err != nil {
154+
return nil, err
155+
}
156+
*v = transformedRequest.TransformedInput
157+
case *dynamodb.TransactWriteItemsInput:
158+
ctx = middleware.WithStackValue(ctx, "originalInput", *deepCopyTransactWriteItemsInput(v))
159+
transformedRequest, err := m.client.TransactWriteItemsInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsInputTransformInput{
160+
SdkInput: *v,
161+
})
162+
if err != nil {
163+
return nil, err
164+
}
165+
*v = transformedRequest.TransformedInput
166+
case *dynamodb.UpdateItemInput:
167+
ctx = middleware.WithStackValue(ctx, "originalInput", *deepCopyUpdateItemInput(v))
168+
transformedRequest, err := m.client.UpdateItemInputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemInputTransformInput{
169+
SdkInput: *v,
170+
})
171+
if err != nil {
172+
return nil, err
72173
}
73174
*v = transformedRequest.TransformedInput
74-
// case *dynamodb.BatchExecuteStatementInput:
75-
// m.originalRequests["BatchExecuteStatementInput"] = *DeepCopyBatchExecuteStatementInput(v)
76175
}
77-
return ctx
176+
return ctx, nil
78177
}
79178

80179
// createResponseInterceptor creates and returns the middleware interceptor for responses
@@ -96,15 +195,15 @@ func (m DBEsdkMiddleware) createResponseInterceptor() middleware.FinalizeMiddlew
96195
}
97196

98197
// handleResponseInterception handles the interception logic after the DynamoDB operation
99-
func (m DBEsdkMiddleware) handleResponseInterception(ctx context.Context, response interface{}) {
198+
func (m DBEsdkMiddleware) handleResponseInterception(ctx context.Context, response interface{}) err {
100199
switch v := response.(type) {
101200
case *dynamodb.PutItemOutput:
102201
transformedRequest, err := m.client.PutItemOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemOutputTransformInput{
103202
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.PutItemInput),
104203
SdkOutput: *v,
105204
})
106205
if err != nil {
107-
fmt.Println(err)
206+
return err
108207
}
109208
*v = transformedRequest.TransformedOutput
110209
case *dynamodb.GetItemOutput:
@@ -113,8 +212,108 @@ func (m DBEsdkMiddleware) handleResponseInterception(ctx context.Context, respon
113212
SdkOutput: *v,
114213
})
115214
if err != nil {
116-
fmt.Println(err)
215+
return err
216+
}
217+
*v = transformedRequest.TransformedOutput
218+
case *dynamodb.BatchGetItemOutput:
219+
transformedRequest, err := m.client.BatchGetItemOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemOutputTransformInput{
220+
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.BatchGetItemInput),
221+
SdkOutput: *v,
222+
})
223+
if err != nil {
224+
return err
225+
}
226+
*v = transformedRequest.TransformedOutput
227+
case *dynamodb.BatchWriteItemOutput:
228+
transformedRequest, err := m.client.BatchWriteItemOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemOutputTransformInput{
229+
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.BatchWriteItemInput),
230+
SdkOutput: *v,
231+
})
232+
if err != nil {
233+
return err
234+
}
235+
*v = transformedRequest.TransformedOutput
236+
case *dynamodb.BatchExecuteStatementOutput:
237+
transformedRequest, err := m.client.BatchExecuteStatementOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementOutputTransformInput{
238+
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.BatchExecuteStatementInput),
239+
SdkOutput: *v,
240+
})
241+
if err != nil {
242+
return err
243+
}
244+
*v = transformedRequest.TransformedOutput
245+
case *dynamodb.DeleteItemOutput:
246+
transformedRequest, err := m.client.DeleteItemOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemOutputTransformInput{
247+
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.DeleteItemInput),
248+
SdkOutput: *v,
249+
})
250+
if err != nil {
251+
return err
252+
}
253+
*v = transformedRequest.TransformedOutput
254+
case *dynamodb.ExecuteStatementOutput:
255+
transformedRequest, err := m.client.ExecuteStatementOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementOutputTransformInput{
256+
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.ExecuteStatementInput),
257+
SdkOutput: *v,
258+
})
259+
if err != nil {
260+
return err
261+
}
262+
*v = transformedRequest.TransformedOutput
263+
case *dynamodb.ExecuteTransactionOutput:
264+
transformedRequest, err := m.client.ExecuteTransactionOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionOutputTransformInput{
265+
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.ExecuteTransactionInput),
266+
SdkOutput: *v,
267+
})
268+
if err != nil {
269+
return err
270+
}
271+
*v = transformedRequest.TransformedOutput
272+
case *dynamodb.QueryOutput:
273+
transformedRequest, err := m.client.QueryOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryOutputTransformInput{
274+
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.QueryInput),
275+
SdkOutput: *v,
276+
})
277+
if err != nil {
278+
return err
279+
}
280+
*v = transformedRequest.TransformedOutput
281+
case *dynamodb.ScanOutput:
282+
transformedRequest, err := m.client.ScanOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanOutputTransformInput{
283+
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.ScanInput),
284+
SdkOutput: *v,
285+
})
286+
if err != nil {
287+
return err
288+
}
289+
*v = transformedRequest.TransformedOutput
290+
case *dynamodb.TransactGetItemsOutput:
291+
transformedRequest, err := m.client.TransactGetItemsOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsOutputTransformInput{
292+
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.TransactGetItemsInput),
293+
SdkOutput: *v,
294+
})
295+
if err != nil {
296+
return err
297+
}
298+
*v = transformedRequest.TransformedOutput
299+
case *dynamodb.TransactWriteItemsOutput:
300+
transformedRequest, err := m.client.TransactWriteItemsOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsOutputTransformInput{
301+
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.TransactWriteItemsInput),
302+
SdkOutput: *v,
303+
})
304+
if err != nil {
305+
return err
306+
}
307+
*v = transformedRequest.TransformedOutput
308+
case *dynamodb.UpdateItemOutput:
309+
transformedRequest, err := m.client.UpdateItemOutputTransform(context.TODO(), awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemOutputTransformInput{
310+
OriginalInput: middleware.GetStackValue(ctx, "originalInput").(dynamodb.UpdateItemInput),
311+
SdkOutput: *v,
312+
})
313+
if err != nil {
314+
return err
117315
}
118316
*v = transformedRequest.TransformedOutput
119317
}
318+
return nil
120319
}

0 commit comments

Comments
 (0)