]> git.sur5r.net Git - minitube/blobdiff - src/yt3.cpp
New upstream version 2.9
[minitube] / src / yt3.cpp
index b42e204a03c6e2cd1444d41c36e1515935cc27f0..3703a8cf2b127ce70b464785d8c8b3d50b82083c 100644 (file)
@@ -4,9 +4,10 @@
 #include <ctime>
 
 #include "jsfunctions.h"
-#include "networkaccess.h"
+#include "http.h"
+#include "httputils.h"
 #include "constants.h"
-#include "compatibility/qurlqueryhelper.h"
+#include "mainwindow.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 = new YT3();
     return *i;
 }
 
+const QString &YT3::baseUrl() {
+    static const QString base = "https://www.googleapis.com/youtube/v3/";
+    return base;
+}
+
 YT3::YT3() {
+    initApiKeys();
+}
+
+void YT3::initApiKeys() {
+    keys.clear();
+
     QByteArray customApiKey = qgetenv("GOOGLE_API_KEY");
     if (!customApiKey.isEmpty()) {
         keys << QString::fromUtf8(customApiKey);
@@ -53,37 +61,36 @@ YT3::YT3() {
 
     if (keys.isEmpty()) {
         qWarning() << "No available API keys";
+#ifdef APP_LINUX
+        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::yt().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) {
@@ -92,8 +99,8 @@ QUrl YT3::method(const QString &name) {
     return url;
 }
 
-void YT3::testResponse(QNetworkReply *reply) {
-    int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+void YT3::testResponse(const HttpReply &reply) {
+    int status = reply.statusCode();
     if (status != 200) {
         if (keys.isEmpty()) {
             qWarning() << "Fatal error: No working API keys!";