{{#@filePartial}}preamble{{/@filePartial}} #include "{{filenameBase}}.h" #include "converters.h" {{#operations}} #include {{/operations}} using namespace QMatrixClient; {{#models.model}}{{^trivial?}} {{qualifiedName}}::operator QJsonValue() const { QJsonObject o; {{#vars}}o.insert("{{baseName}}", toJson({{nameCamelCase}})); {{/vars}} return o; } {{qualifiedName}} FromJson<{{qualifiedName}}>::operator()(QJsonValue jv) { QJsonObject o = jv.toObject(); {{qualifiedName}} result; {{#vars}}result.{{nameCamelCase}} = fromJson<{{dataType.name}}>(o.value("{{baseName}}")); {{/vars}} return result; } {{/trivial?}}{{/models.model}}{{#operations}} static const auto basePath = QStringLiteral("{{basePathWithoutHost}}"); {{# operation}}{{#models.model}}{{^trivial?}} {{qualifiedName}}::operator QJsonValue() const { QJsonObject o; {{#vars}}o.insert("{{baseName}}", toJson({{nameCamelCase}})); {{/vars}} return o; } namespace QMatrixClient { template <> struct FromJson<{{qualifiedName}}> { {{qualifiedName}} operator()(QJsonValue jv) { QJsonObject o = jv.toObject(); {{qualifiedName}} result; {{#vars}}result.{{nameCamelCase}} = fromJson<{{dataType.qualifiedName}}>(o.value("{{baseName}}")); {{/vars}} return result; } }; } {{/ trivial?}}{{/models.model}}{{#responses}}{{#normalResponse?}}{{#properties?}} class {{camelCaseOperationId}}Job::Private { public: {{#properties}}{{dataType.name}} {{paramName}};{{#@join}}{{!EOL except the last line}} {{/@join}}{{/properties}} }; {{/ properties?}}{{/normalResponse?}}{{/responses}} {{camelCaseOperationId}}Job::{{camelCaseOperationId}}Job({{#allParams}}{{>maybeCrefType}} {{paramName}}{{#@join}}, {{/@join}}{{/allParams}}) : BaseJob(HttpVerb::{{#@cap}}{{#@tolower}}{{httpMethod}}{{/@tolower}}{{/@cap}}, "{{camelCaseOperationId}}Job", basePath{{#pathParts}} % {{_}}{{/pathParts}}, Query {{^queryParams}}{ }{{/queryParams}}{{#queryParams?}}{ {{#queryParams}}{ "{{baseName}}", toJson({{paramName}}).toString() }{{#@join}}, {{/@join}}{{/queryParams}} }{{/queryParams?}}{{#skipAuth}}, Data { }, false{{/skipAuth}} ){{#responses}}{{#normalResponse?}}{{#properties?}}, d(new Private){{/properties?}}{{/normalResponse?}}{{/responses}} {{#bodyParams?}}{ Data _data;{{#bodyParams}} {{^required?}}{{#string?}} if (!{{paramName}}.isEmpty()) {{/string?}}{{/required?}} _data.insert("{{baseName}}", toJson({{paramName}}));{{/bodyParams}} setRequestData(_data); }{{/bodyParams?}}{{^bodyParams?}}{ }{{/bodyParams?}} {{# responses}}{{#normalResponse?}}{{#properties?}} {{camelCaseOperationId}}Job::~{{camelCaseOperationId}}Job() { delete d; } {{# properties}} {{>qualifiedMaybeCrefType}} {{camelCaseOperationId}}Job::{{paramName}}() const { return d->{{paramName}}; } {{/ properties}}{{#returnFile?}} BaseJob::Status {{camelCaseOperationId}}Job::parseReply(QByteArray data) { {{properties.nameCamelCase}} = data; return Success; }{{/ returnFile?}}{{^returnFile?}} BaseJob::Status {{camelCaseOperationId}}Job::parseJson(const QJsonDocument& data) { auto json = data.object(); {{# properties}}{{#required?}}if (!json.contains("{{baseName}}")) return { JsonParseError, "The key '{{baseName}}' not found in the response" }; {{/required?}}d->{{paramName}} = fromJson<{{dataType.name}}>(json.value("{{baseName}}")); {{/ properties}}return Success; }{{/ returnFile?}} {{/properties?}}{{/normalResponse?}}{{/responses}}{{/operation}}{{/operations}}