aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/{{base}}.h.mustache
diff options
context:
space:
mode:
Diffstat (limited to 'lib/csapi/{{base}}.h.mustache')
-rw-r--r--lib/csapi/{{base}}.h.mustache63
1 files changed, 63 insertions, 0 deletions
diff --git a/lib/csapi/{{base}}.h.mustache b/lib/csapi/{{base}}.h.mustache
new file mode 100644
index 00000000..a9bed527
--- /dev/null
+++ b/lib/csapi/{{base}}.h.mustache
@@ -0,0 +1,63 @@
+{{#@filePartial}}preamble{{/@filePartial}}
+#pragma once
+
+{{#operations}}#include "jobs/basejob.h"
+{{/operations}}
+{{#imports}}#include {{_}}
+{{/imports}}
+{{#allModels}}#include "converters.h"
+{{/allModels}}
+namespace QMatrixClient
+{
+{{#models}} // Data structures
+{{# model}}
+ struct {{name}}{{#parents?}} : {{#parents}}{{name}}{{#@join}}, {{/@join}}{{/parents}}{{/parents?}}
+ {
+{{#vars}} {{dataType.name}} {{nameCamelCase}};
+{{/vars}} };
+{{#in?}}
+ QJsonObject toJson(const {{name}}& pod);
+{{/in?}}{{#out?}}
+ template <> struct FromJson<{{name}}>
+ {
+ {{name}} operator()(const QJsonValue& jv);
+ };
+{{/ out?}}{{/model}}
+{{/models}}{{#operations}} // Operations
+{{# operation}}
+ class {{camelCaseOperationId}}Job : public BaseJob
+ {
+ public:{{#models}}
+ // Inner data structures
+{{# model}}
+ struct {{name}}{{#parents?}} : {{#parents}}{{name}}{{#@join}}, {{/@join}}{{/parents}}{{/parents?}}
+ {
+{{#vars}} {{dataType.name}} {{nameCamelCase}};
+{{/vars}} };
+{{/ model}}
+ // Construction/destruction
+{{/ models}}
+ explicit {{camelCaseOperationId}}Job({{#allParams}}{{>joinedParamDecl}}{{/allParams}});{{^bodyParams}}
+
+ /** Construct a URL out of baseUrl and usual parameters passed to
+ * {{camelCaseOperationId}}Job. This function can be used when
+ * a URL for {{camelCaseOperationId}}Job is necessary but the job
+ * itself isn't.
+ */
+ static QUrl makeRequestUrl(QUrl baseUrl{{#allParams?}}, {{#allParams}}{{>joinedParamDecl}}{{/allParams}}{{/allParams?}});
+{{/bodyParams}}{{# responses}}{{#normalResponse?}}{{#allProperties?}}
+ ~{{camelCaseOperationId}}Job() override;
+
+ // Result properties
+{{#allProperties}}
+ {{>maybeCrefType}} {{paramName}}(){{^noCopy?}} const{{/noCopy?}};{{/allProperties}}
+
+ protected:
+ Status {{#producesNonJson?}}parseReply(QNetworkReply* reply){{/producesNonJson?}}{{^producesNonJson?}}parseJson(const QJsonDocument& data){{/producesNonJson?}} override;
+
+ private:
+ class Private;
+ QScopedPointer<Private> d;{{/allProperties?}}{{/normalResponse?}}{{/responses}}
+ };
+{{/operation}}{{/operations}}{{!skip EOL
+}}} // namespace QMatrixClient