// Copyright (C) 2016 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 QHTTPMULTIPART_H #define QHTTPMULTIPART_H #include #include #include #include #include #ifndef Q_OS_WASM QT_REQUIRE_CONFIG(http); #endif QT_BEGIN_NAMESPACE class QHttpPartPrivate; class QHttpMultiPart; class Q_NETWORK_EXPORT QHttpPart { public: QHttpPart(); QHttpPart(const QHttpPart &other); ~QHttpPart(); QHttpPart &operator=(QHttpPart &&other) noexcept { swap(other); return *this; } QHttpPart &operator=(const QHttpPart &other); void swap(QHttpPart &other) noexcept { d.swap(other.d); } bool operator==(const QHttpPart &other) const; inline bool operator!=(const QHttpPart &other) const { return !operator==(other); } void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); void setRawHeader(const QByteArray &headerName, const QByteArray &headerValue); void setBody(const QByteArray &body); void setBodyDevice(QIODevice *device); private: QSharedDataPointer d; friend class QHttpMultiPartIODevice; }; Q_DECLARE_SHARED(QHttpPart) class QHttpMultiPartPrivate; class Q_NETWORK_EXPORT QHttpMultiPart : public QObject { Q_OBJECT public: enum ContentType { MixedType, RelatedType, FormDataType, AlternativeType }; explicit QHttpMultiPart(QObject *parent = nullptr); explicit QHttpMultiPart(ContentType contentType, QObject *parent = nullptr); ~QHttpMultiPart(); void append(const QHttpPart &httpPart); void setContentType(ContentType contentType); QByteArray boundary() const; void setBoundary(const QByteArray &boundary); private: Q_DECLARE_PRIVATE(QHttpMultiPart) Q_DISABLE_COPY(QHttpMultiPart) friend class QNetworkAccessManager; friend class QNetworkAccessManagerPrivate; }; QT_END_NAMESPACE #endif // QHTTPMULTIPART_H