swift
networkutils.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_NETWORKUTILS_H
7 #define SWIFT_MISC_NETWORKUTILS_H
8 
9 #include <QNetworkAccessManager>
10 #include <QNetworkRequest>
11 #include <QString>
12 #include <QStringList>
13 #include <QtGlobal>
14 
15 #include "misc/network/ping.h"
16 #include "misc/statusmessagelist.h"
17 #include "misc/swiftmiscexport.h"
18 
19 class QHttpPart;
20 class QNetworkReply;
21 class QUrlQuery;
22 
23 namespace swift::misc::network
24 {
25  class CServer;
26 
29  {
30  public:
33  {
34  Get,
35  PostUrlEncoded,
36  Multipart
37  };
38 
40  static int getTimeoutMs();
41 
43  static int getLongTimeoutMs();
44 
50  static bool canConnect(const QString &hostAddress, int port, QString &message, int timeoutMs = getTimeoutMs());
51 
56  static bool canConnect(const swift::misc::network::CServer &server, QString &message,
57  int timeoutMs = getTimeoutMs());
58 
60  static bool canConnect(const QString &url, QString &message, int timeoutMs = getTimeoutMs());
61 
63  static bool canConnect(const QUrl &url, QString &message, int timeoutMs = getTimeoutMs());
64 
66  static bool canConnect(const QUrl &url, int timeoutMs = getTimeoutMs());
67 
69  static QStringList getKnownLocalIpV4Addresses();
70 
72  static bool isValidIPv4Address(const QString &candidate);
73 
75  static bool isValidIPv6Address(const QString &candidate);
76 
78  static bool isValidPort(const QString &port);
79 
81  static QString buildUrl(const QString &protocol, const QString &server, const QString &baseUrl,
82  const QString &serviceUrl);
83 
85  static void setSwiftUserAgent(QNetworkRequest &request, const QString &userAgentDetails = {});
86 
88  static void addDebugFlag(QUrlQuery &qurl);
89 
91  static QNetworkRequest getSwiftNetworkRequest(const QUrl &url, RequestType type = Get,
92  const QString &userAgentDetails = {});
93 
95  static QNetworkRequest getSwiftNetworkRequest(const QNetworkRequest &request,
96  const QString &userAgentDetails = {});
97 
99  static qint64 lastModifiedMsSinceEpoch(const QNetworkReply *nwReply);
100 
102  static QDateTime lastModifiedDateTime(const QNetworkReply *nwReply);
103 
105  static qint64 lastModifiedSinceNow(const QNetworkReply *nwReply);
106 
108  static qint64 requestDuration(const QNetworkReply *nwReply);
109 
111  static int getHttpStatusCode(QNetworkReply *nwReply);
112 
125  static bool isHttpStatusRedirect(QNetworkReply *nwReply);
126 
128  static QUrl getHttpRedirectUrl(QNetworkReply *nwReply);
129 
131  static QString removeHtmlPartsFromPhpErrorMessage(const QString &errorMessage);
132 
134  static bool looksLikePhpErrorMessage(const QString &errorMessage);
135 
137  static const QString &networkOperationToString(QNetworkAccessManager::Operation operation);
138 
139  private:
141  CNetworkUtils() {}
142  };
143 } // namespace swift::misc::network
144 
145 #endif // SWIFT_MISC_NETWORKUTILS_H
Utilities, e.g. checking whether a network connection can be established.
Definition: networkutils.h:29
Value object encapsulating information of a server.
Definition: server.h:28
#define SWIFT_MISC_EXPORT
Export a class or function from the library.