3#include <QtCore/QJsonDocument>
6#include <QtCore/QString>
8#include <QtCore/QVariant>
9#include <QtHttpServer/QHttpServerRequest>
10#include <QtHttpServer/QHttpServerResponder>
11#include <QtNetwork/QHttpPart>
12#include <QtNetwork/QNetworkReply>
13#include <QtNetwork/QNetworkRequest>
14#include <QtNetwork/QSslConfiguration>
17class QNetworkAccessManager;
72 return statusCode >= 200 && statusCode < 300;
78 return statusCode >= 300 && statusCode < 400;
84 return statusCode >= 400 && statusCode < 500;
90 return statusCode >= 500 && statusCode < 600;
129QUrl
ensureScheme(
const QUrl& url,
const QString& defaultScheme = QStringLiteral(
"https"));
132QUrl
buildUrl(
const QString& baseUrl,
const QMap<QString, QString>& params);
135QUrl
buildUrl(
const QString& baseUrl,
const QList<QPair<QString, QString>>& params);
171QNetworkRequest
createRequest(
const QUrl& url,
const RequestConfig& config = {});
192void setBasicAuth(QNetworkRequest& request,
const QString& credentials);
198void setBasicAuth(QNetworkRequest& request,
const QString& username,
const QString& password);
203void setBearerToken(QNetworkRequest& request,
const QString& token);
232QHttpPart
createFilePart(
const QString& name,
const QString& fileName, QIODevice* device);
241QSslConfiguration
createSslConfig(QSsl::SslProtocol protocol = QSsl::TlsV1_2OrLater);
251void applySslConfig(QNetworkRequest& request,
const QSslConfiguration& config);
261QJsonDocument
parseJson(
const QByteArray& data, QJsonParseError*
error =
nullptr);
291bool isSuccess(
const QNetworkReply* reply);
HttpStatusClass classifyHttpStatus(int statusCode)
Classify an HTTP status code.
bool isSuccess(const QNetworkReply *reply)
Check if reply indicates success (no error and HTTP 2xx)
bool isHttpClientError(int statusCode)
Check if HTTP status indicates client error (4xx)
QHttpServerRequest::Method HttpMethod
HTTP request methods - uses Qt's QHttpServerRequest::Method enum.
HttpStatusClass
HTTP status code ranges.
@ Redirection
3xx - Redirection
@ Informational
1xx - Informational
@ ServerError
5xx - Server errors
@ Unknown
Not a valid HTTP status.
@ ClientError
4xx - Client errors
void applySslConfig(QNetworkRequest &request, const QSslConfiguration &config)
QHttpServerResponder::StatusCode HttpStatusCode
HTTP status codes - uses Qt's QHttpServerResponder::StatusCode enum.
bool looksLikeJson(const QByteArray &data)
QJsonDocument parseCompressedJson(const QByteArray &data, QJsonParseError *error)
void configureProxy(QNetworkAccessManager *manager)
Set up default proxy configuration on a network manager.
const QString kContentTypeFormUrlencoded
bool isJsonResponse(const QNetworkReply *reply)
Check if response is JSON based on Content-Type.
const QString kContentTypeOctetStream
void initializeProxySupport()
QNetworkAccessManager * createNetworkManager(QObject *parent)
ConnectionType
Network connection types.
@ None
No network connection.
@ Cellular
Mobile/cellular data.
@ Bluetooth
Bluetooth connection.
@ Ethernet
Wired ethernet.
QNetworkRequest createRequest(const QUrl &url, const RequestConfig &config)
bool isRedirect(const QNetworkReply *reply)
Check if reply indicates a redirect.
bool isNetworkEthernet()
Check if current network connection is Ethernet.
QString sslVersion()
Get SSL library version string.
bool isHttpRedirect(int statusCode)
Check if HTTP status indicates redirect (3xx)
HttpMethod parseHttpMethod(const QString &methodStr)
bool isHttpUrl(const QUrl &url)
Check if URL uses HTTP or HTTPS scheme.
QHttpPart createFormField(const QString &name, const QString &value)
void setFormHeaders(QNetworkRequest &request)
Set form data content headers.
QString urlFileName(const QUrl &url)
Extract filename from URL path (last path segment)
QUrl redirectUrl(const QNetworkReply *reply)
void ignoreSslErrorsIfNeeded(QNetworkReply *reply)
void setStandardHeaders(QNetworkRequest &request, const QString &userAgent)
Set standard browser-like headers on a request.
bool isBluetoothAvailable()
Check if Bluetooth is available on this device.
QString contentType(const QNetworkReply *reply)
Get Content-Type header from reply.
constexpr int kMaxRedirects
Maximum number of redirects to follow.
int httpStatusCode(const QNetworkReply *reply)
QSslConfiguration createInsecureSslConfig()
QString defaultUserAgent()
Get the default User-Agent string for QGC.
QUrl buildUrl(const QString &baseUrl, const QMap< QString, QString > ¶ms)
Build URL with query parameters from a map.
bool isNetworkAvailable()
Check if network is available (not disconnected)
void setBasicAuth(QNetworkRequest &request, const QString &credentials)
QString createBasicAuthCredentials(const QString &username, const QString &password)
QString httpStatusText(HttpStatusCode statusCode)
bool looksLikeCompressedData(const QByteArray &data)
bool isHttpServerError(int statusCode)
Check if HTTP status indicates server error (5xx)
bool isHttpsUrl(const QUrl &url)
Check if URL uses secure HTTPS scheme.
constexpr int kDefaultConnectTimeoutMs
Default connection timeout for initial connect.
QString httpMethodName(HttpMethod method)
Get string name for an HTTP method (e.g., "GET", "POST")
bool isHttpSuccess(int statusCode)
Check if HTTP status indicates success (2xx)
ConnectionType connectionType()
Get current network connection type.
QJsonDocument parseJson(const QByteArray &data, QJsonParseError *error)
QSslConfiguration createSslConfig(QSsl::SslProtocol protocol)
void setBearerToken(QNetworkRequest &request, const QString &token)
bool isValidUrl(const QUrl &url)
QHttpPart createFilePart(const QString &name, const QString &fileName, const QString &contentType, QIODevice *device)
QJsonDocument parseJsonReply(QNetworkReply *reply, QJsonParseError *error)
const QString kContentTypeTextPlain
const QString kContentTypeXml
QUrl normalizeUrl(const QUrl &url)
Normalize URL (lowercase scheme/host, remove default ports, trailing slashes)
QUrl urlWithoutQuery(const QUrl &url)
Get URL without query string and fragment.
void setJsonHeaders(QNetworkRequest &request)
Set JSON content headers (Accept and Content-Type)
qint64 contentLength(const QNetworkReply *reply)
Get Content-Length header from reply (-1 if not present)
QString connectionTypeName(ConnectionType type)
Get human-readable name for connection type.
QString errorMessage(const QNetworkReply *reply)
QUrl ensureScheme(const QUrl &url, const QString &defaultScheme)
Ensure URL has scheme, defaulting to https:// if missing.
const QString kContentTypeJson
Common MIME types for Content-Type headers.
bool isInternetAvailable()
Check if internet is reachable (online state, stricter than isNetworkAvailable)
void ignoreSslErrors(QNetworkReply *reply)
void configureRequest(QNetworkRequest &request, const RequestConfig &config)
const QString kContentTypeMultipartForm
constexpr int kDefaultTimeoutMs
Default request timeout in milliseconds.
bool isSslAvailable()
Check if SSL is available.
Common request configuration options.
QList< QPair< QNetworkRequest::Attribute, QVariant > > requestAttributes