qt/LedOK/JQLibrary/include/JQNet.h
2022-01-04 18:11:48 +08:00

199 lines
7.3 KiB
C++

/*
This file is part of JQLibrary
Copyright: Jason
Contact email: 188080501@qq.com
GNU Lesser General Public License Usage
Alternatively, this file may be used under the terms of the GNU Lesser
General Public License version 2.1 or version 3 as published by the Free
Software Foundation and appearing in the file LICENSE.LGPLv21 and
LICENSE.LGPLv3 included in the packaging of this file. Please review the
following information to ensure the GNU Lesser General Public License
requirements will be met: https://www.gnu.org/licenses/lgpl.html and
http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
*/
#ifndef JQLIBRARY_INCLUDE_JQNET_H_
#define JQLIBRARY_INCLUDE_JQNET_H_
#ifndef QT_NETWORK_LIB
# error("Please add network in pro file")
#endif
// C++ lib import
#include <functional>
// Qt lib import
#include <QSharedPointer>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QHttpMultiPart>
#include <QNetworkInterface>
#include <QNetworkAddressEntry>
// JQLibrary lib import
#include <JQDeclare>
namespace JQNet
{
QNetworkAddressEntry getNetworkAddressEntry();
QPair< QNetworkAddressEntry, QNetworkInterface > getNetworkAddressEntryWithNetworkInterface(const bool &ridVm = true);
QString getHostName();
bool tcpReachable(const QString &hostName, const quint16 &port, const int &timeout = 5000);
#ifdef JQFOUNDATION_LIB
bool pingIp(const QHostAddress &hostAddress);
#endif
class JQLIBRARY_EXPORT HTTP
{
Q_DISABLE_COPY( HTTP )
public:
HTTP() = default;
~HTTP() = default;
public:
inline QNetworkAccessManager &manage() { return manage_; }
bool get(
const QNetworkRequest &request,
QByteArray &target,
const int &timeout = 30 * 1000
);
void get(
const QNetworkRequest &request,
const std::function< void(const QList< QNetworkReply::RawHeaderPair > &, const QByteArray &data) > &onFinished,
const std::function< void(const QList< QNetworkReply::RawHeaderPair > &, const QNetworkReply::NetworkError &code, const QByteArray &data) > &onError,
const int &timeout = 30 * 1000
);
bool deleteResource(
const QNetworkRequest &request,
QByteArray &target,
const int &timeout = 30 * 1000
);
void deleteResource(
const QNetworkRequest &request,
const std::function< void(const QList< QNetworkReply::RawHeaderPair > &, const QByteArray &data) > &onFinished,
const std::function< void(const QList< QNetworkReply::RawHeaderPair > &, const QNetworkReply::NetworkError &code, const QByteArray &data) > &onError,
const int &timeout = 30 * 1000
);
bool post(
const QNetworkRequest &request,
const QByteArray &body,
QList< QNetworkReply::RawHeaderPair > &targetRawHeaderPairs,
QByteArray &target,
const int &timeout = 30 * 1000
);
bool post(
const QNetworkRequest &request,
const QSharedPointer< QHttpMultiPart > &multiPart,
QByteArray &target,
const int &timeout = 30 * 1000
);
void post(
const QNetworkRequest &request,
const QByteArray &body,
const std::function< void(const QList< QNetworkReply::RawHeaderPair > &, const QByteArray &data) > &onFinished,
const std::function< void(const QList< QNetworkReply::RawHeaderPair > &, const QNetworkReply::NetworkError &code, const QByteArray &data) > &onError,
const int &timeout = 30 * 1000
);
bool put(
const QNetworkRequest &request,
const QByteArray &body,
QByteArray &target,
const int &timeout = 30 * 1000
);
bool put(
const QNetworkRequest &request,
const QSharedPointer< QHttpMultiPart > &multiPart,
QByteArray &target,
const int &timeout = 30 * 1000
);
void put(
const QNetworkRequest &request,
const QByteArray &body,
const std::function< void(const QList< QNetworkReply::RawHeaderPair > &, const QByteArray &data) > &onFinished,
const std::function< void(const QList< QNetworkReply::RawHeaderPair > &, const QNetworkReply::NetworkError &code, const QByteArray &data) > &onError,
const int &timeout = 30 * 1000
);
#if !( defined Q_OS_LINUX ) && ( QT_VERSION >= QT_VERSION_CHECK( 5, 9, 0 ) )
bool patch(
const QNetworkRequest &request,
const QByteArray &body,
QByteArray &target,
const int &timeout = 30 * 1000
);
void patch(
const QNetworkRequest &request,
const QByteArray &body,
const std::function< void(const QList< QNetworkReply::RawHeaderPair > &, const QByteArray &data) > &onFinished,
const std::function< void(const QList< QNetworkReply::RawHeaderPair > &, const QNetworkReply::NetworkError &code, const QByteArray &data) > &onError,
const int &timeout = 30 * 1000
);
#endif
static QPair< bool, QByteArray > get(const QString &url, const int &timeout = 30 * 1000);
static QPair< bool, QByteArray > get(const QNetworkRequest &request, const int &timeout = 30 * 1000);
static QPair< bool, QByteArray > deleteResource(const QString &url, const int &timeout = 30 * 1000);
static QPair< bool, QByteArray > deleteResource(const QNetworkRequest &request, const int &timeout = 30 * 1000);
static QPair< bool, QByteArray > post(const QString &url, const QByteArray &body, const int &timeout = 30 * 1000);
static QPair< bool, QByteArray > post(const QNetworkRequest &request, const QByteArray &body, const int &timeout = 30 * 1000);
static QPair< bool, QPair< QList< QNetworkReply::RawHeaderPair >, QByteArray > > post2(const QNetworkRequest &request, const QByteArray &body, const int &timeout = 30 * 1000);
static QPair< bool, QByteArray > post(const QNetworkRequest &request, const QSharedPointer< QHttpMultiPart > &multiPart, const int &timeout = 30 * 1000);
static QPair< bool, QByteArray > put(const QString &url, const QByteArray &body, const int &timeout = 30 * 1000);
static QPair< bool, QByteArray > put(const QNetworkRequest &request, const QByteArray &body, const int &timeout = 30 * 1000);
static QPair< bool, QByteArray > put(const QNetworkRequest &request, const QSharedPointer< QHttpMultiPart > &multiPart, const int &timeout = 30 * 1000);
#if !( defined Q_OS_LINUX ) && ( QT_VERSION >= QT_VERSION_CHECK( 5, 9, 0 ) )
static QPair< bool, QByteArray > patch(const QString &url, const QByteArray &body, const int &timeout = 30 * 1000);
static QPair< bool, QByteArray > patch(const QNetworkRequest &request, const QByteArray &body, const int &timeout = 30 * 1000);
#endif
private:
void handle(
QNetworkReply *reply, const int &timeout,
const std::function< void(const QList< QNetworkReply::RawHeaderPair > &, const QByteArray &data) > &onFinished,
const std::function< void(const QList< QNetworkReply::RawHeaderPair > &, const QNetworkReply::NetworkError &code, const QByteArray &data) > &onError,
const std::function< void() > &onTimeout
);
private:
QNetworkAccessManager manage_;
};
}
#endif//JQLIBRARY_INCLUDE_JQNET_H_