TTKMusicPlayer  4.3.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 - 2026 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 "ttkeventloop.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
48 public:
52  explicit TTKAbstractNetwork(QObject *parent = nullptr);
57 
61  virtual void deleteAll();
62 
66  inline void setHeader(const QString &key, const QVariant &value) noexcept { m_rawData[key] = value; }
70  inline const QVariant header(const QString &key) const noexcept { return m_rawData[key]; }
71 
72 Q_SIGNALS:
76  void downloadDataChanged(const QString &bytes);
80  void downloadRawDataChanged(const QByteArray &bytes);
81 
82 public Q_SLOTS:
87  virtual void downloadFinished();
91  virtual void replyError(QNetworkReply::NetworkError error);
92 #ifndef QT_NO_SSL
93 
96  virtual void sslErrors(QNetworkReply *reply, const QList<QSslError> &errors);
100  void sslErrorsString(QNetworkReply *reply, const QList<QSslError> &errors);
101 #endif
102 
103 protected:
104  QVariantMap m_rawData;
105  volatile bool m_interrupt;
107  QNetworkReply *m_reply;
108  QNetworkAccessManager m_manager;
109 
110 };
111 
112 #define TTK_NETWORK_QUERY_CHECK(VALUE) if(m_interrupt || m_stateCode != TTK::NetworkCode::Query) return VALUE
113 
117 namespace TTK
118 {
122  TTK_MODULE_EXPORT void setUserAgentHeader(QNetworkRequest *request, const QByteArray &data = {}) noexcept;
126  TTK_MODULE_EXPORT void setContentTypeHeader(QNetworkRequest *request, const QByteArray &data = {}) noexcept;
130  TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode = QSslSocket::VerifyNone) noexcept;
131 
135  TTK_MODULE_EXPORT qint64 fetchFileSizeByUrl(const QString &url);
136 
140  TTK_MODULE_EXPORT QByteArray syncNetworkQueryForGet(QNetworkRequest *request);
144  TTK_MODULE_EXPORT QByteArray syncNetworkQueryForPost(QNetworkRequest *request, const QByteArray &data);
148  TTK_MODULE_EXPORT QByteArray syncNetworkQueryForPut(QNetworkRequest *request, const QByteArray &data);
152  TTK_MODULE_EXPORT QByteArray syncNetworkQueryForPatch(QNetworkRequest *request, const QByteArray &data);
153 
154 }
155 
156 #endif // TTKABSTRACTNETWORK_H
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForPost(QNetworkRequest *request, const QByteArray &data)
TTK_MODULE_EXPORT qint64 fetchFileSizeByUrl(const QString &url)
#define TTK_MODULE_EXPORT
TTK_MODULE_EXPORT void setUserAgentHeader(QNetworkRequest *request, const QByteArray &data={}) noexcept
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForPatch(QNetworkRequest *request, const QByteArray &data)
TTK_MODULE_EXPORT void setSslConfiguration(QNetworkRequest *request, QSslSocket::PeerVerifyMode mode=QSslSocket::VerifyNone) noexcept
QNetworkReply * m_reply
const QVariant header(const QString &key) const noexcept
volatile TTK::NetworkCode m_stateCode
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForGet(QNetworkRequest *request)
void setHeader(const QString &key, const QVariant &value) noexcept
volatile bool m_interrupt
The namespace of the application object.
Definition: ttkcompat.h:24
QNetworkAccessManager m_manager
static constexpr wchar_t key[]
TTK_MODULE_EXPORT void setContentTypeHeader(QNetworkRequest *request, const QByteArray &data={}) noexcept
TTK_MODULE_EXPORT QByteArray syncNetworkQueryForPut(QNetworkRequest *request, const QByteArray &data)
The class of the ttk abstract network.
const char int mode
Definition: ioapi.h:135