• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 Unionman Technology Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef JQLIBRARY_INCLUDE_JQNET_H
17 #define JQLIBRARY_INCLUDE_JQNET_H
18 
19 #ifndef QT_NETWORK_LIB
20 #error("Please add network in pro file")
21 #endif
22 
23 // C++ lib import
24 #include <functional>
25 
26 // Qt lib import
27 #include <QHttpMultiPart>
28 #include <QNetworkAccessManager>
29 #include <QNetworkAddressEntry>
30 #include <QNetworkInterface>
31 #include <QNetworkReply>
32 #include <QSharedPointer>
33 
34 namespace JQNet {
35 
36     QNetworkAddressEntry getNetworkAddressEntry();
37 
38     QPair<QNetworkAddressEntry, QNetworkInterface> getNetworkAddressEntryWithNetworkInterface(const bool& ridVm = true);
39 
40     QString getHostName();
41 
42 #ifdef JQFOUNDATION_LIB
43     bool pingIp(const QHostAddress& hostAddress);
44 #endif
45 
46     class HTTP {
47         Q_DISABLE_COPY(HTTP)
48 
49     public:
50         HTTP() = default;
51 
52         ~HTTP() = default;
53 
54     public:
manage()55         inline QNetworkAccessManager& manage()
56         {
57             return manage_;
58         }
59         bool get(const QNetworkRequest& request, QByteArray& target, const int& timeout = 30 * 1000);
60 
61         void get(const QNetworkRequest& request, const std::function<void(const QByteArray& data)>& onFinished,
62             const std::function<void(const QNetworkReply::NetworkError& code, const QByteArray& data)>& onError,
63             const int& timeout = 30 * 1000);
64 
65         bool deleteResource(const QNetworkRequest& request, QByteArray& target, const int& timeout = 30 * 1000);
66 
67         void deleteResource(const QNetworkRequest& request,
68             const std::function<void(const QByteArray& data)>& onFinished,
69             const std::function<void(const QNetworkReply::NetworkError& code, const QByteArray& data)>& onError,
70             const int& timeout = 30 * 1000);
71 
72         bool post(
73             const QNetworkRequest& request, const QByteArray& body, QByteArray& target, const int& timeout = 30 * 1000);
74 
75         bool post(const QNetworkRequest& request, const QSharedPointer<QHttpMultiPart>& multiPart, QByteArray& target,
76             const int& timeout = 30 * 1000);
77 
78         void post(const QNetworkRequest& request, const QByteArray& body,
79             const std::function<void(const QByteArray& data)>& onFinished,
80             const std::function<void(const QNetworkReply::NetworkError& code, const QByteArray& data)>& onError,
81             const int& timeout = 30 * 1000);
82 
83         bool put(
84             const QNetworkRequest& request, const QByteArray& body, QByteArray& target, const int& timeout = 30 * 1000);
85 
86         bool put(const QNetworkRequest& request, const QSharedPointer<QHttpMultiPart>& multiPart, QByteArray& target,
87             const int& timeout = 30 * 1000);
88 
89         void put(const QNetworkRequest& request, const QByteArray& body,
90             const std::function<void(const QByteArray& data)>& onFinished,
91             const std::function<void(const QNetworkReply::NetworkError& code, const QByteArray& data)>& onError,
92             const int& timeout = 30 * 1000);
93 
94 #if !(defined Q_OS_LINUX) && (QT_VERSION >= QT_VERSION_CHECK(5, 9, 0))
95         bool patch(
96             const QNetworkRequest& request, const QByteArray& body, QByteArray& target, const int& timeout = 30 * 1000);
97 
98         void patch(const QNetworkRequest& request, const QByteArray& body,
99             const std::function<void(const QByteArray& data)>& onFinished,
100             const std::function<void(const QNetworkReply::NetworkError& code, const QByteArray& data)>& onError,
101             const int& timeout = 30 * 1000);
102 #endif
103         static QPair<bool, QByteArray> get(const QString& url, const int& timeout = 30 * 1000);
104 
105         static QPair<bool, QByteArray> get(const QNetworkRequest& request, const int& timeout = 30 * 1000);
106 
107         static QPair<bool, QByteArray> deleteResource(const QString& url, const int& timeout = 30 * 1000);
108 
109         static QPair<bool, QByteArray> deleteResource(const QNetworkRequest& request, const int& timeout = 30 * 1000);
110 
111         static QPair<bool, QByteArray> post(const QString& url, const QByteArray& body, const int& timeout = 30 * 1000);
112 
113         static QPair<bool, QByteArray> post(
114             const QNetworkRequest& request, const QByteArray& body, const int& timeout = 30 * 1000);
115 
116         static QPair<bool, QByteArray> post(const QNetworkRequest& request,
117             const QSharedPointer<QHttpMultiPart>& multiPart, const int& timeout = 30 * 1000);
118 
119         static QPair<bool, QByteArray> put(const QString& url, const QByteArray& body, const int& timeout = 30 * 1000);
120 
121         static QPair<bool, QByteArray> put(
122             const QNetworkRequest& request, const QByteArray& body, const int& timeout = 30 * 1000);
123 
124         static QPair<bool, QByteArray> put(const QNetworkRequest& request,
125             const QSharedPointer<QHttpMultiPart>& multiPart, const int& timeout = 30 * 1000);
126 
127 #if !(defined Q_OS_LINUX) && (QT_VERSION >= QT_VERSION_CHECK(5, 9, 0))
128         static QPair<bool, QByteArray> patch(
129             const QString& url, const QByteArray& body, const int& timeout = 30 * 1000);
130 
131         static QPair<bool, QByteArray> patch(
132             const QNetworkRequest& request, const QByteArray& body, const int& timeout = 30 * 1000);
133 #endif
134 
135     private:
136         void handle(QNetworkReply* reply, const int& timeout,
137             const std::function<void(const QByteArray& data)>& onFinished,
138             const std::function<void(const QNetworkReply::NetworkError& code, const QByteArray& data)>& onError,
139             const std::function<void()>& onTimeout);
140 
141     private:
142         QNetworkAccessManager manage_;
143     };
144 
145 }
146 
147 #endif // JQLIBRARY_INCLUDE_JQNET_H_
148