TTKMusicPlayer  3.7.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 *OS_RESOURCE_DIR = "resource";
7 static constexpr const char *OS_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() << "downLoadFinished");
30 
32  if(m_reply && m_reply->error() == QNetworkReply::NoError)
33  {
34  QDir dir(APPCACHE_DIR_FULL);
35  if(!dir.exists(OS_RESOURCE_DIR))
36  {
37  dir.mkdir(OS_RESOURCE_DIR);
38  }
39 
40  QJson::Parser json;
41  bool ok = false;
42  const QVariant &data = json.parse(m_reply->readAll(), &ok);
43  if(ok)
44  {
45  const QVariantList &datas = data.toList();
46  for(const QVariant &var : qAsConst(datas))
47  {
48  const QVariantMap &value = var.toMap();
49  const QString &key = value["key"].toString();
50  const QString &path = APPCACHE_DIR_FULL + key;
51 
52  if(QDateTime::fromString(value["time"].toString(), TTK_DATE_FORMAT) > QFileInfo(path).lastModified())
53  {
55  d->startToRequest();
56  }
57  }
58  }
59  }
60 
61  deleteAll();
62 }
virtual void deleteAll()
QNetworkReply * m_reply
virtual void downLoadFinished() overridefinal
static constexpr wchar_t key[]
The class of the download the type of data.
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone)
virtual void downLoadFinished()
static constexpr const char * OS_RESOURCE_DIR
#define APPCACHE_DIR_FULL
Definition: musicobject.h:121
#define qAsConst
Definition: ttkqtglobal.h:53
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:67
QNetworkAccessManager m_manager
virtual void replyError(QNetworkReply::NetworkError error) override
QVariant parse(QIODevice *io, bool *ok=0)
Read JSON string from the I/O Device and converts it to a QVariant object.
Definition: parser.cpp:69
#define TTK_SLOT
Definition: ttkqtglobal.h:165
#define TTK_DATE_FORMAT
Definition: ttkglobal.h:231
The class of the abstract network.
TTK_MODULE_EXPORT void makeContentTypeHeader(QNetworkRequest *request, const QByteArray &data={})
TTK_MODULE_EXPORT QString toString(Record type)
static constexpr const char * OS_RESOURCE_URL
Main class used to convert JSON data to QVariant objects.
Definition: parser.h:40
virtual void startToRequest() override
static QString makeDataBucketUrl()
Definition: qsyncutils.cpp:90
#define QtNetworkErrorConnect(p, q, f, s)
Network error connect.
Definition: ttkqtcompat.h:59
MusicResourceRequest(QObject *parent=nullptr)