TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
ttkabstractnetwork.h
Go to the documentation of this file.
1 #ifndef TTKABSTRACTNETWORK_H
2 #define TTKABSTRACTNETWORK_H
3 
4 /***************************************************************************
5  * This file is part of the TTK Library Module project
6  * Copyright (C) 2015 - 2024 Greedysky Studio
7 
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU Lesser General Public License as published by
10  * the Free Software Foundation; either version 3 of the License, or
11  * (at your option) any later version.
12 
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU Lesser General Public License for more details.
17 
18  * You should have received a copy of the GNU Lesser General Public License along
19  * with this program; If not, see <http://www.gnu.org/licenses/>.
20  ***************************************************************************/
21 
22 #include <QNetworkReply>
23 #include <QSslConfiguration>
24 
25 #include "ttktime.h"
26 #include "ttksemaphoreloop.h"
27 
31 namespace TTK
32 {
33  enum class NetworkCode
34  {
35  Query = 0xFF00,
36  Success = 0,
37  Error = -1,
38  UnKnow = 2,
39  };
40 }
41 
45 class TTK_MODULE_EXPORT TTKAbstractNetwork : public QObject
46 {
47  Q_OBJECT
49 public:
53  explicit TTKAbstractNetwork(QObject *parent = nullptr);
58 
62  virtual void deleteAll();
63 
67  inline void setHeader(const QString &key, const QVariant &value) { m_rawData[key] = value; }
71  inline const QVariant header(const QString &key) const { return m_rawData[key]; }
72 
73 Q_SIGNALS:
77  void downLoadDataChanged(const QString &bytes);
81  void downLoadRawDataChanged(const QByteArray &bytes);
82 
83 public Q_SLOTS:
88  virtual void downLoadFinished();
92  virtual void replyError(QNetworkReply::NetworkError error);
93 #ifndef QT_NO_SSL
94 
97  virtual void sslErrors(QNetworkReply *reply, const QList<QSslError> &errors);
101  void sslErrorsString(QNetworkReply *reply, const QList<QSslError> &errors);
102 #endif
103 
104 protected:
105  QVariantMap m_rawData;
106  volatile bool m_interrupt;
108  QNetworkReply *m_reply;
109  QNetworkAccessManager m_manager;
110 
111 };
112 
113 #define TTK_NETWORK_QUERY_CHECK(VALUE) if(m_interrupt || m_stateCode != TTK::NetworkCode::Query) return VALUE
114 
118 namespace TTK
119 {
123  TTK_MODULE_EXPORT void makeContentTypeHeader(QNetworkRequest *request, const QByteArray &data = {});
127  TTK_MODULE_EXPORT void makeUserAgentHeader(QNetworkRequest *request, const QByteArray &data = {});
128 
132  TTK_MODULE_EXPORT qint64 queryFileSizeByUrl(const QString &url);
136  TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode = QSslSocket::VerifyNone);
137 
141  TTK_MODULE_EXPORT QByteArray syncNetworkQueryForGet(QNetworkRequest *request);
145  TTK_MODULE_EXPORT QByteArray syncNetworkQueryForPost(QNetworkRequest *request, const QByteArray &data);
146 
147 }
148 
149 #endif // TTKABSTRACTNETWORK_H
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForPost(QNetworkRequest *request, const QByteArray &data)
#define TTK_MODULE_EXPORT
QNetworkReply * m_reply
TTK_MODULE_EXPORT void makeUserAgentHeader(QNetworkRequest *request, const QByteArray &data={})
volatile TTK::NetworkCode m_stateCode
TTK_MODULE_EXPORT qint64 queryFileSizeByUrl(const QString &url)
static constexpr wchar_t key[]
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone)
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForGet(QNetworkRequest *request)
volatile bool m_interrupt
The namespace of the process utils.
Definition: ttkcompat.h:24
const QVariant header(const QString &key) const
QNetworkAccessManager m_manager
#define TTK_DECLARE_MODULE(Class)
Definition: ttkqtglobal.h:152
void setHeader(const QString &key, const QVariant &value)
TTK_MODULE_EXPORT void makeContentTypeHeader(QNetworkRequest *request, const QByteArray &data={})
The class of the ttk abstract network.
const char int mode
Definition: ioapi.h:135