Skip to content

Commit ba194ba

Browse files
plankswertwing328
authored andcommitted
Added support for string responses (#4057)
* Added support for string responses When a method/URL/response is defined to return string: - If no content types are define, default to 'text/plain' instead of 'application/json' - Add response handler, that returns the reponse string as-is if response content-type is 'text/plain' * Removed use of unused tag vendor tag - The tag was vendorExtensions.x-codegen-response.isPrimitiveType
1 parent 932dc5f commit ba194ba

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

modules/swagger-codegen/src/main/resources/cpprest/api-source.mustache

+23-2
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,17 @@ pplx::task<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/r
5353
utility::string_t responseHttpContentType;
5454

5555
// use JSON if possible
56-
if ( responseHttpContentTypes.size() == 0 || responseHttpContentTypes.find(U("application/json")) != responseHttpContentTypes.end() )
56+
if ( responseHttpContentTypes.size() == 0 )
57+
{
58+
{{#vendorExtensions.x-codegen-response.isString}}
59+
responseHttpContentType = U("text/plain");
60+
{{/vendorExtensions.x-codegen-response.isString}}
61+
{{^vendorExtensions.x-codegen-response.isString}}
62+
responseHttpContentType = U("application/json");
63+
{{/vendorExtensions.x-codegen-response.isString}}
64+
}
65+
// JSON
66+
else if ( responseHttpContentTypes.find(U("application/json")) != responseHttpContentTypes.end() )
5767
{
5868
responseHttpContentType = U("application/json");
5969
}
@@ -62,6 +72,13 @@ pplx::task<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/r
6272
{
6373
responseHttpContentType = U("multipart/form-data");
6474
}
75+
{{#vendorExtensions.x-codegen-response.isString}}
76+
// plain text
77+
else if( responseHttpContentTypes.find(U("text/plain")) != responseHttpContentTypes.end() )
78+
{
79+
responseHttpContentType = U("text/plain");
80+
}
81+
{{/vendorExtensions.x-codegen-response.isString}}
6582
{{#vendorExtensions.x-codegen-response-ishttpcontent}}
6683
else
6784
{
@@ -266,7 +283,11 @@ pplx::task<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/r
266283
{{/isMapContainer}}{{^isMapContainer}}{{#vendorExtensions.x-codegen-response.isPrimitiveType}}result = ModelBase::{{vendorExtensions.x-codegen-response.items.datatype}}FromJson(json);
267284
{{/vendorExtensions.x-codegen-response.isPrimitiveType}}{{^vendorExtensions.x-codegen-response.isPrimitiveType}}{{#vendorExtensions.x-codegen-response.isString}}result = ModelBase::stringFromJson(json);
268285
{{/vendorExtensions.x-codegen-response.isString}}{{^vendorExtensions.x-codegen-response.isString}}result->fromJson(json);{{/vendorExtensions.x-codegen-response.isString}}{{/vendorExtensions.x-codegen-response.isPrimitiveType}}{{/isMapContainer}}{{/isListContainer}}
269-
}
286+
}{{#vendorExtensions.x-codegen-response.isString}}
287+
else if(responseHttpContentType == U("text/plain"))
288+
{
289+
result = response;
290+
}{{/vendorExtensions.x-codegen-response.isString}}
270291
// else if(responseHttpContentType == U("multipart/form-data"))
271292
// {
272293
// TODO multipart response parsing

0 commit comments

Comments
 (0)