summaryrefslogtreecommitdiffstats
path: root/src/network/access/qnetworkrequestfactory.h
blob: 9d955a51e7f77367c03cd5110306e2f0017080ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only

#ifndef QNETWORKREQUESTFACTORY_H
#define QNETWORKREQUESTFACTORY_H

#include <QtNetwork/qnetworkrequest.h>
#include <QtNetwork/qhttpheaders.h>

#include <QtCore/qcompare.h>
#include <QtCore/qshareddata.h>
#include <QtCore/qurlquery.h>
#include <QtCore/qurl.h>
#include <QtCore/qvariant.h>

#include <chrono>

QT_BEGIN_NAMESPACE

class QDebug;
#if QT_CONFIG(ssl)
class QSslConfiguration;
#endif

class QNetworkRequestFactoryPrivate;
QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QNetworkRequestFactoryPrivate, Q_NETWORK_EXPORT)

class QT_TECH_PREVIEW_API QNetworkRequestFactory
{
public:
    Q_NETWORK_EXPORT QNetworkRequestFactory();
    Q_NETWORK_EXPORT explicit QNetworkRequestFactory(const QUrl &baseUrl);
    Q_NETWORK_EXPORT ~QNetworkRequestFactory();

    Q_NETWORK_EXPORT QNetworkRequestFactory(const QNetworkRequestFactory &other);
    QNetworkRequestFactory(QNetworkRequestFactory &&other) noexcept = default;
    Q_NETWORK_EXPORT QNetworkRequestFactory &operator=(const QNetworkRequestFactory &other);

    QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QNetworkRequestFactory)
    void swap(QNetworkRequestFactory &other) noexcept { d.swap(other.d); }

    Q_NETWORK_EXPORT QUrl baseUrl() const;
    Q_NETWORK_EXPORT void setBaseUrl(const QUrl &url);

#if QT_CONFIG(ssl)
    Q_NETWORK_EXPORT QSslConfiguration sslConfiguration() const;
    Q_NETWORK_EXPORT void setSslConfiguration(const QSslConfiguration &configuration);
#endif

    Q_NETWORK_EXPORT QNetworkRequest createRequest() const;
    Q_NETWORK_EXPORT QNetworkRequest createRequest(const QUrlQuery &query) const;
    Q_NETWORK_EXPORT QNetworkRequest createRequest(const QString &path) const;
    Q_NETWORK_EXPORT QNetworkRequest createRequest(const QString &path, const QUrlQuery &query) const;

    Q_NETWORK_EXPORT void setCommonHeaders(const QHttpHeaders &headers);
    Q_NETWORK_EXPORT QHttpHeaders commonHeaders() const;
    Q_NETWORK_EXPORT void clearCommonHeaders();

    Q_NETWORK_EXPORT QByteArray bearerToken() const;
    Q_NETWORK_EXPORT void setBearerToken(const QByteArray &token);
    Q_NETWORK_EXPORT void clearBearerToken();

    Q_NETWORK_EXPORT QString userName() const;
    Q_NETWORK_EXPORT void setUserName(const QString &userName);
    Q_NETWORK_EXPORT void clearUserName();

    Q_NETWORK_EXPORT QString password() const;
    Q_NETWORK_EXPORT void setPassword(const QString &password);
    Q_NETWORK_EXPORT void clearPassword();

    Q_NETWORK_EXPORT void setTransferTimeout(std::chrono::milliseconds timeout);
    Q_NETWORK_EXPORT std::chrono::milliseconds transferTimeout() const;

    Q_NETWORK_EXPORT QUrlQuery queryParameters() const;
    Q_NETWORK_EXPORT void setQueryParameters(const QUrlQuery &query);
    Q_NETWORK_EXPORT void clearQueryParameters();

    Q_NETWORK_EXPORT void setPriority(QNetworkRequest::Priority priority);
    Q_NETWORK_EXPORT QNetworkRequest::Priority priority() const;

    Q_NETWORK_EXPORT QVariant attribute(QNetworkRequest::Attribute attribute) const;
    Q_NETWORK_EXPORT QVariant attribute(QNetworkRequest::Attribute attribute,
                                        const QVariant &defaultValue) const;
    Q_NETWORK_EXPORT void setAttribute(QNetworkRequest::Attribute attribute, const QVariant &value);
    Q_NETWORK_EXPORT void clearAttribute(QNetworkRequest::Attribute attribute);
    Q_NETWORK_EXPORT void clearAttributes();

private:
#ifndef QT_NO_DEBUG_STREAM
    friend Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QNetworkRequestFactory &reply);
#endif

    QExplicitlySharedDataPointer<QNetworkRequestFactoryPrivate> d;
};

Q_DECLARE_SHARED(QNetworkRequestFactory)

QT_END_NAMESPACE

#endif // QNETWORKREQUESTFACTORY_H