Warning, file /utilities/telly-skout/src/networkdataprovider.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // SPDX-FileCopyrightText: 2023 Plata Hill <plata.hill@kdemail.net>
0002 // SPDX-License-Identifier: LGPL-2.1-or-later
0003 
0004 #include "networkdataprovider.h"
0005 
0006 #include <QNetworkAccessManager>
0007 #include <QNetworkReply>
0008 #include <QNetworkRequest>
0009 #include <QStandardPaths>
0010 
0011 NetworkDataProvider::NetworkDataProvider(QNetworkAccessManager *nam)
0012 {
0013     if (nam) {
0014         m_manager = nam;
0015     } else {
0016         m_manager = new QNetworkAccessManager(this);
0017         m_manager->setRedirectPolicy(QNetworkRequest::NoLessSafeRedirectPolicy);
0018         m_manager->setStrictTransportSecurityEnabled(true);
0019         m_manager->enableStrictTransportSecurityStore(true, QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1String("/hsts/"));
0020     }
0021 }
0022 
0023 void NetworkDataProvider::get(const QUrl &url, std::function<void(const QByteArray &)> callback, std::function<void(const Error &)> errorCallback) const
0024 {
0025     QNetworkRequest request(url);
0026     request.setRawHeader("User-Agent", "telly-skout/0.1");
0027     QNetworkReply *reply = m_manager->get(request);
0028     connect(reply, &QNetworkReply::finished, this, [reply, callback, errorCallback]() {
0029         if (reply->error() == QNetworkReply::NoError) {
0030             callback(reply->readAll());
0031         } else {
0032             errorCallback(Error(reply->error(), reply->errorString()));
0033         }
0034 
0035         reply->deleteLater();
0036     });
0037 }