From 76438ba95d16c7d007fc16ffc194889f937a19f7 Mon Sep 17 00:00:00 2001 From: Kitsune Ral Date: Thu, 19 Oct 2017 19:36:10 +0900 Subject: Introduce device_id and initial_device_name support; switch to generated LoginJob This is _almost_ a backwards-compatible change, except that connect*() and other relevant methods in Connection are no more virtual (that wasn't much useful anyway). Otherwise it's a matter of passing initial_device_name to connectToServer(), saving device_id (along with access_token) from the result of LoginJob and then passing device_id (along with access_token, again) to connectWithToken() upon the next run. --- connectiondata.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'connectiondata.h') diff --git a/connectiondata.h b/connectiondata.h index 7b0097d6..52a7461c 100644 --- a/connectiondata.h +++ b/connectiondata.h @@ -32,11 +32,13 @@ namespace QMatrixClient QString accessToken() const; QUrl baseUrl() const; + const QString& deviceId() const; QNetworkAccessManager* nam() const; void setToken( QString accessToken ); void setHost( QString host ); void setPort( int port ); + void setDeviceId(const QString& deviceId); QString lastEvent() const; void setLastEvent( QString identifier ); -- cgit v1.2.3 From a7f158d1cfdc5c572a62af5a6945e4a6b88e8253 Mon Sep 17 00:00:00 2001 From: Kitsune Ral Date: Fri, 27 Oct 2017 21:22:04 +0300 Subject: Put access token to headers instead of query --- connection.cpp | 2 +- connectiondata.cpp | 6 +++--- connectiondata.h | 4 ++-- jobs/basejob.cpp | 11 +++++------ 4 files changed, 11 insertions(+), 12 deletions(-) (limited to 'connectiondata.h') diff --git a/connection.cpp b/connection.cpp index 427118c9..fdcfa680 100644 --- a/connection.cpp +++ b/connection.cpp @@ -131,7 +131,7 @@ void Connection::connectWithToken(const QString& userId, const QString& accessToken, const QString& deviceId) { d->userId = userId; - d->data->setToken(accessToken); + d->data->setToken(accessToken.toLatin1()); d->data->setDeviceId(deviceId); qCDebug(MAIN) << "Using server" << d->data->baseUrl() << "by user" << userId << "from device" << deviceId; diff --git a/connectiondata.cpp b/connectiondata.cpp index 9b9b6e04..6ef293cd 100644 --- a/connectiondata.cpp +++ b/connectiondata.cpp @@ -33,7 +33,7 @@ QNetworkAccessManager* getNam() struct ConnectionData::Private { QUrl baseUrl; - QString accessToken; + QByteArray accessToken; QString lastEvent; QString deviceId; @@ -52,7 +52,7 @@ ConnectionData::~ConnectionData() delete d; } -QString ConnectionData::accessToken() const +QByteArray ConnectionData::accessToken() const { return d->accessToken; } @@ -67,7 +67,7 @@ QNetworkAccessManager* ConnectionData::nam() const return getNam(); } -void ConnectionData::setToken(QString token) +void ConnectionData::setToken(QByteArray token) { d->accessToken = token; } diff --git a/connectiondata.h b/connectiondata.h index 52a7461c..933219ea 100644 --- a/connectiondata.h +++ b/connectiondata.h @@ -30,12 +30,12 @@ namespace QMatrixClient explicit ConnectionData(QUrl baseUrl); virtual ~ConnectionData(); - QString accessToken() const; + QByteArray accessToken() const; QUrl baseUrl() const; const QString& deviceId() const; QNetworkAccessManager* nam() const; - void setToken( QString accessToken ); + void setToken(QByteArray accessToken); void setHost( QString host ); void setPort( int port ); void setDeviceId(const QString& deviceId); diff --git a/jobs/basejob.cpp b/jobs/basejob.cpp index aa47f63c..20fb68f6 100644 --- a/jobs/basejob.cpp +++ b/jobs/basejob.cpp @@ -82,9 +82,9 @@ inline QDebug operator<<(QDebug dbg, const BaseJob* j) QDebug QMatrixClient::operator<<(QDebug dbg, const BaseJob::Status& s) { - QRegularExpression filter { "(access_token)=[-_A-Za-z0-9]+" }; + QRegularExpression filter { "(access_token)(=|: )[-_A-Za-z0-9]+" }; return dbg << s.code << ':' - << QString(s.message).replace(filter, "\\1=HIDDEN"); + << QString(s.message).replace(filter, "\\1 HIDDEN"); } BaseJob::BaseJob(HttpVerb verb, const QString& name, const QString& endpoint, @@ -138,13 +138,12 @@ void BaseJob::Private::sendRequest() { QUrl url = connection->baseUrl(); url.setPath( url.path() + "/" + apiEndpoint ); - QUrlQuery q = requestQuery; - if (needsToken) - q.addQueryItem("access_token", connection->accessToken()); - url.setQuery(q); + url.setQuery(requestQuery); QNetworkRequest req {url}; req.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + req.setRawHeader(QByteArray("Authorization"), + QByteArray("Bearer ") + connection->accessToken()); #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) req.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); req.setMaximumRedirectsAllowed(10); -- cgit v1.2.3 From ca70d70f441d93a1da431a8fa3e927396e2abf70 Mon Sep 17 00:00:00 2001 From: Kitsune Ral Date: Sat, 25 Nov 2017 19:52:58 +0900 Subject: ConnectionData::setBaseUrl() --- connectiondata.cpp | 6 ++++++ connectiondata.h | 1 + 2 files changed, 7 insertions(+) (limited to 'connectiondata.h') diff --git a/connectiondata.cpp b/connectiondata.cpp index 4276fd19..70791952 100644 --- a/connectiondata.cpp +++ b/connectiondata.cpp @@ -75,6 +75,12 @@ QNetworkAccessManager* ConnectionData::nam() const return nam; } +void ConnectionData::setBaseUrl(QUrl baseUrl) +{ + d->baseUrl = baseUrl; + qCDebug(MAIN) << "updated baseUrl to" << d->baseUrl; +} + void ConnectionData::setToken(QByteArray token) { d->accessToken = token; diff --git a/connectiondata.h b/connectiondata.h index 933219ea..530a52ee 100644 --- a/connectiondata.h +++ b/connectiondata.h @@ -35,6 +35,7 @@ namespace QMatrixClient const QString& deviceId() const; QNetworkAccessManager* nam() const; + void setBaseUrl(QUrl baseUrl); void setToken(QByteArray accessToken); void setHost( QString host ); void setPort( int port ); -- cgit v1.2.3