JQNet.h 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. /*
  2. This file is part of JQLibrary
  3. Copyright: Jason
  4. Contact email: 188080501@qq.com
  5. GNU Lesser General Public License Usage
  6. Alternatively, this file may be used under the terms of the GNU Lesser
  7. General Public License version 2.1 or version 3 as published by the Free
  8. Software Foundation and appearing in the file LICENSE.LGPLv21 and
  9. LICENSE.LGPLv3 included in the packaging of this file. Please review the
  10. following information to ensure the GNU Lesser General Public License
  11. requirements will be met: https://www.gnu.org/licenses/lgpl.html and
  12. http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
  13. */
  14. #ifndef JQLIBRARY_INCLUDE_JQNET_H_
  15. #define JQLIBRARY_INCLUDE_JQNET_H_
  16. #ifndef QT_NETWORK_LIB
  17. # error("Please add network in pro file")
  18. #endif
  19. // C++ lib import
  20. #include <functional>
  21. // Qt lib import
  22. #include <QSharedPointer>
  23. #include <QNetworkAccessManager>
  24. #include <QNetworkReply>
  25. #include <QHttpMultiPart>
  26. #include <QNetworkInterface>
  27. #include <QNetworkAddressEntry>
  28. namespace JQNet
  29. {
  30. QNetworkAddressEntry getNetworkAddressEntry();
  31. QPair< QNetworkAddressEntry, QNetworkInterface > getNetworkAddressEntryWithNetworkInterface(const bool &ridVm = true);
  32. QString getHostName();
  33. #ifdef JQFOUNDATION_LIB
  34. bool pingIp(const QHostAddress &hostAddress);
  35. #endif
  36. class HTTP
  37. {
  38. Q_DISABLE_COPY( HTTP )
  39. public:
  40. HTTP() = default;
  41. ~HTTP() = default;
  42. public:
  43. inline QNetworkAccessManager &manage() { return manage_; }
  44. bool get(
  45. const QNetworkRequest &request,
  46. QByteArray &target,
  47. const int &timeout = 30 * 1000
  48. );
  49. void get(
  50. const QNetworkRequest &request,
  51. const std::function< void(const QByteArray &data) > &onFinished,
  52. const std::function< void(const QNetworkReply::NetworkError &code, const QByteArray &data) > &onError,
  53. const int &timeout = 30 * 1000
  54. );
  55. bool deleteResource(
  56. const QNetworkRequest &request,
  57. QByteArray &target,
  58. const int &timeout = 30 * 1000
  59. );
  60. void deleteResource(
  61. const QNetworkRequest &request,
  62. const std::function< void(const QByteArray &data) > &onFinished,
  63. const std::function< void(const QNetworkReply::NetworkError &code, const QByteArray &data) > &onError,
  64. const int &timeout = 30 * 1000
  65. );
  66. bool post(
  67. const QNetworkRequest &request,
  68. const QByteArray &body,
  69. QByteArray &target,
  70. const int &timeout = 30 * 1000
  71. );
  72. bool post(
  73. const QNetworkRequest &request,
  74. const QSharedPointer< QHttpMultiPart > &multiPart,
  75. QByteArray &target,
  76. const int &timeout = 30 * 1000
  77. );
  78. void post(
  79. const QNetworkRequest &request,
  80. const QByteArray &body,
  81. const std::function< void(const QByteArray &data) > &onFinished,
  82. const std::function< void(const QNetworkReply::NetworkError &code, const QByteArray &data) > &onError,
  83. const int &timeout = 30 * 1000
  84. );
  85. bool put(
  86. const QNetworkRequest &request,
  87. const QByteArray &body,
  88. QByteArray &target,
  89. const int &timeout = 30 * 1000
  90. );
  91. bool put(
  92. const QNetworkRequest &request,
  93. const QSharedPointer< QHttpMultiPart > &multiPart,
  94. QByteArray &target,
  95. const int &timeout = 30 * 1000
  96. );
  97. void put(
  98. const QNetworkRequest &request,
  99. const QByteArray &body,
  100. const std::function< void(const QByteArray &data) > &onFinished,
  101. const std::function< void(const QNetworkReply::NetworkError &code, const QByteArray &data) > &onError,
  102. const int &timeout = 30 * 1000
  103. );
  104. #if !( defined Q_OS_LINUX ) && ( QT_VERSION >= QT_VERSION_CHECK( 5, 9, 0 ) )
  105. bool patch(
  106. const QNetworkRequest &request,
  107. const QByteArray &body,
  108. QByteArray &target,
  109. const int &timeout = 30 * 1000
  110. );
  111. void patch(
  112. const QNetworkRequest &request,
  113. const QByteArray &body,
  114. const std::function< void(const QByteArray &data) > &onFinished,
  115. const std::function< void(const QNetworkReply::NetworkError &code, const QByteArray &data) > &onError,
  116. const int &timeout = 30 * 1000
  117. );
  118. #endif
  119. static QPair< bool, QByteArray > get(const QString &url, const int &timeout = 30 * 1000);
  120. static QPair< bool, QByteArray > get(const QNetworkRequest &request, const int &timeout = 30 * 1000);
  121. static QPair< bool, QByteArray > deleteResource(const QString &url, const int &timeout = 30 * 1000);
  122. static QPair< bool, QByteArray > deleteResource(const QNetworkRequest &request, const int &timeout = 30 * 1000);
  123. static QPair< bool, QByteArray > post(const QString &url, const QByteArray &body, const int &timeout = 30 * 1000);
  124. static QPair< bool, QByteArray > post(const QNetworkRequest &request, const QByteArray &body, const int &timeout = 30 * 1000);
  125. static QPair< bool, QByteArray > post(const QNetworkRequest &request, const QSharedPointer< QHttpMultiPart > &multiPart, const int &timeout = 30 * 1000);
  126. static QPair< bool, QByteArray > put(const QString &url, const QByteArray &body, const int &timeout = 30 * 1000);
  127. static QPair< bool, QByteArray > put(const QNetworkRequest &request, const QByteArray &body, const int &timeout = 30 * 1000);
  128. static QPair< bool, QByteArray > put(const QNetworkRequest &request, const QSharedPointer< QHttpMultiPart > &multiPart, const int &timeout = 30 * 1000);
  129. #if !( defined Q_OS_LINUX ) && ( QT_VERSION >= QT_VERSION_CHECK( 5, 9, 0 ) )
  130. static QPair< bool, QByteArray > patch(const QString &url, const QByteArray &body, const int &timeout = 30 * 1000);
  131. static QPair< bool, QByteArray > patch(const QNetworkRequest &request, const QByteArray &body, const int &timeout = 30 * 1000);
  132. #endif
  133. private:
  134. void handle(
  135. QNetworkReply *reply, const int &timeout,
  136. const std::function< void(const QByteArray &data) > &onFinished,
  137. const std::function< void(const QNetworkReply::NetworkError &code, const QByteArray &data) > &onError,
  138. const std::function< void() > &onTimeout
  139. );
  140. private:
  141. QNetworkAccessManager manage_;
  142. };
  143. }
  144. #endif//JQLIBRARY_INCLUDE_JQNET_H_