1 /******************************************************************************
2 * THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN
3 */
4
5 #include "content-repo.h"
6
7 #include "converters.h"
8
9 #include <QtCore/QStringBuilder>
10 #include <QtNetwork/QNetworkReply>
11
12 using namespace Quotient;
13
14 static const auto basePath = QStringLiteral("/_matrix/media/r0");
15
16 class UploadContentJob::Private
17 {
18 public:
19 QString contentUri;
20 };
21
queryToUploadContent(const QString & filename)22 BaseJob::Query queryToUploadContent(const QString& filename)
23 {
24 BaseJob::Query _q;
25 addParam<IfNotEmpty>(_q, QStringLiteral("filename"), filename);
26 return _q;
27 }
28
29 static const auto UploadContentJobName = QStringLiteral("UploadContentJob");
30
UploadContentJob(QIODevice * content,const QString & filename,const QString & contentType)31 UploadContentJob::UploadContentJob(QIODevice* content, const QString& filename,
32 const QString& contentType)
33 : BaseJob(HttpVerb::Post, UploadContentJobName, basePath % "/upload",
34 queryToUploadContent(filename))
35 , d(new Private)
36 {
37 setRequestHeader("Content-Type", contentType.toLatin1());
38 setRequestData(Data(content));
39 }
40
41 UploadContentJob::~UploadContentJob() = default;
42
contentUri() const43 const QString& UploadContentJob::contentUri() const { return d->contentUri; }
44
parseJson(const QJsonDocument & data)45 BaseJob::Status UploadContentJob::parseJson(const QJsonDocument& data)
46 {
47 auto json = data.object();
48 if (!json.contains("content_uri"_ls))
49 return { IncorrectResponse,
50 "The key 'content_uri' not found in the response" };
51 fromJson(json.value("content_uri"_ls), d->contentUri);
52
53 return Success;
54 }
55
56 class GetContentJob::Private
57 {
58 public:
59 QString contentType;
60 QString contentDisposition;
61 QIODevice* data;
62 };
63
queryToGetContent(bool allowRemote)64 BaseJob::Query queryToGetContent(bool allowRemote)
65 {
66 BaseJob::Query _q;
67 addParam<IfNotEmpty>(_q, QStringLiteral("allow_remote"), allowRemote);
68 return _q;
69 }
70
makeRequestUrl(QUrl baseUrl,const QString & serverName,const QString & mediaId,bool allowRemote)71 QUrl GetContentJob::makeRequestUrl(QUrl baseUrl, const QString& serverName,
72 const QString& mediaId, bool allowRemote)
73 {
74 return BaseJob::makeRequestUrl(std::move(baseUrl),
75 basePath % "/download/" % serverName % "/"
76 % mediaId,
77 queryToGetContent(allowRemote));
78 }
79
80 static const auto GetContentJobName = QStringLiteral("GetContentJob");
81
GetContentJob(const QString & serverName,const QString & mediaId,bool allowRemote)82 GetContentJob::GetContentJob(const QString& serverName, const QString& mediaId,
83 bool allowRemote)
84 : BaseJob(HttpVerb::Get, GetContentJobName,
85 basePath % "/download/" % serverName % "/" % mediaId,
86 queryToGetContent(allowRemote), {}, false)
87 , d(new Private)
88 {
89 setExpectedContentTypes({ "*/*" });
90 }
91
92 GetContentJob::~GetContentJob() = default;
93
contentType() const94 const QString& GetContentJob::contentType() const { return d->contentType; }
95
contentDisposition() const96 const QString& GetContentJob::contentDisposition() const
97 {
98 return d->contentDisposition;
99 }
100
data() const101 QIODevice* GetContentJob::data() const { return d->data; }
102
parseReply(QNetworkReply * reply)103 BaseJob::Status GetContentJob::parseReply(QNetworkReply* reply)
104 {
105 d->contentType = reply->rawHeader("Content-Type");
106 d->contentDisposition = reply->rawHeader("Content-Disposition");
107 d->data = reply;
108 return Success;
109 }
110
111 class GetContentOverrideNameJob::Private
112 {
113 public:
114 QString contentType;
115 QString contentDisposition;
116 QIODevice* data;
117 };
118
queryToGetContentOverrideName(bool allowRemote)119 BaseJob::Query queryToGetContentOverrideName(bool allowRemote)
120 {
121 BaseJob::Query _q;
122 addParam<IfNotEmpty>(_q, QStringLiteral("allow_remote"), allowRemote);
123 return _q;
124 }
125
makeRequestUrl(QUrl baseUrl,const QString & serverName,const QString & mediaId,const QString & fileName,bool allowRemote)126 QUrl GetContentOverrideNameJob::makeRequestUrl(QUrl baseUrl,
127 const QString& serverName,
128 const QString& mediaId,
129 const QString& fileName,
130 bool allowRemote)
131 {
132 return BaseJob::makeRequestUrl(std::move(baseUrl),
133 basePath % "/download/" % serverName % "/"
134 % mediaId % "/" % fileName,
135 queryToGetContentOverrideName(allowRemote));
136 }
137
138 static const auto GetContentOverrideNameJobName =
139 QStringLiteral("GetContentOverrideNameJob");
140
GetContentOverrideNameJob(const QString & serverName,const QString & mediaId,const QString & fileName,bool allowRemote)141 GetContentOverrideNameJob::GetContentOverrideNameJob(const QString& serverName,
142 const QString& mediaId,
143 const QString& fileName,
144 bool allowRemote)
145 : BaseJob(HttpVerb::Get, GetContentOverrideNameJobName,
146 basePath % "/download/" % serverName % "/" % mediaId % "/"
147 % fileName,
148 queryToGetContentOverrideName(allowRemote), {}, false)
149 , d(new Private)
150 {
151 setExpectedContentTypes({ "*/*" });
152 }
153
154 GetContentOverrideNameJob::~GetContentOverrideNameJob() = default;
155
contentType() const156 const QString& GetContentOverrideNameJob::contentType() const
157 {
158 return d->contentType;
159 }
160
contentDisposition() const161 const QString& GetContentOverrideNameJob::contentDisposition() const
162 {
163 return d->contentDisposition;
164 }
165
data() const166 QIODevice* GetContentOverrideNameJob::data() const { return d->data; }
167
parseReply(QNetworkReply * reply)168 BaseJob::Status GetContentOverrideNameJob::parseReply(QNetworkReply* reply)
169 {
170 d->contentType = reply->rawHeader("Content-Type");
171 d->contentDisposition = reply->rawHeader("Content-Disposition");
172 d->data = reply;
173 return Success;
174 }
175
176 class GetContentThumbnailJob::Private
177 {
178 public:
179 QString contentType;
180 QIODevice* data;
181 };
182
queryToGetContentThumbnail(int width,int height,const QString & method,bool allowRemote)183 BaseJob::Query queryToGetContentThumbnail(int width, int height,
184 const QString& method,
185 bool allowRemote)
186 {
187 BaseJob::Query _q;
188 addParam<>(_q, QStringLiteral("width"), width);
189 addParam<>(_q, QStringLiteral("height"), height);
190 addParam<IfNotEmpty>(_q, QStringLiteral("method"), method);
191 addParam<IfNotEmpty>(_q, QStringLiteral("allow_remote"), allowRemote);
192 return _q;
193 }
194
makeRequestUrl(QUrl baseUrl,const QString & serverName,const QString & mediaId,int width,int height,const QString & method,bool allowRemote)195 QUrl GetContentThumbnailJob::makeRequestUrl(QUrl baseUrl,
196 const QString& serverName,
197 const QString& mediaId, int width,
198 int height, const QString& method,
199 bool allowRemote)
200 {
201 return BaseJob::makeRequestUrl(
202 std::move(baseUrl),
203 basePath % "/thumbnail/" % serverName % "/" % mediaId,
204 queryToGetContentThumbnail(width, height, method, allowRemote));
205 }
206
207 static const auto GetContentThumbnailJobName =
208 QStringLiteral("GetContentThumbnailJob");
209
GetContentThumbnailJob(const QString & serverName,const QString & mediaId,int width,int height,const QString & method,bool allowRemote)210 GetContentThumbnailJob::GetContentThumbnailJob(const QString& serverName,
211 const QString& mediaId, int width,
212 int height, const QString& method,
213 bool allowRemote)
214 : BaseJob(HttpVerb::Get, GetContentThumbnailJobName,
215 basePath % "/thumbnail/" % serverName % "/" % mediaId,
216 queryToGetContentThumbnail(width, height, method, allowRemote),
217 {}, false)
218 , d(new Private)
219 {
220 setExpectedContentTypes({ "image/jpeg", "image/png" });
221 }
222
223 GetContentThumbnailJob::~GetContentThumbnailJob() = default;
224
contentType() const225 const QString& GetContentThumbnailJob::contentType() const
226 {
227 return d->contentType;
228 }
229
data() const230 QIODevice* GetContentThumbnailJob::data() const { return d->data; }
231
parseReply(QNetworkReply * reply)232 BaseJob::Status GetContentThumbnailJob::parseReply(QNetworkReply* reply)
233 {
234 d->contentType = reply->rawHeader("Content-Type");
235 d->data = reply;
236 return Success;
237 }
238
239 class GetUrlPreviewJob::Private
240 {
241 public:
242 Omittable<qint64> matrixImageSize;
243 QString ogImage;
244 };
245
queryToGetUrlPreview(const QString & url,Omittable<qint64> ts)246 BaseJob::Query queryToGetUrlPreview(const QString& url, Omittable<qint64> ts)
247 {
248 BaseJob::Query _q;
249 addParam<>(_q, QStringLiteral("url"), url);
250 addParam<IfNotEmpty>(_q, QStringLiteral("ts"), ts);
251 return _q;
252 }
253
makeRequestUrl(QUrl baseUrl,const QString & url,Omittable<qint64> ts)254 QUrl GetUrlPreviewJob::makeRequestUrl(QUrl baseUrl, const QString& url,
255 Omittable<qint64> ts)
256 {
257 return BaseJob::makeRequestUrl(std::move(baseUrl), basePath % "/preview_url",
258 queryToGetUrlPreview(url, ts));
259 }
260
261 static const auto GetUrlPreviewJobName = QStringLiteral("GetUrlPreviewJob");
262
GetUrlPreviewJob(const QString & url,Omittable<qint64> ts)263 GetUrlPreviewJob::GetUrlPreviewJob(const QString& url, Omittable<qint64> ts)
264 : BaseJob(HttpVerb::Get, GetUrlPreviewJobName, basePath % "/preview_url",
265 queryToGetUrlPreview(url, ts))
266 , d(new Private)
267 {}
268
269 GetUrlPreviewJob::~GetUrlPreviewJob() = default;
270
matrixImageSize() const271 Omittable<qint64> GetUrlPreviewJob::matrixImageSize() const
272 {
273 return d->matrixImageSize;
274 }
275
ogImage() const276 const QString& GetUrlPreviewJob::ogImage() const { return d->ogImage; }
277
parseJson(const QJsonDocument & data)278 BaseJob::Status GetUrlPreviewJob::parseJson(const QJsonDocument& data)
279 {
280 auto json = data.object();
281 fromJson(json.value("matrix:image:size"_ls), d->matrixImageSize);
282 fromJson(json.value("og:image"_ls), d->ogImage);
283
284 return Success;
285 }
286
287 class GetConfigJob::Private
288 {
289 public:
290 Omittable<qint64> uploadSize;
291 };
292
makeRequestUrl(QUrl baseUrl)293 QUrl GetConfigJob::makeRequestUrl(QUrl baseUrl)
294 {
295 return BaseJob::makeRequestUrl(std::move(baseUrl), basePath % "/config");
296 }
297
298 static const auto GetConfigJobName = QStringLiteral("GetConfigJob");
299
GetConfigJob()300 GetConfigJob::GetConfigJob()
301 : BaseJob(HttpVerb::Get, GetConfigJobName, basePath % "/config")
302 , d(new Private)
303 {}
304
305 GetConfigJob::~GetConfigJob() = default;
306
uploadSize() const307 Omittable<qint64> GetConfigJob::uploadSize() const { return d->uploadSize; }
308
parseJson(const QJsonDocument & data)309 BaseJob::Status GetConfigJob::parseJson(const QJsonDocument& data)
310 {
311 auto json = data.object();
312 fromJson(json.value("m.upload.size"_ls), d->uploadSize);
313
314 return Success;
315 }
316