From 68f167995e7ba71a6f2e556a7a0eab3d234e2d1a Mon Sep 17 00:00:00 2001 From: Jonah BrĂ¼chert Date: Fri, 9 Sep 2022 23:15:10 +0200 Subject: Implement XEP-0448: Stateless File Sharing This adds a file sharing manager that is capable of using multiple back ends. Currently implemented are a normal HTTP File Upload backend and an encrypted HTTP File Upload. Jingle File Transfer could be implemented later. Co-authored-by: Linus Jahn --- src/client/QXmppUpload.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/client/QXmppUpload.h (limited to 'src/client/QXmppUpload.h') diff --git a/src/client/QXmppUpload.h b/src/client/QXmppUpload.h new file mode 100644 index 00000000..c948496f --- /dev/null +++ b/src/client/QXmppUpload.h @@ -0,0 +1,47 @@ +// SPDX-FileCopyrightText: 2022 Jonah BrĂ¼chert +// +// SPDX-License-Identifier: LGPL-2.1-or-later + +#ifndef QXMPPUPLOAD_H +#define QXMPPUPLOAD_H + +#include "QXmppBitsOfBinaryDataList.h" +#include "QXmppError.h" +#include "QXmppFileMetadata.h" +#include "QXmppFileShare.h" +#include "QXmppFileTransfer.h" + +#include + +namespace QXmpp::Private { +using UploadResult = std::variant; +} + +class QXMPP_EXPORT QXmppUpload : public QXmppFileTransfer +{ + Q_OBJECT +public: + struct FileResult + { + QXmppFileShare fileShare; + QXmppBitsOfBinaryDataList dataBlobs; + }; + + using Result = std::variant; + Q_SIGNAL void finished(QXmppUpload::Result); + +protected: + /// \cond + Q_SIGNAL void uploadFinished(QXmpp::Private::UploadResult); + /// \endcond + +private: + QXmppFileMetadata metadata; + + friend class QXmppFileSharingManager; +}; + +Q_DECLARE_METATYPE(QXmppUpload::Result); +Q_DECLARE_METATYPE(QXmpp::Private::UploadResult); + +#endif // QXMPPUPLOAD_H -- cgit v1.2.3