mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-12-19 01:57:05 +00:00
[cpp-restsdk] fix crashes and constness (#5123)
* []c++[cpprest]fix some constness and invalid access to null entities * update petstore sample
This commit is contained in:
@@ -35,7 +35,7 @@ public:
|
||||
{{#allParams}}
|
||||
{{^required}}boost::optional<{{/required}}{{#isFile}}std::shared_ptr<{{/isFile}}{{{dataType}}}{{#isFile}}>{{/isFile}}{{^required}}>{{/required}} {{paramName}}{{#hasMore}},{{/hasMore}}
|
||||
{{/allParams}}
|
||||
) = 0;
|
||||
) const = 0;
|
||||
{{/operation}}
|
||||
};{{/gmockApis}}
|
||||
|
||||
@@ -46,7 +46,7 @@ public:
|
||||
using Base = I{{classname}};
|
||||
{{/gmockApis}}
|
||||
|
||||
explicit {{classname}}( std::shared_ptr<ApiClient> apiClient );
|
||||
explicit {{classname}}( std::shared_ptr<const ApiClient> apiClient );
|
||||
|
||||
{{#gmockApis}}
|
||||
~{{classname}}() override;
|
||||
@@ -69,11 +69,11 @@ public:
|
||||
{{#allParams}}
|
||||
{{^required}}boost::optional<{{/required}}{{#isFile}}std::shared_ptr<{{/isFile}}{{{dataType}}}{{#isFile}}>{{/isFile}}{{^required}}>{{/required}} {{paramName}}{{#hasMore}},{{/hasMore}}
|
||||
{{/allParams}}
|
||||
){{#gmockApis}} override{{/gmockApis}};
|
||||
) const{{#gmockApis}} override{{/gmockApis}};
|
||||
{{/operation}}
|
||||
|
||||
protected:
|
||||
std::shared_ptr<ApiClient> m_ApiClient;
|
||||
std::shared_ptr<const ApiClient> m_ApiClient;
|
||||
};
|
||||
|
||||
{{#apiNamespaceDeclarations}}
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace {{this}} {
|
||||
|
||||
using namespace {{modelNamespace}};
|
||||
|
||||
{{classname}}::{{classname}}( std::shared_ptr<ApiClient> apiClient )
|
||||
{{classname}}::{{classname}}( std::shared_ptr<const ApiClient> apiClient )
|
||||
: m_ApiClient(apiClient)
|
||||
{
|
||||
}
|
||||
@@ -26,7 +26,7 @@ using namespace {{modelNamespace}};
|
||||
}
|
||||
|
||||
{{#operation}}
|
||||
pplx::task<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}> {{classname}}::{{operationId}}({{#allParams}}{{^required}}boost::optional<{{/required}}{{#isFile}}std::shared_ptr<{{/isFile}}{{{dataType}}}{{#isFile}}>{{/isFile}}{{^required}}>{{/required}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}})
|
||||
pplx::task<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}> {{classname}}::{{operationId}}({{#allParams}}{{^required}}boost::optional<{{/required}}{{#isFile}}std::shared_ptr<{{/isFile}}{{{dataType}}}{{#isFile}}>{{/isFile}}{{^required}}>{{/required}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) const
|
||||
{
|
||||
{{#allParams}}{{#required}}{{^isPrimitiveType}}{{^isContainer}}
|
||||
// verify the required parameter '{{paramName}}' is set
|
||||
@@ -36,7 +36,7 @@ pplx::task<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/r
|
||||
}
|
||||
{{/isContainer}}{{/isPrimitiveType}}{{/required}}{{/allParams}}
|
||||
|
||||
std::shared_ptr<ApiConfiguration> localVarApiConfiguration( m_ApiClient->getConfiguration() );
|
||||
std::shared_ptr<const ApiConfiguration> localVarApiConfiguration( m_ApiClient->getConfiguration() );
|
||||
utility::string_t localVarPath = utility::conversions::to_string_t("{{{path}}}");
|
||||
{{#pathParams}}boost::replace_all(localVarPath, utility::conversions::to_string_t("{") + utility::conversions::to_string_t("{{baseName}}") + utility::conversions::to_string_t("}"), ApiClient::parameterToString({{{paramName}}}));
|
||||
{{/pathParams}}
|
||||
|
||||
@@ -34,7 +34,7 @@ using namespace {{modelNamespace}};
|
||||
class {{declspec}} ApiClient
|
||||
{
|
||||
public:
|
||||
ApiClient( std::shared_ptr<ApiConfiguration> configuration = nullptr );
|
||||
ApiClient( std::shared_ptr<const ApiConfiguration> configuration = nullptr );
|
||||
virtual ~ApiClient();
|
||||
|
||||
typedef std::function<void(web::http::status_code, const web::http::http_headers&)> ResponseHandlerType;
|
||||
@@ -42,8 +42,8 @@ public:
|
||||
const ResponseHandlerType& getResponseHandler() const;
|
||||
void setResponseHandler(const ResponseHandlerType& responseHandler);
|
||||
|
||||
std::shared_ptr<ApiConfiguration> getConfiguration() const;
|
||||
void setConfiguration(std::shared_ptr<ApiConfiguration> configuration);
|
||||
std::shared_ptr<const ApiConfiguration> getConfiguration() const;
|
||||
void setConfiguration(std::shared_ptr<const ApiConfiguration> configuration);
|
||||
|
||||
static utility::string_t parameterToString(utility::string_t value);
|
||||
static utility::string_t parameterToString(int32_t value);
|
||||
@@ -70,7 +70,7 @@ public:
|
||||
protected:
|
||||
|
||||
ResponseHandlerType m_ResponseHandler;
|
||||
std::shared_ptr<ApiConfiguration> m_Configuration;
|
||||
std::shared_ptr<const ApiConfiguration> m_Configuration;
|
||||
};
|
||||
|
||||
template<class T>
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace {{this}} {
|
||||
|
||||
using namespace {{modelNamespace}};
|
||||
|
||||
ApiClient::ApiClient(std::shared_ptr<ApiConfiguration> configuration )
|
||||
ApiClient::ApiClient(std::shared_ptr<const ApiConfiguration> configuration )
|
||||
: m_Configuration(configuration)
|
||||
{
|
||||
}
|
||||
@@ -37,11 +37,11 @@ void ApiClient::setResponseHandler(const ResponseHandlerType& responseHandler) {
|
||||
m_ResponseHandler = responseHandler;
|
||||
}
|
||||
|
||||
std::shared_ptr<ApiConfiguration> ApiClient::getConfiguration() const
|
||||
std::shared_ptr<const ApiConfiguration> ApiClient::getConfiguration() const
|
||||
{
|
||||
return m_Configuration;
|
||||
}
|
||||
void ApiClient::setConfiguration(std::shared_ptr<ApiConfiguration> configuration)
|
||||
void ApiClient::setConfiguration(std::shared_ptr<const ApiConfiguration> configuration)
|
||||
{
|
||||
m_Configuration = configuration;
|
||||
}
|
||||
@@ -108,7 +108,7 @@ pplx::task<web::http::http_response> ApiClient::callApi(
|
||||
web::http::client::http_client client(m_Configuration->getBaseUrl(), m_Configuration->getHttpConfig());
|
||||
|
||||
web::http::http_request request;
|
||||
for ( auto& kvp : headerParams )
|
||||
for (const auto& kvp : headerParams)
|
||||
{
|
||||
request.headers().add(kvp.first, kvp.second);
|
||||
}
|
||||
@@ -116,18 +116,18 @@ pplx::task<web::http::http_response> ApiClient::callApi(
|
||||
if (fileParams.size() > 0)
|
||||
{
|
||||
MultipartFormData uploadData;
|
||||
for (auto& kvp : formParams)
|
||||
for (const auto& kvp : formParams)
|
||||
{
|
||||
uploadData.add(ModelBase::toHttpContent(kvp.first, kvp.second));
|
||||
}
|
||||
for (auto& kvp : fileParams)
|
||||
for (const auto& kvp : fileParams)
|
||||
{
|
||||
uploadData.add(ModelBase::toHttpContent(kvp.first, kvp.second));
|
||||
}
|
||||
std::stringstream data;
|
||||
uploadData.writeTo(data);
|
||||
auto bodyString = data.str();
|
||||
auto length = bodyString.size();
|
||||
const auto length = bodyString.size();
|
||||
request.set_body(concurrency::streams::bytestream::open_istream(std::move(bodyString)), length, utility::conversions::to_string_t("multipart/form-data; boundary=") + uploadData.getBoundary());
|
||||
}
|
||||
else
|
||||
@@ -137,7 +137,7 @@ pplx::task<web::http::http_response> ApiClient::callApi(
|
||||
std::stringstream data;
|
||||
postBody->writeTo(data);
|
||||
auto bodyString = data.str();
|
||||
auto length = bodyString.size();
|
||||
const auto length = bodyString.size();
|
||||
request.set_body(concurrency::streams::bytestream::open_istream(std::move(bodyString)), length, contentType);
|
||||
}
|
||||
else
|
||||
@@ -157,7 +157,7 @@ pplx::task<web::http::http_response> ApiClient::callApi(
|
||||
else
|
||||
{
|
||||
web::http::uri_builder formData;
|
||||
for (auto& kvp : formParams)
|
||||
for (const auto& kvp : formParams)
|
||||
{
|
||||
formData.append_query(kvp.first, kvp.second);
|
||||
}
|
||||
@@ -170,7 +170,7 @@ pplx::task<web::http::http_response> ApiClient::callApi(
|
||||
}
|
||||
|
||||
web::http::uri_builder builder(path);
|
||||
for (auto& kvp : queryParams)
|
||||
for (const auto& kvp : queryParams)
|
||||
{
|
||||
builder.append_query(kvp.first, kvp.second);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ public:
|
||||
ApiConfiguration();
|
||||
virtual ~ApiConfiguration();
|
||||
|
||||
web::http::client::http_client_config& getHttpConfig();
|
||||
const web::http::client::http_client_config& getHttpConfig() const;
|
||||
void setHttpConfig( web::http::client::http_client_config& value );
|
||||
|
||||
utility::string_t getBaseUrl() const;
|
||||
@@ -34,6 +34,7 @@ public:
|
||||
void setUserAgent( const utility::string_t value );
|
||||
|
||||
std::map<utility::string_t, utility::string_t>& getDefaultHeaders();
|
||||
const std::map<utility::string_t, utility::string_t>& getDefaultHeaders() const;
|
||||
|
||||
utility::string_t getApiKey( const utility::string_t& prefix) const;
|
||||
void setApiKey( const utility::string_t& prefix, const utility::string_t& apiKey );
|
||||
|
||||
@@ -13,7 +13,7 @@ ApiConfiguration::~ApiConfiguration()
|
||||
{
|
||||
}
|
||||
|
||||
web::http::client::http_client_config& ApiConfiguration::getHttpConfig()
|
||||
const web::http::client::http_client_config& ApiConfiguration::getHttpConfig() const
|
||||
{
|
||||
return m_HttpConfig;
|
||||
}
|
||||
@@ -48,6 +48,11 @@ std::map<utility::string_t, utility::string_t>& ApiConfiguration::getDefaultHead
|
||||
return m_DefaultHeaders;
|
||||
}
|
||||
|
||||
const std::map<utility::string_t, utility::string_t>& ApiConfiguration::getDefaultHeaders() const
|
||||
{
|
||||
return m_DefaultHeaders;
|
||||
}
|
||||
|
||||
utility::string_t ApiConfiguration::getApiKey( const utility::string_t& prefix) const
|
||||
{
|
||||
auto result = m_ApiKeys.find(prefix);
|
||||
|
||||
@@ -265,7 +265,7 @@ void {{classname}}::fromJson(const web::json::value& val)
|
||||
}
|
||||
else
|
||||
{
|
||||
{{{items.datatype}}} newItem({{{items.defaultValue}}});
|
||||
auto newItem = std::make_shared<{{{items.datatype}}}::element_type>();
|
||||
newItem->fromJson(item);
|
||||
m_{{name}}.push_back( newItem );
|
||||
}
|
||||
@@ -309,7 +309,7 @@ void {{classname}}::fromJson(const web::json::value& val)
|
||||
}
|
||||
else
|
||||
{
|
||||
{{{items.datatype}}} newItem({{{items.defaultValue}}});
|
||||
auto newItem = std::make_shared<{{{items.datatype}}}::element_type>();
|
||||
newItem->fromJson(item.at(utility::conversions::to_string_t("value")));
|
||||
m_{{name}}.insert(std::pair<utility::string_t,{{{items.datatype}}}>( key, newItem ));
|
||||
}
|
||||
@@ -344,7 +344,7 @@ void {{classname}}::fromJson(const web::json::value& val)
|
||||
{{/isDateTime}}
|
||||
{{^isDateTime}}
|
||||
{{^isByteArray}}
|
||||
{{{dataType}}} newItem({{{defaultValue}}});
|
||||
auto newItem = std::make_shared<{{{datatype}}}::element_type>();
|
||||
newItem->fromJson(fieldValue);
|
||||
{{setter}}( newItem );
|
||||
{{/isByteArray}}
|
||||
@@ -371,7 +371,7 @@ void {{classname}}::fromJson(const web::json::value& val)
|
||||
{{setter}}(ModelBase::fileFromJson(val.at(utility::conversions::to_string_t("{{baseName}}"))));
|
||||
{{/vendorExtensions.x-codegen-file}}
|
||||
{{^vendorExtensions.x-codegen-file}}
|
||||
{{{dataType}}} new{{name}}({{{defaultValue}}});
|
||||
auto new{{name}} = std::make_shared<{{{dataType}}}::element_type>();
|
||||
new{{name}}->fromJson(val.at(utility::conversions::to_string_t("{{baseName}}")));
|
||||
{{setter}}( new{{name}} );
|
||||
{{/vendorExtensions.x-codegen-file}}
|
||||
@@ -553,7 +553,7 @@ void {{classname}}::fromMultiPart(std::shared_ptr<MultipartFormData> multipart,
|
||||
}
|
||||
else
|
||||
{
|
||||
{{{items.datatype}}} newItem({{{items.defaultValue}}});
|
||||
auto newItem = std::make_shared<{{{items.datatype}}}::element_type>();
|
||||
newItem->fromJson(item);
|
||||
m_{{name}}.push_back( newItem );
|
||||
}
|
||||
@@ -600,7 +600,7 @@ void {{classname}}::fromMultiPart(std::shared_ptr<MultipartFormData> multipart,
|
||||
}
|
||||
else
|
||||
{
|
||||
{{{items.datatype}}} newItem({{{items.defaultValue}}});
|
||||
auto newItem = std::make_shared<{{{items.datatype}}}::element_type>();
|
||||
newItem->fromJson(item[utility::conversions::to_string_t("value")]);
|
||||
m_{{name}}.insert(std::pair<utility::string_t,{{{items.datatype}}}>( key, newItem ));
|
||||
}
|
||||
@@ -633,7 +633,7 @@ void {{classname}}::fromMultiPart(std::shared_ptr<MultipartFormData> multipart,
|
||||
{{^isDateTime}}
|
||||
if(multipart->hasContent(utility::conversions::to_string_t("{{baseName}}")))
|
||||
{
|
||||
{{{dataType}}} newItem({{{defaultValue}}});
|
||||
auto newItem = std::make_shared<{{{datatype}}}::element_type>();
|
||||
newItem->fromMultiPart(multipart, utility::conversions::to_string_t("{{baseName}}."));
|
||||
{{setter}}( newItem );
|
||||
}
|
||||
@@ -659,7 +659,7 @@ void {{classname}}::fromMultiPart(std::shared_ptr<MultipartFormData> multipart,
|
||||
{{setter}}(multipart->getContent(utility::conversions::to_string_t("{{baseName}}")));
|
||||
{{/vendorExtensions.x-codegen-file}}
|
||||
{{^vendorExtensions.x-codegen-file}}
|
||||
{{{dataType}}} new{{name}}({{{defaultValue}}});
|
||||
auto new{{name}} = std::make_shared<{{{dataType}}}::element_type>();
|
||||
new{{name}}->fromMultiPart(multipart, utility::conversions::to_string_t("{{baseName}}."));
|
||||
{{setter}}( new{{name}} );
|
||||
{{/vendorExtensions.x-codegen-file}}
|
||||
|
||||
Reference in New Issue
Block a user