MCPcopy Create free account
hub / github.com/aws/smithy-go / ExampleResponseError

Function ExampleResponseError

transport/http/response_error_example_test.go:13–116  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

11)
12
13func ExampleResponseError() {
14 stack := middleware.NewStack("my cool stack", NewStackRequest)
15
16 stack.Deserialize.Add(middleware.DeserializeMiddlewareFunc("wrap http response error",
17 func(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
18 out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
19 ) {
20 out, metadata, err = next.HandleDeserialize(ctx, in)
21 if err == nil {
22 // Nothing to do when there is no error.
23 return out, metadata, err
24 }
25
26 rawResp, ok := out.RawResponse.(*Response)
27 if !ok {
28 // No raw response to wrap with.
29 return out, metadata, err
30 }
31
32 // Wrap the returned error with the response error containing the
33 // returned response.
34 err = &ResponseError{
35 Response: rawResp,
36 Err: err,
37 }
38
39 return out, metadata, err
40 }),
41 middleware.After,
42 )
43
44 stack.Deserialize.Add(middleware.DeserializeMiddlewareFunc("deserialize error",
45 func(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
46 out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
47 ) {
48 out, metadata, err = next.HandleDeserialize(ctx, in)
49 if err != nil {
50 return middleware.DeserializeOutput{}, metadata, err
51 }
52
53 rawResp := out.RawResponse.(*Response)
54 if rawResp.StatusCode == 200 {
55 return out, metadata, nil
56 }
57
58 // Deserialize the response API error values.
59 err = &smithy.GenericAPIError{
60 Code: rawResp.Header.Get("Error-Code"),
61 Message: rawResp.Header.Get("Error-Message"),
62 }
63
64 return out, metadata, err
65 }),
66 middleware.After,
67 )
68
69 // Mock example handler taking the request input and returning a response
70 mockHandler := middleware.HandlerFunc(func(ctx context.Context, in interface{}) (

Callers

nothing calls this directly

Calls 12

ErrorCodeMethod · 0.95
ErrorMessageMethod · 0.95
HTTPStatusCodeMethod · 0.95
HTTPResponseMethod · 0.95
NewStackFunction · 0.92
HandlerFuncFuncType · 0.92
DecorateHandlerFunction · 0.92
AddMethod · 0.65
HandleDeserializeMethod · 0.65
GetMethod · 0.65
HandleMethod · 0.65

Tested by

no test coverage detected