-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmiddleware_deserialize.go
More file actions
34 lines (25 loc) · 907 Bytes
/
middleware_deserialize.go
File metadata and controls
34 lines (25 loc) · 907 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package awsmocker
import (
"context"
"errors"
"github.com/aws/smithy-go/middleware"
)
var _ middleware.DeserializeMiddleware = (*mockerMiddleware)(nil)
func (m *mockerMiddleware) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (middleware.DeserializeOutput, middleware.Metadata, error) {
out, meta, err := next.HandleDeserialize(ctx, in)
if resp, ok := out.RawResponse.(*mwResponse); ok {
if resp.Header.Get(mwHeaderUseDB) == "true" {
if reqId, ok := middleware.GetStackValue(ctx, mwCtxKeyReqId{}).(uint64); ok {
res, _ := m.mocker.requestLog.LoadAndDelete(reqId)
entry := res.(mwDBEntry)
return middleware.DeserializeOutput{
RawResponse: resp,
Result: entry.Response,
}, meta, entry.Error
} else {
return out, meta, errors.New("invalid mocker result?")
}
}
}
return out, meta, err
}