History

Merge pull request #4569 from ctrlaltdavid/20431

CR for Job #20431 - Remove XMLHttpRequest file reading and model uploading

Brad Hefta-Gaub committed 11 years ago

Commit 1de15272 parents 92c55f9 edaa4cd5 files · +27 −925Browse files

Showing the changes to libraries/script-engine/src/XMLHttpRequestClass.cpp (1 of 5 files). Show all

Unified · Split

libraries/script-engine/src/XMLHttpRequestClass.cpp+27−133
@@ -13,15 +13,14 @@ · 12 unmodified lines
1313 //
1414
1515 #include <QEventLoop>
16−#include <QFile>
1716 #include <qurlquery.h>
1817
18+#include <AccountManager.h>
1919 #include <NetworkAccessManager.h>
2020 #include <NetworkingConstants.h>
2121
22−#include <AccountManager.h>
23−#include "XMLHttpRequestClass.h"
2422 #include "ScriptEngine.h"
23+#include "XMLHttpRequestClass.h"
2524
2625 const QString METAVERSE_API_URL = NetworkingConstants::METAVERSE_SERVER_URL.toString() + "/api/";
2726
@@ -42,7 +41,6 @@ XMLHttpRequestClass::XMLHttpRequestClass(QScriptEngine* engine) : · 14 unmodified lines
4241 _onReadyStateChange(QScriptValue::NullValue),
4342 _readyState(XMLHttpRequestClass::UNSENT),
4443 _errorCode(QNetworkReply::NoError),
45− _file(NULL),
4644 _timeout(0),
4745 _timer(this),
4846 _numRedirects(0) {
@@ -63,22 +61,6 @@ QScriptValue XMLHttpRequestClass::getStatus() const { · 14 unmodified lines
6361 if (_reply) {
6462 return QScriptValue(_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt());
6563 }
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− }
8264 return QScriptValue(0);
8365 }
8466
@@ -86,22 +68,6 @@ QString XMLHttpRequestClass::getStatusText() const { · 1 unmodified line
8668 if (_reply) {
8769 return _reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString();
8870 }
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− }
10571 return "";
10672 }
10773
@@ -147,13 +113,6 @@ QScriptValue XMLHttpRequestClass::getAllResponseHeaders() const { · 39 unmodified lines
147113 }
148114 return QString(headers.data());
149115 }
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− }
157116 return QScriptValue("");
158117 }
159118
@@ -161,14 +120,6 @@ QScriptValue XMLHttpRequestClass::getResponseHeader(const QString& name) const { · 1 unmodified line
161120 if (_reply && _reply->hasRawHeader(name.toLatin1())) {
162121 return QScriptValue(QString(_reply->rawHeader(name.toLatin1())));
163122 }
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− }
172123 return QScriptValue::NullValue;
173124 }
174125
@@ -188,47 +139,24 @@ void XMLHttpRequestClass::open(const QString& method, const QString& url, bool a · 13 unmodified lines
188139 _url.setUrl(url);
189140 _async = async;
190141
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();
221144
145+ if (accountManager.hasValidAccessToken()) {
146+ QUrlQuery urlQuery(_url.query());
147+ urlQuery.addQueryItem("access_token", accountManager.getAccountInfo().getAccessToken().token);
148+ _url.setQuery(urlQuery);
222149 }
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);
231157 }
158+ _request.setUrl(_url);
159+ setReadyState(OPENED);
232160 }
233161 }
234162
@@ -239,23 +167,18 @@ void XMLHttpRequestClass::send() { · 4 unmodified lines
239167 void XMLHttpRequestClass::send(const QScriptValue& data) {
240168 if (_readyState == OPENED && !_reply) {
241169 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);
245174 } 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());
253176 }
254177 }
255178
256179 doSend();
257180
258− if (!_async && !_url.isLocalFile()) {
181+ if (!_async) {
259182 QEventLoop loop;
260183 connect(this, SIGNAL(requestComplete()), &loop, SLOT(quit()));
261184 loop.exec();
@@ -265,23 +188,13 @@ void XMLHttpRequestClass::send(const QScriptValue& data) { · 3 unmodified lines
265188
266189 void XMLHttpRequestClass::doSend() {
267190
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);
272193
273194 if (_timeout > 0) {
274195 _timer.start(_timeout);
275196 connect(&_timer, SIGNAL(timeout()), this, SLOT(requestTimeout()));
276197 }
277−
278− if (_url.isLocalFile()) {
279− setReadyState(HEADERS_RECEIVED);
280− setReadyState(LOADING);
281− _rawResponseData = _file->readAll();
282− _file->close();
283− requestFinished();
284− }
285198 }
286199
287200 void XMLHttpRequestClass::requestTimeout() {
@@ -300,16 +213,10 @@ void XMLHttpRequestClass::requestError(QNetworkReply::NetworkError code) { · 12 unmodified lines
300213 void XMLHttpRequestClass::requestFinished() {
301214 disconnect(&_timer, SIGNAL(timeout()), this, SLOT(requestTimeout()));
302215
303− if (!_url.isLocalFile()) {
304− _errorCode = _reply->error();
305− } else {
306− _errorCode = QNetworkReply::NoError;
307− }
216+ _errorCode = _reply->error();
308217
309218 if (_errorCode == QNetworkReply::NoError) {
310− if (!_url.isLocalFile()) {
311− _rawResponseData.append(_reply->readAll());
312− }
219+ _rawResponseData.append(_reply->readAll());
313220
314221 if (_responseType == "json") {
315222 _responseData = _engine->evaluate("(" + QString(_rawResponseData.data()) + ")");
@@ -338,19 +245,6 @@ void XMLHttpRequestClass::abortRequest() { · 22 unmodified lines
338245 _reply->deleteLater();
339246 _reply = NULL;
340247 }
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();
354248 }
355249
356250 void XMLHttpRequestClass::connectToReply(QNetworkReply* reply) {