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 }