TTKMusicPlayer  4.2.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicpvcounterrequest.cpp
Go to the documentation of this file.
2 
3 #include "qsync/qsyncutils.h"
4 
5 static constexpr const char *QUERY_COUNTER_URL = "resource/counter";
6 
8  : MusicAbstractNetwork(parent)
9 {
10 
11 }
12 
14 {
15  QByteArray bytes;
17  if(file.open(QIODevice::ReadOnly))
18  {
19  TTK_INFO_STREAM("PV counter using local resource config");
20  bytes = file.readAll();
21  file.close();
22  }
23  else
24  {
25  TTK_INFO_STREAM("PV counter using network resource config");
26  QNetworkRequest request;
28  bytes = TTK::syncNetworkQueryForGet(&request);
29  }
30 
31  if(bytes.isEmpty())
32  {
33  TTK_ERROR_STREAM("Counter PV data error");
35  return;
36  }
37 
38  QNetworkRequest request;
39  request.setUrl(QString::fromUtf8(bytes));
40  TTK::setSslConfiguration(&request);
42 
43  m_reply = m_manager.get(request);
44  connect(m_reply, SIGNAL(finished()), SLOT(downLoadFinished()));
46 }
47 
49 {
50  TTK_INFO_STREAM(className() << __FUNCTION__);
51 
52  QString pv = TTK_DEFAULT_STR;
54  if(m_reply && m_reply->error() == QNetworkReply::NoError)
55  {
56  QJsonParseError ok;
57  const QJsonDocument &json = QJsonDocument::fromJson(m_reply->readAll(), &ok);
59  {
60  QVariantMap value = json.toVariant().toMap();
61  if(value.contains("data"))
62  {
63  value = value["data"].toMap();
64 
65  if(value.contains("page_pv"))
66  {
67  pv = value["page_pv"].toString();
68  }
69  else if(value.contains("site_pv"))
70  {
71  pv = value["site_pv"].toString();
72  }
73  }
74  }
75  }
76 
77  Q_EMIT downLoadDataChanged(pv);
78  deleteAll();
79 }
MusicPVCounterRequest(QObject *parent=nullptr)
virtual void downLoadFinished() overridefinal
virtual void deleteAll()
void downLoadDataChanged(const QString &bytes)
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone) noexcept
QNetworkReply * m_reply
#define TTK_DEFAULT_STR
Definition: ttkglobal.h:276
QVariant toVariant() const
static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error=0)
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForGet(QNetworkRequest *request)
virtual void downLoadFinished()
ParseError error
#define APPCACHE_DIR_FULL
Definition: musicobject.h:135
TTK_MODULE_EXPORT void makeContentTypeHeader(QNetworkRequest *request, const QByteArray &data={}) noexcept
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:74
QNetworkAccessManager m_manager
virtual void replyError(QNetworkReply::NetworkError error) override
#define TTK_SLOT
Definition: ttkqtglobal.h:177
The class of the abstract network.
static constexpr const char * QUERY_COUNTER_URL
#define TTK_ERROR_STREAM(msg)
Definition: ttklogger.h:76
static QString makeDataBucketUrl()
Definition: qsyncutils.cpp:89
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
Definition: ttkqtcompat.h:59