$END_LICENSE */
#include "jsfunctions.h"
-#include "networkaccess.h"
+#include "http.h"
#include "constants.h"
-#include "compatibility/qurlqueryhelper.h"
-#include "compatibility/pathsservice.h"
-namespace The {
-NetworkAccess* http();
-}
+#include <QJSValueIterator>
JsFunctions* JsFunctions::instance() {
static JsFunctions *i = new JsFunctions(QLatin1String(Constants::WEBSITE) + "-ws/functions.js");
if (js.isEmpty()) return;
// qDebug() << "Parsing" << js;
if (engine) delete engine;
- engine = new QScriptEngine(this);
+ engine = new QJSEngine(this);
engine->evaluate(js);
emit ready();
}
return QFileInfo(url).fileName();
}
+QString JsFunctions::jsDir() {
+ return QStandardPaths::writableLocation(QStandardPaths::DataLocation);
+}
+
QString JsFunctions::jsPath() {
- return Paths::getDataLocation() + "/" + jsFilename();
+ return jsDir() + QLatin1String("/") + jsFilename();
}
void JsFunctions::loadJs() {
QUrl url(this->url);
- {
- QUrlQueryHelper urlHelper(url);
- urlHelper.addQueryItem("v", Constants::VERSION);
- }
-
- NetworkReply* reply = The::http()->get(url);
+ QUrlQuery q;
+ q.addQueryItem("v", Constants::VERSION);
+ url.setQuery(q);
+ QObject* reply = Http::instance().get(url);
connect(reply, SIGNAL(data(QByteArray)), SLOT(gotJs(QByteArray)));
- connect(reply, SIGNAL(error(QNetworkReply*)), SLOT(errorJs(QNetworkReply*)));
+ connect(reply, SIGNAL(error(QString)), SLOT(errorJs(QString)));
}
void JsFunctions::gotJs(const QByteArray &bytes) {
qWarning() << "Got empty js";
return;
}
- if (!QDir().mkpath(Paths::getDataLocation())) {
- qCritical() << "Failed to create" << Paths::getDataLocation();
- return;
- }
+ QDir().mkpath(jsDir());
QFile file(jsPath());
if (!file.open(QIODevice::WriteOnly)) {
qWarning() << "Cannot write" << file.errorString() << file.fileName();
parseJs(QString::fromUtf8(bytes));
}
-void JsFunctions::errorJs(QNetworkReply *reply) {
- qWarning() << "Cannot get" << jsFilename() << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()
- << reply->url().toString() << reply->errorString();
+void JsFunctions::errorJs(const QString &message) {
+ qWarning() << message;
}
-QScriptValue JsFunctions::evaluate(const QString &js) {
+QJSValue JsFunctions::evaluate(const QString &js) {
if (!engine) return QString();
- QScriptValue value = engine->evaluate(js);
+ QJSValue value = engine->evaluate(js);
if (value.isUndefined())
qWarning() << "Undefined result for" << js;
if (value.isError())
QStringList JsFunctions::stringArray(const QString &js) {
QStringList items;
- QScriptValue array = evaluate(js);
+ QJSValue array = evaluate(js);
if (!array.isArray()) return items;
- QScriptValueIterator it(array);
+ QJSValueIterator it(array);
while (it.hasNext()) {
it.next();
- QScriptValue value = it.value();
+ QJSValue value = it.value();
if (!value.isString()) continue;
items << value.toString();
}