10
10
use SwaggerBake \Lib \OpenApi \Operation ;
11
11
use SwaggerBake \Lib \OpenApi \Response ;
12
12
use SwaggerBake \Lib \OpenApi \Schema ;
13
+ use SwaggerBake \Lib \OpenApi \Xml ;
13
14
14
15
/**
15
16
* Class OperationResponse
@@ -116,22 +117,20 @@ private function assignDocBlockExceptions() : void
116
117
117
118
$ throws = $ this ->doc ->getTagsByName ('throws ' );
118
119
119
- $ mimeTypes = $ this ->config ->getResponseContentTypes ();
120
- $ mimeType = reset ($ mimeTypes );
121
-
122
120
foreach ($ throws as $ throw ) {
123
121
$ exception = new ExceptionHandler ($ throw );
124
122
125
- $ this ->operation ->pushResponse (
126
- (new Response ())
127
- ->setCode ($ exception ->getCode ())
128
- ->setDescription ($ exception ->getMessage ())
129
- ->pushContent (
130
- (new Content ())
131
- ->setMimeType ($ mimeType )
132
- ->setSchema ('#/components/schemas/ ' . $ this ->config ->getExceptionSchema ())
133
- )
134
- );
123
+ $ response = (new Response ())->setCode ($ exception ->getCode ())->setDescription ($ exception ->getMessage ());
124
+
125
+ foreach ($ this ->config ->getResponseContentTypes () as $ mimeType ) {
126
+ $ response ->pushContent (
127
+ (new Content ())
128
+ ->setMimeType ($ mimeType )
129
+ ->setSchema ('#/components/schemas/ ' . $ this ->config ->getExceptionSchema ())
130
+ );
131
+ }
132
+
133
+ $ this ->operation ->pushResponse ($ response );
135
134
}
136
135
}
137
136
@@ -153,13 +152,20 @@ private function assignSchema() : void
153
152
return ;
154
153
}
155
154
155
+ $ schema = clone $ this ->schema ;
156
+
156
157
if (in_array (strtolower ($ this ->route ->getAction ()),['index ' ])) {
157
158
$ response = (new Response ())->setCode ('200 ' );
158
159
159
160
foreach ($ this ->config ->getResponseContentTypes () as $ mimeType ) {
161
+
162
+ if ($ mimeType == 'application/xml ' ) {
163
+ $ schema ->setXml ((new Xml ())->setName ('response ' ));
164
+ }
165
+
160
166
$ response ->pushContent (
161
167
(new Content ())
162
- ->setSchema ($ this -> schema )
168
+ ->setSchema ($ schema )
163
169
->setMimeType ($ mimeType )
164
170
);
165
171
}
@@ -171,9 +177,14 @@ private function assignSchema() : void
171
177
$ response = (new Response ())->setCode ('200 ' );
172
178
173
179
foreach ($ this ->config ->getResponseContentTypes () as $ mimeType ) {
180
+
181
+ if ($ mimeType == 'application/xml ' ) {
182
+ $ schema ->setXml ((new Xml ())->setName ('response ' ));
183
+ }
184
+
174
185
$ response ->pushContent (
175
186
(new Content ())
176
- ->setSchema ($ this -> schema )
187
+ ->setSchema ($ schema )
177
188
->setMimeType ($ mimeType )
178
189
);
179
190
}
@@ -205,17 +216,22 @@ private function assignDefaultResponses() : void
205
216
return ;
206
217
}
207
218
208
- $ types = $ this -> config -> getResponseContentTypes ( );
219
+ $ response = ( new Response ())-> setCode ( ' 200 ' );
209
220
210
- $ this ->operation ->pushResponse (
211
- (new Response ())
212
- ->setCode ('200 ' )
213
- ->pushContent (
214
- (new Content ())
215
- ->setMimeType (reset ($ types ))
216
- ->setSchema (new Schema ())
217
- )
218
- );
221
+ foreach ($ this ->config ->getResponseContentTypes () as $ mimeType ) {
222
+
223
+ $ schema = (new Schema ())->setDescription ('' );
224
+
225
+ if ($ mimeType == 'application/xml ' ) {
226
+ $ schema ->setXml ((new Xml ())->setName ('response ' ));
227
+ }
228
+
229
+ $ response ->pushContent (
230
+ (new Content ())->setMimeType ($ mimeType )->setSchema ($ schema )
231
+ );
232
+ }
233
+
234
+ $ this ->operation ->pushResponse ($ response );
219
235
220
236
return ;
221
237
}
0 commit comments