aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/{{base}}.h.mustache
blob: 404aafe855e38d2f3d10bb8c58f9a5329b7630a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
{{>preamble}}
#pragma once

{{#operations}}
#include "jobs/basejob.h"{{/operations}}
{{#models}}
#include "converters.h"{{/models}}
{{#imports}}
#include {{_}}{{/imports}}

namespace Quotient {
{{#models}}

// Data structures

    {{#model}}
{{>docCommentShort}}
struct {{name}}{{#parents?}} : {{#parents}}{{name}}{{>cjoin}}{{/parents}}{{/parents?}}
{       {{#vars}}

    {{>docCommentShort}}
    {{>maybeOmittableType}} {{nameCamelCase}};
        {{/vars}}{{#propertyMap}}

    {{>docCommentShort}}
    {{>maybeOmittableType}} {{nameCamelCase}};
        {{/propertyMap}}
};

template <> struct JsonObjectConverter<{{name}}>
{
        {{#in?}}
    static void dumpTo(QJsonObject& jo, const {{name}}& pod);
        {{/in?}}
        {{#out?}}
    static void fillFrom({{>maybeCrefJsonObject}} jo, {{name}}& pod);
        {{/out?}}
};
    {{/model}}
{{/models}}
{{#operations}}

// Operations
    {{#operation}}

/*!{{>docCommentSummary}}{{#description}}
 * {{_}}{{/description}}
 */
class {{camelCaseOperationId}}Job : public BaseJob {
public: {{#models}}
    // Inner data structures
            {{#model}}

    {{>docCommentShort}}
    struct {{name}}{{#parents?}} :
        {{#parents}}{{name}}{{>cjoin}}{{/parents}}{{/parents?}}
    {
                {{#vars}}
        {{>docCommentShort}}
        {{>maybeOmittableType}} {{nameCamelCase}};
                {{/vars}}
                {{#propertyMap}}
        {{>docCommentShort}}
        {{>maybeOmittableType}} {{nameCamelCase}};
                {{/propertyMap}}
    };
            {{/model}}

    // Construction/destruction

        {{/models}}
        {{^allParams?}}
            {{#summary}}
    /// {{summary}}
            {{/summary}}
        {{/allParams?}}{{#allParams?}}
    /*!{{>docCommentSummary}}
            {{#allParams}}
     * \param {{nameCamelCase}}{{#description}}
     *   {{_}}{{/description}}
            {{/allParams}}
     */
        {{/allParams?}}
    explicit {{camelCaseOperationId}}Job({{#allParams}}{{>joinedParamDecl}}{{/allParams}});
        {{^bodyParams}}

    /*! \brief Construct a URL without creating a full-fledged job object
     *
     * 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}}

    {{>docCommentShort}}
    {{>maybeCrefType}} {{paramName}}(){{^moveOnly}} const{{/moveOnly}};
            {{/allProperties}}

protected:  {{#producesNonJson?}}
    Status parseReply(QNetworkReply* reply) override;
            {{/producesNonJson?}}{{^producesNonJson?}}
    Status parseJson(const QJsonDocument& data) override;
            {{/producesNonJson?}}

private:
    class Private;
    QScopedPointer<Private> d;
        {{/allProperties?}}{{/normalResponse?}}{{/responses}}
};
    {{/operation}}
{{/operations}}

} // namespace Quotient