/src/qtbase/src/network/access/qnetworkaccessmanager.h
Line | Count | Source |
1 | | // Copyright (C) 2016 The Qt Company Ltd. |
2 | | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only |
3 | | // Qt-Security score:significant reason:default |
4 | | |
5 | | #ifndef QNETWORKACCESSMANAGER_H |
6 | | #define QNETWORKACCESSMANAGER_H |
7 | | |
8 | | #include <QtNetwork/qtnetworkglobal.h> |
9 | | #include <QtNetwork/qnetworkrequest.h> |
10 | | #include <QtCore/QString> |
11 | | #include <QtCore/QList> |
12 | | #include <QtCore/QObject> |
13 | | #ifndef QT_NO_SSL |
14 | | #include <QtNetwork/QSslConfiguration> |
15 | | #include <QtNetwork/QSslPreSharedKeyAuthenticator> |
16 | | #endif |
17 | | Q_MOC_INCLUDE(<QtNetwork/QSslError>) |
18 | | |
19 | | QT_BEGIN_NAMESPACE |
20 | | |
21 | | class QIODevice; |
22 | | class QAbstractNetworkCache; |
23 | | class QAuthenticator; |
24 | | class QByteArray; |
25 | | class QNetworkCookie; |
26 | | class QNetworkCookieJar; |
27 | | class QNetworkReply; |
28 | | class QNetworkProxy; |
29 | | class QNetworkProxyFactory; |
30 | | class QSslError; |
31 | | class QHstsPolicy; |
32 | | class QHttpMultiPart; |
33 | | |
34 | | class QNetworkReplyImplPrivate; |
35 | | class QNetworkAccessManagerPrivate; |
36 | | class Q_NETWORK_EXPORT QNetworkAccessManager: public QObject |
37 | | { |
38 | 0 | Q_OBJECT |
39 | 0 |
|
40 | 0 |
|
41 | 0 | public: |
42 | 0 | enum Operation { |
43 | 0 | HeadOperation = 1, |
44 | 0 | GetOperation, |
45 | 0 | PutOperation, |
46 | 0 | PostOperation, |
47 | 0 | DeleteOperation, |
48 | 0 | CustomOperation, |
49 | 0 |
|
50 | 0 | UnknownOperation = 0 |
51 | 0 | }; |
52 | 0 |
|
53 | 0 | explicit QNetworkAccessManager(QObject *parent = nullptr); |
54 | 0 | ~QNetworkAccessManager(); |
55 | 0 |
|
56 | 0 | virtual QStringList supportedSchemes() const; |
57 | 0 |
|
58 | 0 | void clearAccessCache(); |
59 | 0 |
|
60 | 0 | void clearConnectionCache(); |
61 | 0 |
|
62 | 0 | #ifndef QT_NO_NETWORKPROXY |
63 | 0 | QNetworkProxy proxy() const; |
64 | 0 | void setProxy(const QNetworkProxy &proxy); |
65 | 0 | QNetworkProxyFactory *proxyFactory() const; |
66 | 0 | void setProxyFactory(QNetworkProxyFactory *factory); |
67 | 0 | #endif |
68 | 0 |
|
69 | 0 | QAbstractNetworkCache *cache() const; |
70 | 0 | void setCache(QAbstractNetworkCache *cache); |
71 | 0 |
|
72 | 0 | QNetworkCookieJar *cookieJar() const; |
73 | 0 | void setCookieJar(QNetworkCookieJar *cookieJar); |
74 | 0 |
|
75 | 0 | void setStrictTransportSecurityEnabled(bool enabled); |
76 | 0 | bool isStrictTransportSecurityEnabled() const; |
77 | 0 | void enableStrictTransportSecurityStore(bool enabled, const QString &storeDir = QString()); |
78 | 0 | bool isStrictTransportSecurityStoreEnabled() const; |
79 | 0 | void addStrictTransportSecurityHosts(const QList<QHstsPolicy> &knownHosts); |
80 | 0 | QList<QHstsPolicy> strictTransportSecurityHosts() const; |
81 | 0 |
|
82 | 0 | QNetworkReply *head(const QNetworkRequest &request); |
83 | 0 | QNetworkReply *get(const QNetworkRequest &request); |
84 | 0 | QNetworkReply *get(const QNetworkRequest &request, QIODevice *data); |
85 | 0 | QNetworkReply *get(const QNetworkRequest &request, const QByteArray &data); |
86 | 0 | QNetworkReply *post(const QNetworkRequest &request, QIODevice *data); |
87 | 0 | QNetworkReply *post(const QNetworkRequest &request, const QByteArray &data); |
88 | 0 | QNetworkReply *post(const QNetworkRequest &request, std::nullptr_t) |
89 | 0 | { |
90 | 0 | return post(request, static_cast<QIODevice*>(nullptr)); |
91 | 0 | } |
92 | | |
93 | | QNetworkReply *put(const QNetworkRequest &request, QIODevice *data); |
94 | | QNetworkReply *put(const QNetworkRequest &request, const QByteArray &data); |
95 | | QNetworkReply *put(const QNetworkRequest &request, std::nullptr_t) |
96 | 0 | { |
97 | 0 | return put(request, static_cast<QIODevice*>(nullptr)); |
98 | 0 | } |
99 | | |
100 | | QNetworkReply *deleteResource(const QNetworkRequest &request); |
101 | | QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = nullptr); |
102 | | QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data); |
103 | | |
104 | | #if QT_CONFIG(http) || defined(Q_OS_WASM) |
105 | | QNetworkReply *post(const QNetworkRequest &request, QHttpMultiPart *multiPart); |
106 | | QNetworkReply *put(const QNetworkRequest &request, QHttpMultiPart *multiPart); |
107 | | QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QHttpMultiPart *multiPart); |
108 | | #endif |
109 | | |
110 | | #ifndef QT_NO_SSL |
111 | | void connectToHostEncrypted(const QString &hostName, quint16 port = 443, |
112 | | const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration()); |
113 | | void connectToHostEncrypted(const QString &hostName, quint16 port, |
114 | | const QSslConfiguration &sslConfiguration, |
115 | | const QString &peerName); |
116 | | #endif |
117 | | void connectToHost(const QString &hostName, quint16 port = 80); |
118 | | |
119 | | void setRedirectPolicy(QNetworkRequest::RedirectPolicy policy); |
120 | | QNetworkRequest::RedirectPolicy redirectPolicy() const; |
121 | | |
122 | | bool autoDeleteReplies() const; |
123 | | void setAutoDeleteReplies(bool autoDelete); |
124 | | |
125 | | QT_NETWORK_INLINE_SINCE(6, 8) |
126 | | int transferTimeout() const; |
127 | | QT_NETWORK_INLINE_SINCE(6, 8) |
128 | | void setTransferTimeout(int timeout); |
129 | | |
130 | | std::chrono::milliseconds transferTimeoutAsDuration() const; |
131 | | void setTransferTimeout(std::chrono::milliseconds duration = |
132 | | QNetworkRequest::DefaultTransferTimeout); |
133 | | |
134 | | Q_SIGNALS: |
135 | | #ifndef QT_NO_NETWORKPROXY |
136 | | void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator); |
137 | | #endif |
138 | | void authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator); |
139 | | void finished(QNetworkReply *reply); |
140 | | #ifndef QT_NO_SSL |
141 | | void encrypted(QNetworkReply *reply); |
142 | | void sslErrors(QNetworkReply *reply, const QList<QSslError> &errors); |
143 | | void preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator); |
144 | | #endif |
145 | | |
146 | | protected: |
147 | | virtual QNetworkReply *createRequest(Operation op, const QNetworkRequest &request, |
148 | | QIODevice *outgoingData = nullptr); |
149 | | |
150 | | protected Q_SLOTS: |
151 | | QStringList supportedSchemesImplementation() const; |
152 | | |
153 | | private: |
154 | | friend class QNetworkReplyImplPrivate; |
155 | | friend class QNetworkReplyHttpImpl; |
156 | | friend class QNetworkReplyHttpImplPrivate; |
157 | | friend class QNetworkReplyFileImpl; |
158 | | |
159 | | #ifdef Q_OS_WASM |
160 | | friend class QNetworkReplyWasmImpl; |
161 | | #endif |
162 | | Q_DECLARE_PRIVATE(QNetworkAccessManager) Unexecuted instantiation: QNetworkAccessManager::d_func() Unexecuted instantiation: QNetworkAccessManager::d_func() const |
163 | | Q_PRIVATE_SLOT(d_func(), void _q_replySslErrors(QList<QSslError>)) |
164 | | #ifndef QT_NO_SSL |
165 | | Q_PRIVATE_SLOT(d_func(), void _q_replyPreSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator*)) |
166 | | #endif |
167 | | }; |
168 | | |
169 | | #if QT_NETWORK_INLINE_IMPL_SINCE(6, 8) |
170 | | int QNetworkAccessManager::transferTimeout() const |
171 | | { |
172 | | return int(transferTimeoutAsDuration().count()); |
173 | | } |
174 | | |
175 | | void QNetworkAccessManager::setTransferTimeout(int timeout) |
176 | | { |
177 | | setTransferTimeout(std::chrono::milliseconds(timeout)); |
178 | | } |
179 | | #endif // INLINE_SINCE 6.8 |
180 | | |
181 | | QT_END_NAMESPACE |
182 | | |
183 | | #endif |