9#include <QNetworkRequest>
11#include <QApplication>
18#define LOC QString("[mhegic] ")
23 setObjectName(
"MHInteractionChannel");
31 for (
const auto & req : std::as_const(
m_pending))
33 for (
const auto & req : std::as_const(
m_finished))
43 LOG(VB_MHEG, LOG_INFO,
LOC +
"WARN network is unavailable");
50 QStringList
opts = qEnvironmentVariable(
"MYTHMHEG").split(
':');
51 if (
opts.contains(
"noice", Qt::CaseInsensitive))
53 if (
opts.contains(
"ice", Qt::CaseInsensitive))
82 LOG(VB_MHEG, LOG_DEBUG,
LOC + QString(
"CheckFile queue %1").arg(csPath));
84 if (!
p || !
p->IsOpen())
86 LOG(VB_MHEG, LOG_WARNING,
LOC + QString(
"CheckFile failed %1").arg(csPath) );
99 const QByteArray &cert )
109 std::unique_ptr< NetStream >
p(
m_finished.take(url));
112 if (
p->GetError() == QNetworkReply::NoError)
115 LOG(VB_MHEG, LOG_DEBUG,
LOC + QString(
"GetFile finished %1").arg(csPath) );
119 LOG(VB_MHEG, LOG_WARNING,
LOC + QString(
"GetFile failed %1").arg(csPath) );
126 LOG(VB_MHEG, LOG_DEBUG,
LOC + QString(
"GetFile cache read %1").arg(csPath) );
134 LOG(VB_MHEG, LOG_DEBUG,
LOC + QString(
"GetFile cache read %1 bytes %2")
135 .arg(data.size()).arg(csPath) );
139 LOG(VB_MHEG, LOG_WARNING,
LOC + QString(
"GetFile cache read failed %1").arg(csPath) );
146 LOG(VB_MHEG, LOG_DEBUG,
LOC + QString(
"GetFile queue %1").arg(csPath) );
148 if (!
p || !
p->IsOpen())
150 LOG(VB_MHEG, LOG_WARNING,
LOC + QString(
"GetFile failed %1").arg(csPath) );
163 auto*
p = qobject_cast< NetStream* >(obj);
169 if (
p->GetError() == QNetworkReply::NoError)
171 LOG(VB_MHEG, LOG_DEBUG,
LOC + QString(
"Finished %1").arg(url.toString()) );
175 LOG(VB_MHEG, LOG_WARNING,
LOC + QString(
"Finished %1").arg(
p->GetErrorString()) );
183 LOG(VB_GENERAL, LOG_WARNING,
LOC + QString(
"Finished %1 wasn't pending").arg(url.toString()) );
EResult GetFile(const QString &csPath, QByteArray &data, const QByteArray &cert=QByteArray())
bool CheckFile(const QString &csPath, const QByteArray &cert=QByteArray())
void slotFinished(QObject *obj)
~MHInteractionChannel() override
MHInteractionChannel(QObject *parent=nullptr)
bool GetBoolSetting(const QString &key, bool defaultval=false)
static NAMThread & manager()
NetworkAccessManager event loop thread.
Stream content from a URI.
static bool isAvailable()
Public helpers.
QNetworkReply::NetworkError GetError() const
static QDateTime GetLastModified(const QUrl &url)
bool WaitTillFinished(std::chrono::milliseconds timeout)
static bool isCached(const QUrl &url)
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
#define LOG(_MASK_, _LEVEL_, _QSTRING_)