mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 09:28:46 +02:00
Case21085 - Changing domains with scripting APIs not working
AccountManager was earlier changed to support QUrlQuery for query strings in it's 'send.' Unfortunately, QUrlQuery isn't a scriptable property type so using AM was failing from scripts
This commit is contained in:
parent
4bbb030ad7
commit
e6b2c890d0
4 changed files with 26 additions and 23 deletions
|
@ -72,20 +72,17 @@ void QmlMarketplace::getMarketplaceItems(
|
||||||
|
|
||||||
void QmlMarketplace::getMarketplaceItem(const QString& marketplaceItemId) {
|
void QmlMarketplace::getMarketplaceItem(const QString& marketplaceItemId) {
|
||||||
QString endpoint = QString("items/") + marketplaceItemId;
|
QString endpoint = QString("items/") + marketplaceItemId;
|
||||||
QUrlQuery request;
|
send(endpoint, "getMarketplaceItemSuccess", "getMarketplaceItemFailure", QNetworkAccessManager::GetOperation, AccountManagerAuth::Optional);
|
||||||
send(endpoint, "getMarketplaceItemSuccess", "getMarketplaceItemFailure", QNetworkAccessManager::GetOperation, AccountManagerAuth::Optional, request);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlMarketplace::marketplaceItemLike(const QString& marketplaceItemId, const bool like) {
|
void QmlMarketplace::marketplaceItemLike(const QString& marketplaceItemId, const bool like) {
|
||||||
QString endpoint = QString("items/") + marketplaceItemId + "/like";
|
QString endpoint = QString("items/") + marketplaceItemId + "/like";
|
||||||
QUrlQuery request;
|
send(endpoint, "marketplaceItemLikeSuccess", "marketplaceItemLikeFailure", like ? QNetworkAccessManager::PostOperation : QNetworkAccessManager::DeleteOperation, AccountManagerAuth::Required);
|
||||||
send(endpoint, "marketplaceItemLikeSuccess", "marketplaceItemLikeFailure", like ? QNetworkAccessManager::PostOperation : QNetworkAccessManager::DeleteOperation, AccountManagerAuth::Required, request);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlMarketplace::getMarketplaceCategories() {
|
void QmlMarketplace::getMarketplaceCategories() {
|
||||||
QString endpoint = "categories";
|
QString endpoint = "categories";
|
||||||
QUrlQuery request;
|
send(endpoint, "getMarketplaceCategoriesSuccess", "getMarketplaceCategoriesFailure", QNetworkAccessManager::GetOperation, AccountManagerAuth::None);
|
||||||
send(endpoint, "getMarketplaceCategoriesSuccess", "getMarketplaceCategoriesFailure", QNetworkAccessManager::GetOperation, AccountManagerAuth::None, request);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -94,14 +91,13 @@ void QmlMarketplace::send(const QString& endpoint, const QString& success, const
|
||||||
const QString URL = "/api/v1/marketplace/";
|
const QString URL = "/api/v1/marketplace/";
|
||||||
JSONCallbackParameters callbackParams(this, success, fail);
|
JSONCallbackParameters callbackParams(this, success, fail);
|
||||||
|
|
||||||
accountManager->sendRequest(URL + endpoint,
|
accountManager->sendRequest(URL + endpoint + "?" + request.toString(),
|
||||||
authType,
|
authType,
|
||||||
method,
|
method,
|
||||||
callbackParams,
|
callbackParams,
|
||||||
QByteArray(),
|
QByteArray(),
|
||||||
NULL,
|
NULL,
|
||||||
QVariantMap(),
|
QVariantMap());
|
||||||
request);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,12 @@ signals:
|
||||||
void marketplaceItemLikeResult(QJsonObject result);
|
void marketplaceItemLikeResult(QJsonObject result);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void send(const QString& endpoint, const QString& success, const QString& fail, QNetworkAccessManager::Operation method, AccountManagerAuth::Type authType, const QUrlQuery & request);
|
void send(const QString& endpoint,
|
||||||
|
const QString& success,
|
||||||
|
const QString& fail,
|
||||||
|
QNetworkAccessManager::Operation method,
|
||||||
|
AccountManagerAuth::Type authType,
|
||||||
|
const QUrlQuery& request = QUrlQuery());
|
||||||
QJsonObject apiResponse(const QString& label, QNetworkReply* reply);
|
QJsonObject apiResponse(const QString& label, QNetworkReply* reply);
|
||||||
QJsonObject failResponse(const QString& label, QNetworkReply* reply);
|
QJsonObject failResponse(const QString& label, QNetworkReply* reply);
|
||||||
};
|
};
|
||||||
|
|
|
@ -208,7 +208,7 @@ void AccountManager::setSessionID(const QUuid& sessionID) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QNetworkRequest AccountManager::createRequest(QString path, AccountManagerAuth::Type authType, const QUrlQuery & query) {
|
QNetworkRequest AccountManager::createRequest(QString path, AccountManagerAuth::Type authType) {
|
||||||
QNetworkRequest networkRequest;
|
QNetworkRequest networkRequest;
|
||||||
networkRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
|
networkRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
|
||||||
networkRequest.setHeader(QNetworkRequest::UserAgentHeader, _userAgentGetter());
|
networkRequest.setHeader(QNetworkRequest::UserAgentHeader, _userAgentGetter());
|
||||||
|
@ -222,12 +222,17 @@ QNetworkRequest AccountManager::createRequest(QString path, AccountManagerAuth::
|
||||||
requestURL = getMetaverseServerURL();
|
requestURL = getMetaverseServerURL();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int queryStringLocation = path.indexOf("?");
|
||||||
if (path.startsWith("/")) {
|
if (path.startsWith("/")) {
|
||||||
requestURL.setPath(path);
|
requestURL.setPath(path.left(queryStringLocation));
|
||||||
} else {
|
} else {
|
||||||
requestURL.setPath("/" + path);
|
requestURL.setPath("/" + path.left(queryStringLocation));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (queryStringLocation >= 0) {
|
||||||
|
QUrlQuery query(path.mid(queryStringLocation+1));
|
||||||
requestURL.setQuery(query);
|
requestURL.setQuery(query);
|
||||||
|
}
|
||||||
|
|
||||||
if (authType != AccountManagerAuth::None ) {
|
if (authType != AccountManagerAuth::None ) {
|
||||||
if (hasValidAccessToken()) {
|
if (hasValidAccessToken()) {
|
||||||
|
@ -253,8 +258,7 @@ void AccountManager::sendRequest(const QString& path,
|
||||||
const JSONCallbackParameters& callbackParams,
|
const JSONCallbackParameters& callbackParams,
|
||||||
const QByteArray& dataByteArray,
|
const QByteArray& dataByteArray,
|
||||||
QHttpMultiPart* dataMultiPart,
|
QHttpMultiPart* dataMultiPart,
|
||||||
const QVariantMap& propertyMap,
|
const QVariantMap& propertyMap) {
|
||||||
QUrlQuery query) {
|
|
||||||
|
|
||||||
if (thread() != QThread::currentThread()) {
|
if (thread() != QThread::currentThread()) {
|
||||||
QMetaObject::invokeMethod(this, "sendRequest",
|
QMetaObject::invokeMethod(this, "sendRequest",
|
||||||
|
@ -264,14 +268,13 @@ void AccountManager::sendRequest(const QString& path,
|
||||||
Q_ARG(const JSONCallbackParameters&, callbackParams),
|
Q_ARG(const JSONCallbackParameters&, callbackParams),
|
||||||
Q_ARG(const QByteArray&, dataByteArray),
|
Q_ARG(const QByteArray&, dataByteArray),
|
||||||
Q_ARG(QHttpMultiPart*, dataMultiPart),
|
Q_ARG(QHttpMultiPart*, dataMultiPart),
|
||||||
Q_ARG(QVariantMap, propertyMap),
|
Q_ARG(QVariantMap, propertyMap));
|
||||||
Q_ARG(QUrlQuery, query));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance();
|
QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance();
|
||||||
|
|
||||||
QNetworkRequest networkRequest = createRequest(path, authType, query);
|
QNetworkRequest networkRequest = createRequest(path, authType);
|
||||||
|
|
||||||
if (VERBOSE_HTTP_REQUEST_DEBUGGING) {
|
if (VERBOSE_HTTP_REQUEST_DEBUGGING) {
|
||||||
qCDebug(networking) << "Making a request to" << qPrintable(networkRequest.url().toString());
|
qCDebug(networking) << "Making a request to" << qPrintable(networkRequest.url().toString());
|
||||||
|
|
|
@ -61,15 +61,14 @@ class AccountManager : public QObject, public Dependency {
|
||||||
public:
|
public:
|
||||||
AccountManager(UserAgentGetter userAgentGetter = DEFAULT_USER_AGENT_GETTER);
|
AccountManager(UserAgentGetter userAgentGetter = DEFAULT_USER_AGENT_GETTER);
|
||||||
|
|
||||||
QNetworkRequest createRequest(QString path, AccountManagerAuth::Type authType, const QUrlQuery & query = QUrlQuery());
|
QNetworkRequest createRequest(QString path, AccountManagerAuth::Type authType);
|
||||||
Q_INVOKABLE void sendRequest(const QString& path,
|
Q_INVOKABLE void sendRequest(const QString& path,
|
||||||
AccountManagerAuth::Type authType,
|
AccountManagerAuth::Type authType,
|
||||||
QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation,
|
QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation,
|
||||||
const JSONCallbackParameters& callbackParams = JSONCallbackParameters(),
|
const JSONCallbackParameters& callbackParams = JSONCallbackParameters(),
|
||||||
const QByteArray& dataByteArray = QByteArray(),
|
const QByteArray& dataByteArray = QByteArray(),
|
||||||
QHttpMultiPart* dataMultiPart = NULL,
|
QHttpMultiPart* dataMultiPart = NULL,
|
||||||
const QVariantMap& propertyMap = QVariantMap(),
|
const QVariantMap& propertyMap = QVariantMap());
|
||||||
QUrlQuery query = QUrlQuery());
|
|
||||||
|
|
||||||
void setIsAgent(bool isAgent) { _isAgent = isAgent; }
|
void setIsAgent(bool isAgent) { _isAgent = isAgent; }
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue