1/****************************************************************************
2**
3** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4** Contact: http://www.qt-project.org/
5**
6** This file is part of the QtNetwork module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** GNU Lesser General Public License Usage
10** This file may be used under the terms of the GNU Lesser General Public
11** License version 2.1 as published by the Free Software Foundation and
12** appearing in the file LICENSE.LGPL included in the packaging of this
13** file. Please review the following information to ensure the GNU Lesser
14** General Public License version 2.1 requirements will be met:
15** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
16**
17** In addition, as a special exception, Nokia gives you certain additional
18** rights. These rights are described in the Nokia Qt LGPL Exception
19** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
20**
21** GNU General Public License Usage
22** Alternatively, this file may be used under the terms of the GNU General
23** Public License version 3.0 as published by the Free Software Foundation
24** and appearing in the file LICENSE.GPL included in the packaging of this
25** file. Please review the following information to ensure the GNU General
26** Public License version 3.0 requirements will be met:
27** http://www.gnu.org/copyleft/gpl.html.
28**
29** Other Usage
30** Alternatively, this file may be used in accordance with the terms and
31** conditions contained in a signed written agreement between you and Nokia.
32**
33**
34**
35**
36**
37**
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#ifndef QNETWORKREQUEST_H
43#define QNETWORKREQUEST_H
44
45#include <QtCore/QSharedDataPointer>
46#include <QtCore/QString>
47#include <QtCore/QUrl>
48#include <QtCore/QVariant>
49
50QT_BEGIN_HEADER
51
52QT_BEGIN_NAMESPACE
53
54QT_MODULE(Network)
55
56class QSslConfiguration;
57
58class QNetworkRequestPrivate;
59class Q_NETWORK_EXPORT QNetworkRequest
60{
61public:
62 enum KnownHeaders {
63 ContentTypeHeader,
64 ContentLengthHeader,
65 LocationHeader,
66 LastModifiedHeader,
67 CookieHeader,
68 SetCookieHeader,
69 ContentDispositionHeader // added for QMultipartMessage
70 };
71 enum Attribute {
72 HttpStatusCodeAttribute,
73 HttpReasonPhraseAttribute,
74 RedirectionTargetAttribute,
75 ConnectionEncryptedAttribute,
76 CacheLoadControlAttribute,
77 CacheSaveControlAttribute,
78 SourceIsFromCacheAttribute,
79 DoNotBufferUploadDataAttribute,
80 HttpPipeliningAllowedAttribute,
81 HttpPipeliningWasUsedAttribute,
82 CustomVerbAttribute,
83 CookieLoadControlAttribute,
84 AuthenticationReuseAttribute,
85 CookieSaveControlAttribute,
86 MaximumDownloadBufferSizeAttribute, // internal
87 DownloadBufferAttribute, // internal
88 SynchronousRequestAttribute, // internal
89
90 User = 1000,
91 UserMax = 32767
92 };
93 enum CacheLoadControl {
94 AlwaysNetwork,
95 PreferNetwork,
96 PreferCache,
97 AlwaysCache
98 };
99 enum LoadControl {
100 Automatic = 0,
101 Manual
102 };
103
104 enum Priority {
105 HighPriority = 1,
106 NormalPriority = 3,
107 LowPriority = 5
108 };
109
110 explicit QNetworkRequest(const QUrl &url = QUrl());
111 QNetworkRequest(const QNetworkRequest &other);
112 ~QNetworkRequest();
113 QNetworkRequest &operator=(const QNetworkRequest &other);
114
115 bool operator==(const QNetworkRequest &other) const;
116 inline bool operator!=(const QNetworkRequest &other) const
117 { return !operator==(other); }
118
119 QUrl url() const;
120 void setUrl(const QUrl &url);
121
122 // "cooked" headers
123 QVariant header(KnownHeaders header) const;
124 void setHeader(KnownHeaders header, const QVariant &value);
125
126 // raw headers:
127 bool hasRawHeader(const QByteArray &headerName) const;
128 QList<QByteArray> rawHeaderList() const;
129 QByteArray rawHeader(const QByteArray &headerName) const;
130 void setRawHeader(const QByteArray &headerName, const QByteArray &value);
131
132 // attributes
133 QVariant attribute(Attribute code, const QVariant &defaultValue = QVariant()) const;
134 void setAttribute(Attribute code, const QVariant &value);
135
136#ifndef QT_NO_OPENSSL
137 QSslConfiguration sslConfiguration() const;
138 void setSslConfiguration(const QSslConfiguration &configuration);
139#endif
140
141 void setOriginatingObject(QObject *object);
142 QObject *originatingObject() const;
143
144 Priority priority() const;
145 void setPriority(Priority priority);
146
147private:
148 QSharedDataPointer<QNetworkRequestPrivate> d;
149 friend class QNetworkRequestPrivate;
150};
151
152QT_END_NAMESPACE
153
154Q_DECLARE_METATYPE(QNetworkRequest)
155
156QT_END_HEADER
157
158#endif
159