QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QGCNetworkClient.cc
Go to the documentation of this file.
1#include "QGCNetworkClient.h"
2
3#include <QtCore/QCoreApplication>
4#include <QtNetwork/QHttpHeaders>
5#include <QtNetwork/QNetworkAccessManager>
6#include <QtNetwork/QNetworkProxy>
7#include <QtNetwork/QNetworkRequest>
8
9namespace QGCNetworkHelper {
10void setBasicAuth(QNetworkRequest& request, const QString& credentials)
11{
12 QHttpHeaders headers = request.headers();
13 headers.replaceOrAppend(QHttpHeaders::WellKnownHeader::Authorization, "Basic " + credentials);
14 request.setHeaders(headers);
15}
16
17void setBasicAuth(QNetworkRequest& request, const QString& username, const QString& password)
18{
19 setBasicAuth(request, createBasicAuthCredentials(username, password));
20}
21
22void setBearerToken(QNetworkRequest& request, const QString& token)
23{
24 QHttpHeaders headers = request.headers();
25 headers.replaceOrAppend(QHttpHeaders::WellKnownHeader::Authorization, "Bearer " + token);
26 request.setHeaders(headers);
27}
28
29QString createBasicAuthCredentials(const QString& username, const QString& password)
30{
31 const QString credentials = username + QLatin1Char(':') + password;
32 return QString::fromLatin1(credentials.toUtf8().toBase64());
33}
34
36{
37 static const QString userAgent = QStringLiteral("%1/%2 (Qt %3)")
38 .arg(QCoreApplication::applicationName(),
39 QCoreApplication::applicationVersion(), QString::fromLatin1(qVersion()));
40 return userAgent;
41}
42
43QSslConfiguration createSslConfig()
44{
45 QSslConfiguration config = QSslConfiguration::defaultConfiguration();
46 config.setProtocol(QSsl::TlsV1_2OrLater);
47 return config;
48}
49
50QNetworkAccessManager* createNetworkManager(QObject* parent)
51{
52 auto* manager = new QNetworkAccessManager(parent);
53 configureProxy(manager);
54 return manager;
55}
56
57void configureProxy(QNetworkAccessManager* manager)
58{
59 if (!manager) {
60 return;
61 }
62
63#if !defined(Q_OS_IOS) && !defined(Q_OS_ANDROID)
64 QNetworkProxy proxy = manager->proxy();
65 proxy.setType(QNetworkProxy::DefaultProxy);
66 manager->setProxy(proxy);
67#endif
68}
69} // namespace QGCNetworkHelper
Config config
QSslConfiguration createSslConfig()
The default TLS configuration restricted to TLS 1.2 or later.
void configureProxy(QNetworkAccessManager *manager)
Set up default proxy configuration on a network manager.
QNetworkAccessManager * createNetworkManager(QObject *parent)
QString defaultUserAgent()
"<application>/<version> (Qt <version>)".
void setBasicAuth(QNetworkRequest &request, const QString &credentials)
QString createBasicAuthCredentials(const QString &username, const QString &password)
Base64-encoded UTF-8 username:password, without the authentication scheme.
void setBearerToken(QNetworkRequest &request, const QString &token)