QXmpp Version: 1.15.0
Loading...
Searching...
No Matches
QXmppUploadRequestManager.h
1// SPDX-FileCopyrightText: 2019 Linus Jahn <lnj@kaidan.im>
2//
3// SPDX-License-Identifier: LGPL-2.1-or-later
4
5#ifndef QXMPPUPLOADREQUESTMANAGER_H
6#define QXMPPUPLOADREQUESTMANAGER_H
7
8#include "QXmppClientExtension.h"
9#include "QXmppError.h"
10
11#include <variant>
12
13#include <QSharedDataPointer>
14
15class QFileInfo;
16template<typename T>
17class QXmppTask;
18class QMimeType;
21class QXmppUploadServicePrivate;
22class QXmppUploadRequestManagerPrivate;
23
29class QXMPP_EXPORT QXmppUploadService
30{
31public:
32 QXmppUploadService();
33 QXmppUploadService(const QXmppUploadService &);
34 ~QXmppUploadService();
35
36 QXmppUploadService &operator=(const QXmppUploadService &);
37
38 QString jid() const;
39 void setJid(const QString &jid);
40
41 qint64 sizeLimit() const;
42 void setSizeLimit(qint64 sizeLimit);
43
44private:
45 QSharedDataPointer<QXmppUploadServicePrivate> d;
46};
47
83class QXMPP_EXPORT QXmppUploadRequestManager : public QXmppClientExtension
84{
85 Q_OBJECT
86
87public:
88 QXmppUploadRequestManager();
89 ~QXmppUploadRequestManager();
90
91 QString requestUploadSlot(const QFileInfo &file,
92 const QString &uploadService = QString());
93 QString requestUploadSlot(const QFileInfo &file,
94 const QString &customFileName,
95 const QString &uploadService = QString());
96 QString requestUploadSlot(const QString &fileName,
97 qint64 fileSize,
98 const QMimeType &mimeType,
99 const QString &uploadService = QString());
100
101 using SlotResult = std::variant<QXmppHttpUploadSlotIq, QXmppError>;
102 auto requestSlot(const QFileInfo &file, const QString &uploadService = {}) -> QXmppTask<SlotResult>;
103 auto requestSlot(const QFileInfo &file, const QString &customFileName, const QString &uploadService = {}) -> QXmppTask<SlotResult>;
104 auto requestSlot(const QString &fileName, qint64 fileSize, const QMimeType &mimeType, const QString &uploadService = {}) -> QXmppTask<SlotResult>;
105
106 bool serviceFound() const;
107
108 QVector<QXmppUploadService> uploadServices() const;
109
110 bool handleStanza(const QDomElement &stanza) override;
111
113 Q_SIGNAL void slotReceived(const QXmppHttpUploadSlotIq &slot);
114
118 Q_SIGNAL void requestFailed(const QXmppHttpUploadRequestIq &request);
119
121 Q_SIGNAL void serviceFoundChanged();
122
123protected:
124 void onRegistered(QXmppClient *client) override;
125 void onUnregistered(QXmppClient *client) override;
126
127private:
128 void handleDiscoInfo(const QXmppDiscoveryIq &iq);
129
130 const std::unique_ptr<QXmppUploadRequestManagerPrivate> d;
131};
132
133#endif // QXMPPUPLOADREQUESTMANAGER_H
QXmppClient * client() const
Definition QXmppClientExtension.cpp:57
QXmppClientExtension()
Definition QXmppClientExtension.cpp:12
Definition QXmppDiscoveryIq.h:200
Represents an HTTP File Upload IQ for requesting an upload slot as defined by XEP-0363: HTTP File Upl...
Definition QXmppHttpUploadIq.h:27
Represents an HTTP File Upload IQ result for receiving an upload slot as defined by XEP-0363: HTTP Fi...
Definition QXmppHttpUploadIq.h:69
Definition QXmppTask.h:330
Q_SIGNAL void requestFailed(const QXmppHttpUploadRequestIq &request)
void onRegistered(QXmppClient *client) override
Definition QXmppUploadRequestManager.cpp:309
QString requestUploadSlot(const QFileInfo &file, const QString &uploadService=QString())
Definition QXmppUploadRequestManager.cpp:109
Q_SIGNAL void serviceFoundChanged()
Emitted when the first upload service has been found.
auto requestSlot(const QFileInfo &file, const QString &uploadService={}) -> QXmppTask< SlotResult >
Definition QXmppUploadRequestManager.cpp:186
void onUnregistered(QXmppClient *client) override
Definition QXmppUploadRequestManager.cpp:329
std::variant< QXmppHttpUploadSlotIq, QXmppError > SlotResult
Definition QXmppUploadRequestManager.h:101
Q_SIGNAL void slotReceived(const QXmppHttpUploadSlotIq &slot)
Emitted when an upload slot was received.
QXmppUploadService(const QXmppUploadService &)
Copy constructor.
QXmppUploadService & operator=(const QXmppUploadService &)
Equal operator.
void setJid(const QString &jid)
Sets the JID of the HTTP File Upload service.
Definition QXmppUploadRequestManager.cpp:53
void setSizeLimit(qint64 sizeLimit)
Sets the size limit of files that can be uploaded to this upload service.
Definition QXmppUploadRequestManager.cpp:71
qint64 sizeLimit() const
Definition QXmppUploadRequestManager.cpp:65
QString jid() const
Returns the JID of the HTTP File Upload service.
Definition QXmppUploadRequestManager.cpp:47