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