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