6#ifndef QXMPPHTTPUPLOADMANAGER_H
7#define QXMPPHTTPUPLOADMANAGER_H
9#include "QXmppClientExtension.h"
10#include "QXmppError.h"
18class QNetworkAccessManager;
19class QXmppHttpUploadServicePrivate;
23struct QXmppHttpUploadPrivate;
24struct QXmppHttpUploadManagerPrivate;
26class QXMPP_EXPORT QXmppHttpUploadService
29 QXmppHttpUploadService();
30 QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppHttpUploadService)
39 QSharedDataPointer<QXmppHttpUploadServicePrivate> d;
42class QXMPP_EXPORT QXmppHttpUpload :
public QObject
66 friend class QXmppHttpUploadManager;
70 std::unique_ptr<QXmppHttpUploadPrivate> d;
73Q_DECLARE_METATYPE(QXmppHttpUpload::
Result);
93 QVector<QXmppHttpUploadService> services()
const;
99 std::shared_ptr<QXmppHttpUpload>
uploadFile(std::unique_ptr<QIODevice> data,
const QString &filename,
const QMimeType &mimeType, qint64 fileSize = -1,
const QString &uploadServiceJid = {});
100 std::shared_ptr<QXmppHttpUpload> uploadFile(
const QFileInfo &fileInfo,
const QString &filename = {},
const QString &uploadServiceJid = {});
103 void onRegistered(QXmppClient *client)
override;
104 void onUnregistered(QXmppClient *client)
override;
107 QXmppTask<void> updateService(QString jid);
108 void updateServices();
109 void resetCachedData();
110 void updateCachedData();
112 using SlotResult = std::variant<QXmppHttpUploadSlotIq, QXmppError>;
113 QXmppTask<SlotResult> requestSlot(
const QFileInfo &file,
114 const QString &uploadService = {});
115 QXmppTask<SlotResult> requestSlot(
const QFileInfo &file,
116 const QString &customFileName,
117 const QString &uploadService = {});
118 QXmppTask<SlotResult> requestSlot(
const QString &fileName,
120 const QMimeType &mimeType,
121 const QString &uploadService = {});
123 friend struct QXmppHttpUploadManagerPrivate;
125 std::unique_ptr<QXmppHttpUploadManagerPrivate> d;
QXmppClientExtension()
Definition QXmppClientExtension.cpp:12
Definition QXmppHttpUploadManager.h:76
QXmppHttpUploadManager::Support support
Definition QXmppHttpUploadManager.h:79
QXmppHttpUploadManager()
Definition QXmppHttpUploadManager.cpp:321
Q_SIGNAL void supportChanged()
Emitted when support has changed.
Support
Definition QXmppHttpUploadManager.h:82
Q_SIGNAL void servicesChanged()
Emitted when services have changed.
std::shared_ptr< QXmppHttpUpload > uploadFile(std::unique_ptr< QIODevice > data, const QString &filename, const QMimeType &mimeType, qint64 fileSize=-1, const QString &uploadServiceJid={})
Definition QXmppHttpUploadManager.cpp:401
QVector< QXmppHttpUploadService > services
Definition QXmppHttpUploadManager.h:78
std::optional< quint64 > sizeLimit() const
Definition QXmppHttpUploadManager.cpp:103
QString jid() const
Returns the JID of the HTTP File Upload service.
Definition QXmppHttpUploadManager.cpp:88
void setJid(const QString &jid)
Sets the JID of the HTTP File Upload service.
Definition QXmppHttpUploadManager.cpp:94
void setSizeLimit(std::optional< quint64 > sizeLimit)
Sets the size limit of files that can be uploaded to this upload service.
Definition QXmppHttpUploadManager.cpp:109
Represents an HTTP File Upload IQ result for receiving an upload slot as defined by XEP-0363: HTTP Fi...
Definition QXmppHttpUploadIq.h:69
Q_SIGNAL void finished(const QXmppHttpUpload::Result &result)
bool isFinished() const
Definition QXmppHttpUploadManager.cpp:273
std::variant< QUrl, QXmpp::Cancelled, QXmppError > Result
Definition QXmppHttpUploadManager.h:50
void cancel()
Definition QXmppHttpUploadManager.cpp:262
float progress
Definition QXmppHttpUploadManager.h:45
Q_SIGNAL void progressChanged()
quint64 bytesTotal
Definition QXmppHttpUploadManager.h:47
quint64 bytesSent
Definition QXmppHttpUploadManager.h:46
std::optional< Result > result() const
Definition QXmppHttpUploadManager.cpp:282
Definition QXmppTask.h:330
Definition Algorithms.h:14
Definition QXmppError.h:17