TTKMusicPlayer  4.2.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicresourcerequest.cpp
Go to the documentation of this file.
1 #include "musicresourcerequest.h"
3 
4 #include "qsync/qsyncutils.h"
5 
6 static constexpr const char *QUERY_RESOURCE_DIR = "resource";
7 static constexpr const char *QUERY_RESOURCE_URL = "resource.json";
8 
10  : MusicAbstractNetwork(parent)
11 {
12 
13 }
14 
16 {
17  QNetworkRequest request;
19  TTK::setSslConfiguration(&request);
21 
22  m_reply = m_manager.get(request);
23  connect(m_reply, SIGNAL(finished()), SLOT(downLoadFinished()));
25 }
26 
28 {
29  TTK_INFO_STREAM(className() << __FUNCTION__);
30 
32  if(m_reply && m_reply->error() == QNetworkReply::NoError)
33  {
34  QDir dir(APPCACHE_DIR_FULL);
35  if(!dir.exists(QUERY_RESOURCE_DIR))
36  {
37  dir.mkdir(QUERY_RESOURCE_DIR);
38  }
39 
40  QJsonParseError ok;
41  const QJsonDocument &json = QJsonDocument::fromJson(m_reply->readAll(), &ok);
43  {
44  const QVariantList &datas = json.toVariant().toList();
45  for(const QVariant &var : qAsConst(datas))
46  {
47  const QVariantMap &value = var.toMap();
48  const QString &key = value["key"].toString();
49  const QString &path = APPCACHE_DIR_FULL + key;
50 
51  if(QDateTime::fromString(value["time"].toString(), TTK_DATE_FORMAT) > QFileInfo(path).lastModified())
52  {
54  d->startToRequest();
55  }
56  }
57  }
58  }
59 
60  deleteAll();
61 }
virtual void deleteAll()
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone) noexcept
QNetworkReply * m_reply
virtual void downLoadFinished() overridefinal
QVariant toVariant() const
static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error=0)
The class of the download the type of data.
static constexpr const char * QUERY_RESOURCE_DIR
virtual void downLoadFinished()
ParseError error
#define APPCACHE_DIR_FULL
Definition: musicobject.h:135
#define qAsConst
Definition: ttkqtglobal.h:57
TTK_MODULE_EXPORT void makeContentTypeHeader(QNetworkRequest *request, const QByteArray &data={}) noexcept
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:74
QNetworkAccessManager m_manager
static constexpr wchar_t key[]
virtual void replyError(QNetworkReply::NetworkError error) override
#define TTK_SLOT
Definition: ttkqtglobal.h:177
#define TTK_DATE_FORMAT
Definition: ttkglobal.h:309
The class of the abstract network.
TTK_MODULE_EXPORT QString toString(Record type) noexcept
virtual void startToRequest() override
static constexpr const char * QUERY_RESOURCE_URL
static QString makeDataBucketUrl()
Definition: qsyncutils.cpp:89
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
Definition: ttkqtcompat.h:59
MusicResourceRequest(QObject *parent=nullptr)