aboutsummaryrefslogtreecommitdiff
path: root/jobs
diff options
context:
space:
mode:
Diffstat (limited to 'jobs')
-rw-r--r--jobs/basejob.cpp21
-rw-r--r--jobs/basejob.h8
2 files changed, 21 insertions, 8 deletions
diff --git a/jobs/basejob.cpp b/jobs/basejob.cpp
index 22ce5bd5..0e3e59d0 100644
--- a/jobs/basejob.cpp
+++ b/jobs/basejob.cpp
@@ -178,17 +178,22 @@ void BaseJob::setExpectedContentTypes(const QByteArrayList& contentTypes)
d->expectedContentTypes = contentTypes;
}
-void BaseJob::Private::sendRequest()
+QUrl BaseJob::makeRequestUrl(QUrl baseUrl,
+ const QString& path, const QUrlQuery& query)
{
- QUrl url = connection->baseUrl();
- QString path = url.path();
- if (!path.endsWith('/') && !apiEndpoint.startsWith('/'))
- path.push_back('/');
+ auto pathBase = baseUrl.path();
+ if (!pathBase.endsWith('/') && !path.startsWith('/'))
+ pathBase.push_back('/');
- url.setPath( path + apiEndpoint );
- url.setQuery(requestQuery);
+ baseUrl.setPath( pathBase + path );
+ baseUrl.setQuery(query);
+ return baseUrl;
+}
- QNetworkRequest req {url};
+void BaseJob::Private::sendRequest()
+{
+ QNetworkRequest req
+ { makeRequestUrl(connection->baseUrl(), apiEndpoint, requestQuery) };
if (!requestHeaders.contains("Content-Type"))
req.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
req.setRawHeader(QByteArray("Authorization"),
diff --git a/jobs/basejob.h b/jobs/basejob.h
index e9e108c6..c03c914f 100644
--- a/jobs/basejob.h
+++ b/jobs/basejob.h
@@ -212,6 +212,14 @@ namespace QMatrixClient
void addExpectedContentType(const QByteArray& contentType);
void setExpectedContentTypes(const QByteArrayList& contentTypes);
+ /** Construct a URL out of baseUrl, path and query
+ * The function automatically adds '/' between baseUrl's path and
+ * \p path if necessary. The query component of \p baseUrl
+ * is ignored.
+ */
+ static QUrl makeRequestUrl(QUrl baseUrl, const QString& path,
+ const QUrlQuery& query = {});
+
virtual void beforeStart(const ConnectionData* connData);
virtual void afterStart(const ConnectionData* connData,
QNetworkReply* reply);