CR for Job #20431 - Remove XMLHttpRequest file reading and model uploading
Showing the changes to libraries/script-engine/src/XMLHttpRequestClass.cpp (1 of 5 files). Show all
Unified · Split
| @@ -13,15 +13,14 @@ · 12 unmodified lines | ||
| 13 | 13 | // |
| 14 | 14 | |
| 15 | 15 | #include <QEventLoop> |
| 16 | −#include <QFile> | |
| 17 | 16 | #include <qurlquery.h> |
| 18 | 17 | |
| 18 | +#include <AccountManager.h> | |
| 19 | 19 | #include <NetworkAccessManager.h> |
| 20 | 20 | #include <NetworkingConstants.h> |
| 21 | 21 | |
| 22 | −#include <AccountManager.h> | |
| 23 | −#include "XMLHttpRequestClass.h" | |
| 24 | 22 | #include "ScriptEngine.h" |
| 23 | +#include "XMLHttpRequestClass.h" | |
| 25 | 24 | |
| 26 | 25 | const QString METAVERSE_API_URL = NetworkingConstants::METAVERSE_SERVER_URL.toString() + "/api/"; |
| 27 | 26 | |
| @@ -42,7 +41,6 @@ XMLHttpRequestClass::XMLHttpRequestClass(QScriptEngine* engine) : · 14 unmodified lines | ||
| 42 | 41 | _onReadyStateChange(QScriptValue::NullValue), |
| 43 | 42 | _readyState(XMLHttpRequestClass::UNSENT), |
| 44 | 43 | _errorCode(QNetworkReply::NoError), |
| 45 | − _file(NULL), | |
| 46 | 44 | _timeout(0), |
| 47 | 45 | _timer(this), |
| 48 | 46 | _numRedirects(0) { |
| @@ -63,22 +61,6 @@ QScriptValue XMLHttpRequestClass::getStatus() const { · 14 unmodified lines | ||
| 63 | 61 | if (_reply) { |
| 64 | 62 | return QScriptValue(_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()); |
| 65 | 63 | } |
| 66 | − if(_url.isLocalFile()) { | |
| 67 | − switch (_errorCode) { | |
| 68 | − case QNetworkReply::NoError: | |
| 69 | − return QScriptValue(200); | |
| 70 | − case QNetworkReply::ContentNotFoundError: | |
| 71 | − return QScriptValue(404); | |
| 72 | − case QNetworkReply::ContentConflictError: | |
| 73 | − return QScriptValue(409); | |
| 74 | − case QNetworkReply::TimeoutError: | |
| 75 | − return QScriptValue(408); | |
| 76 | − case QNetworkReply::ContentOperationNotPermittedError: | |
| 77 | − return QScriptValue(501); | |
| 78 | − default: | |
| 79 | − break; | |
| 80 | − } | |
| 81 | − } | |
| 82 | 64 | return QScriptValue(0); |
| 83 | 65 | } |
| 84 | 66 | |
| @@ -86,22 +68,6 @@ QString XMLHttpRequestClass::getStatusText() const { · 1 unmodified line | ||
| 86 | 68 | if (_reply) { |
| 87 | 69 | return _reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString(); |
| 88 | 70 | } |
| 89 | − if (_url.isLocalFile()) { | |
| 90 | − switch (_errorCode) { | |
| 91 | − case QNetworkReply::NoError: | |
| 92 | − return "OK"; | |
| 93 | − case QNetworkReply::ContentNotFoundError: | |
| 94 | − return "Not Found"; | |
| 95 | − case QNetworkReply::ContentConflictError: | |
| 96 | − return "Conflict"; | |
| 97 | − case QNetworkReply::TimeoutError: | |
| 98 | − return "Timeout"; | |
| 99 | − case QNetworkReply::ContentOperationNotPermittedError: | |
| 100 | − return "Not Implemented"; | |
| 101 | − default: | |
| 102 | − break; | |
| 103 | − } | |
| 104 | − } | |
| 105 | 71 | return ""; |
| 106 | 72 | } |
| 107 | 73 | |
| @@ -147,13 +113,6 @@ QScriptValue XMLHttpRequestClass::getAllResponseHeaders() const { · 39 unmodified lines | ||
| 147 | 113 | } |
| 148 | 114 | return QString(headers.data()); |
| 149 | 115 | } |
| 150 | − if (_url.isLocalFile()) { | |
| 151 | − QString headers = QString("Content-Type: application/octet-stream\n"); | |
| 152 | − headers.append("Content-Length: "); | |
| 153 | − headers.append(QString("%1").arg(_rawResponseData.length())); | |
| 154 | − headers.append("\n"); | |
| 155 | − return headers; | |
| 156 | − } | |
| 157 | 116 | return QScriptValue(""); |
| 158 | 117 | } |
| 159 | 118 | |
| @@ -161,14 +120,6 @@ QScriptValue XMLHttpRequestClass::getResponseHeader(const QString& name) const { · 1 unmodified line | ||
| 161 | 120 | if (_reply && _reply->hasRawHeader(name.toLatin1())) { |
| 162 | 121 | return QScriptValue(QString(_reply->rawHeader(name.toLatin1()))); |
| 163 | 122 | } |
| 164 | − if (_url.isLocalFile()) { | |
| 165 | − if (name.toLower() == "content-type") { | |
| 166 | − return QString("application/octet-stream"); | |
| 167 | − } | |
| 168 | − if (name.toLower() == "content-length") { | |
| 169 | − return QString("%1").arg(_rawResponseData.length()); | |
| 170 | − } | |
| 171 | − } | |
| 172 | 123 | return QScriptValue::NullValue; |
| 173 | 124 | } |
| 174 | 125 | |
| @@ -188,47 +139,24 @@ void XMLHttpRequestClass::open(const QString& method, const QString& url, bool a · 13 unmodified lines | ||
| 188 | 139 | _url.setUrl(url); |
| 189 | 140 | _async = async; |
| 190 | 141 | |
| 191 | − if (_url.isLocalFile()) { | |
| 192 | − if (_method.toUpper() == "GET" && !_async && username.isEmpty() && password.isEmpty()) { | |
| 193 | − _file = new QFile(_url.toLocalFile()); | |
| 194 | − if (!_file->exists()) { | |
| 195 | − qDebug() << "Can't find file " << _url.fileName(); | |
| 196 | − abortRequest(); | |
| 197 | − _errorCode = QNetworkReply::ContentNotFoundError; | |
| 198 | − setReadyState(DONE); | |
| 199 | − emit requestComplete(); | |
| 200 | − } else if (!_file->open(QIODevice::ReadOnly)) { | |
| 201 | − qDebug() << "Can't open file " << _url.fileName(); | |
| 202 | − abortRequest(); | |
| 203 | − _errorCode = QNetworkReply::ContentConflictError; | |
| 204 | − setReadyState(DONE); | |
| 205 | − emit requestComplete(); | |
| 206 | − } else { | |
| 207 | − setReadyState(OPENED); | |
| 208 | − } | |
| 209 | − } else { | |
| 210 | − notImplemented(); | |
| 211 | − } | |
| 212 | − } else { | |
| 213 | − if (url.toLower().left(METAVERSE_API_URL.length()) == METAVERSE_API_URL) { | |
| 214 | − AccountManager& accountManager = AccountManager::getInstance(); | |
| 215 | − | |
| 216 | − if (accountManager.hasValidAccessToken()) { | |
| 217 | − QUrlQuery urlQuery(_url.query()); | |
| 218 | − urlQuery.addQueryItem("access_token", accountManager.getAccountInfo().getAccessToken().token); | |
| 219 | − _url.setQuery(urlQuery); | |
| 220 | − } | |
| 142 | + if (url.toLower().left(METAVERSE_API_URL.length()) == METAVERSE_API_URL) { | |
| 143 | + AccountManager& accountManager = AccountManager::getInstance(); | |
| 221 | 144 | |
| 145 | + if (accountManager.hasValidAccessToken()) { | |
| 146 | + QUrlQuery urlQuery(_url.query()); | |
| 147 | + urlQuery.addQueryItem("access_token", accountManager.getAccountInfo().getAccessToken().token); | |
| 148 | + _url.setQuery(urlQuery); | |
| 222 | 149 | } |
| 223 | − if (!username.isEmpty()) { | |
| 224 | − _url.setUserName(username); | |
| 225 | − } | |
| 226 | − if (!password.isEmpty()) { | |
| 227 | − _url.setPassword(password); | |
| 228 | − } | |
| 229 | − _request.setUrl(_url); | |
| 230 | − setReadyState(OPENED); | |
| 150 | + | |
| 151 | + } | |
| 152 | + if (!username.isEmpty()) { | |
| 153 | + _url.setUserName(username); | |
| 154 | + } | |
| 155 | + if (!password.isEmpty()) { | |
| 156 | + _url.setPassword(password); | |
| 231 | 157 | } |
| 158 | + _request.setUrl(_url); | |
| 159 | + setReadyState(OPENED); | |
| 232 | 160 | } |
| 233 | 161 | } |
| 234 | 162 | |
| @@ -239,23 +167,18 @@ void XMLHttpRequestClass::send() { · 4 unmodified lines | ||
| 239 | 167 | void XMLHttpRequestClass::send(const QScriptValue& data) { |
| 240 | 168 | if (_readyState == OPENED && !_reply) { |
| 241 | 169 | if (!data.isNull()) { |
| 242 | − if (_url.isLocalFile()) { | |
| 243 | − notImplemented(); | |
| 244 | − return; | |
| 170 | + _sendData = new QBuffer(this); | |
| 171 | + if (data.isObject()) { | |
| 172 | + QByteArray ba = qscriptvalue_cast<QByteArray>(data); | |
| 173 | + _sendData->setData(ba); | |
| 245 | 174 | } else { |
| 246 | − _sendData = new QBuffer(this); | |
| 247 | − if (data.isObject()) { | |
| 248 | − QByteArray ba = qscriptvalue_cast<QByteArray>(data); | |
| 249 | − _sendData->setData(ba); | |
| 250 | − } else { | |
| 251 | − _sendData->setData(data.toString().toUtf8()); | |
| 252 | − } | |
| 175 | + _sendData->setData(data.toString().toUtf8()); | |
| 253 | 176 | } |
| 254 | 177 | } |
| 255 | 178 | |
| 256 | 179 | doSend(); |
| 257 | 180 | |
| 258 | − if (!_async && !_url.isLocalFile()) { | |
| 181 | + if (!_async) { | |
| 259 | 182 | QEventLoop loop; |
| 260 | 183 | connect(this, SIGNAL(requestComplete()), &loop, SLOT(quit())); |
| 261 | 184 | loop.exec(); |
| @@ -265,23 +188,13 @@ void XMLHttpRequestClass::send(const QScriptValue& data) { · 3 unmodified lines | ||
| 265 | 188 | |
| 266 | 189 | void XMLHttpRequestClass::doSend() { |
| 267 | 190 | |
| 268 | − if (!_url.isLocalFile()) { | |
| 269 | − _reply = NetworkAccessManager::getInstance().sendCustomRequest(_request, _method.toLatin1(), _sendData); | |
| 270 | − connectToReply(_reply); | |
| 271 | − } | |
| 191 | + _reply = NetworkAccessManager::getInstance().sendCustomRequest(_request, _method.toLatin1(), _sendData); | |
| 192 | + connectToReply(_reply); | |
| 272 | 193 | |
| 273 | 194 | if (_timeout > 0) { |
| 274 | 195 | _timer.start(_timeout); |
| 275 | 196 | connect(&_timer, SIGNAL(timeout()), this, SLOT(requestTimeout())); |
| 276 | 197 | } |
| 277 | − | |
| 278 | − if (_url.isLocalFile()) { | |
| 279 | − setReadyState(HEADERS_RECEIVED); | |
| 280 | − setReadyState(LOADING); | |
| 281 | − _rawResponseData = _file->readAll(); | |
| 282 | − _file->close(); | |
| 283 | − requestFinished(); | |
| 284 | − } | |
| 285 | 198 | } |
| 286 | 199 | |
| 287 | 200 | void XMLHttpRequestClass::requestTimeout() { |
| @@ -300,16 +213,10 @@ void XMLHttpRequestClass::requestError(QNetworkReply::NetworkError code) { · 12 unmodified lines | ||
| 300 | 213 | void XMLHttpRequestClass::requestFinished() { |
| 301 | 214 | disconnect(&_timer, SIGNAL(timeout()), this, SLOT(requestTimeout())); |
| 302 | 215 | |
| 303 | − if (!_url.isLocalFile()) { | |
| 304 | − _errorCode = _reply->error(); | |
| 305 | − } else { | |
| 306 | − _errorCode = QNetworkReply::NoError; | |
| 307 | − } | |
| 216 | + _errorCode = _reply->error(); | |
| 308 | 217 | |
| 309 | 218 | if (_errorCode == QNetworkReply::NoError) { |
| 310 | − if (!_url.isLocalFile()) { | |
| 311 | − _rawResponseData.append(_reply->readAll()); | |
| 312 | − } | |
| 219 | + _rawResponseData.append(_reply->readAll()); | |
| 313 | 220 | |
| 314 | 221 | if (_responseType == "json") { |
| 315 | 222 | _responseData = _engine->evaluate("(" + QString(_rawResponseData.data()) + ")"); |
| @@ -338,19 +245,6 @@ void XMLHttpRequestClass::abortRequest() { · 22 unmodified lines | ||
| 338 | 245 | _reply->deleteLater(); |
| 339 | 246 | _reply = NULL; |
| 340 | 247 | } |
| 341 | − | |
| 342 | − if (_file != NULL) { | |
| 343 | − _file->close(); | |
| 344 | − _file = NULL; | |
| 345 | − } | |
| 346 | −} | |
| 347 | − | |
| 348 | −void XMLHttpRequestClass::notImplemented() { | |
| 349 | − abortRequest(); | |
| 350 | − //_errorCode = QNetworkReply::OperationNotImplementedError; TODO: Use this status code when update to Qt 5.3 | |
| 351 | − _errorCode = QNetworkReply::ContentOperationNotPermittedError; | |
| 352 | − setReadyState(DONE); | |
| 353 | − emit requestComplete(); | |
| 354 | 248 | } |
| 355 | 249 | |
| 356 | 250 | void XMLHttpRequestClass::connectToReply(QNetworkReply* reply) { |