-
Notifications
You must be signed in to change notification settings - Fork 222
/
Copy patherrors.smithy
131 lines (118 loc) · 3.29 KB
/
errors.smithy
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// This file defines test cases that test error serialization.
$version: "2.0"
namespace aws.protocoltests.restxml
use aws.protocols#restXml
use smithy.test#httpRequestTests
use smithy.test#httpResponseTests
/// This operation has three possible return values:
///
/// 1. A successful response in the form of GreetingWithErrorsOutput
/// 2. An InvalidGreeting error.
/// 3. A BadRequest error.
///
/// Implementations must be able to successfully take a response and
/// properly (de)serialize successful and error responses based on the
/// the presence of the
@idempotent
@http(uri: "/GreetingWithErrors", method: "PUT")
operation GreetingWithErrors {
output: GreetingWithErrorsOutput,
errors: [InvalidGreeting, ComplexError]
}
apply GreetingWithErrors @httpResponseTests([
{
id: "GreetingWithErrors",
documentation: "Ensures that operations with errors successfully know how to deserialize the successful response",
protocol: restXml,
code: 200,
body: "",
headers: {
"X-Greeting": "Hello"
},
params: {
greeting: "Hello"
}
}
])
structure GreetingWithErrorsOutput {
@httpHeader("X-Greeting")
greeting: String,
}
/// This error is thrown when an invalid greeting value is provided.
@error("client")
@httpError(400)
structure InvalidGreeting {
Message: String,
}
apply InvalidGreeting @httpResponseTests([
{
id: "InvalidGreetingError",
documentation: "Parses simple XML errors",
protocol: restXml,
params: {
Message: "Hi"
},
code: 400,
headers: {
"Content-Type": "application/xml"
},
body: """
<ErrorResponse>
<Error>
<Type>Sender</Type>
<Code>InvalidGreeting</Code>
<Message>Hi</Message>
<AnotherSetting>setting</AnotherSetting>
</Error>
<RequestId>foo-id</RequestId>
</ErrorResponse>
""",
bodyMediaType: "application/xml",
}
])
/// This error is thrown when a request is invalid.
@error("client")
@httpError(403)
structure ComplexError {
// Errors support HTTP bindings!
@httpHeader("X-Header")
Header: String,
TopLevel: String,
Nested: ComplexNestedErrorData,
}
apply ComplexError @httpResponseTests([
{
id: "ComplexError",
protocol: restXml,
params: {
Header: "Header",
TopLevel: "Top level",
Nested: {
Foo: "bar"
}
},
code: 403,
headers: {
"Content-Type": "application/xml",
"X-Header": "Header",
},
body: """
<ErrorResponse>
<Error>
<Type>Sender</Type>
<Code>ComplexError</Code>
<Message>Hi</Message>
<TopLevel>Top level</TopLevel>
<Nested>
<Foo>bar</Foo>
</Nested>
</Error>
<RequestId>foo-id</RequestId>
</ErrorResponse>
""",
bodyMediaType: "application/xml",
}
])
structure ComplexNestedErrorData {
Foo: String,
}