#include <algorithm>
#include <ctime>
-#include "jsfunctions.h"
-#include "networkaccess.h"
#include "constants.h"
-#include "compatibility/qurlqueryhelper.h"
+#include "http.h"
+#include "httputils.h"
+#include "jsfunctions.h"
+#include "mainwindow.h"
+#include "videodefinition.h"
#ifdef APP_EXTRA
#include "extra.h"
#define STR(x) #x
#define STRINGIFY(x) STR(x)
-namespace The {
-NetworkAccess* http();
+YT3 &YT3::instance() {
+ static YT3 i;
+ return i;
}
-YT3 &YT3::instance() {
- static YT3 *i = new YT3();
- return *i;
+const QString &YT3::baseUrl() {
+ static const QString base = "https://www.googleapis.com/youtube/v3/";
+ return base;
}
YT3::YT3() {
+}
+
+void YT3::initApiKeys() {
+ keys.clear();
+
QByteArray customApiKey = qgetenv("GOOGLE_API_KEY");
if (!customApiKey.isEmpty()) {
keys << QString::fromUtf8(customApiKey);
#endif
#ifdef APP_EXTRA
- if (keys.isEmpty())
- keys << Extra::apiKeys();
+ if (keys.isEmpty()) keys << Extra::apiKeys();
#endif
if (keys.isEmpty()) {
qWarning() << "No available API keys";
+#ifdef APP_LINUX_NO
+ QMetaObject::invokeMethod(MainWindow::instance(), "missingKeyWarning",
+ Qt::QueuedConnection);
+#endif
} else {
key = keys.takeFirst();
if (!keys.isEmpty()) testApiKey();
}
}
-const QString &YT3::baseUrl() {
- static const QString base = "https://www.googleapis.com/youtube/v3/";
- return base;
-}
-
void YT3::testApiKey() {
QUrl url = method("videos");
- {
- QUrlQueryHelper urlHelper(url);
- urlHelper.addQueryItem("part", "id");
- urlHelper.addQueryItem("chart", "mostPopular");
- urlHelper.addQueryItem("maxResults", "1");
- }
- QObject *reply = The::http()->get(url);
- connect(reply, SIGNAL(finished(QNetworkReply*)), SLOT(testResponse(QNetworkReply*)));
+ QUrlQuery q(url);
+ q.addQueryItem("part", "id");
+ q.addQueryItem("chart", "mostPopular");
+ q.addQueryItem("maxResults", "1");
+ url.setQuery(q);
+ QObject *reply = HttpUtils::stealthAndNotCached().get(url);
+ connect(reply, SIGNAL(finished(HttpReply)), SLOT(testResponse(HttpReply)));
}
void YT3::addApiKey(QUrl &url) {
if (key.isEmpty()) {
qDebug() << __PRETTY_FUNCTION__ << "empty key";
+ initApiKeys();
return;
}
- QUrlQueryHelper urlHelper(url);
- urlHelper.addQueryItem("key", key);
+ QUrlQuery q(url);
+ q.addQueryItem("key", key);
+ url.setQuery(q);
}
QUrl YT3::method(const QString &name) {
return url;
}
-void YT3::testResponse(QNetworkReply *reply) {
- int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+const VideoDefinition &YT3::maxVideoDefinition() {
+ const QString name = QSettings().value("definition", "720p").toString();
+ const VideoDefinition &definition = VideoDefinition::forName(name);
+ return definition;
+}
+
+void YT3::setMaxVideoDefinition(const QString &name) {
+ QSettings settings;
+ settings.setValue("definition", name);
+ emit maxVideoDefinitionChanged(name);
+}
+
+void YT3::testResponse(const HttpReply &reply) {
+ int status = reply.statusCode();
if (status != 200) {
if (keys.isEmpty()) {
qWarning() << "Fatal error: No working API keys!";