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/QXmppHttpFileSharingProvider.h | 40 +++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/client/QXmppHttpFileSharingProvider.h (limited to 'src/client/QXmppHttpFileSharingProvider.h') diff --git a/src/client/QXmppHttpFileSharingProvider.h b/src/client/QXmppHttpFileSharingProvider.h new file mode 100644 index 00000000..748c1277 --- /dev/null +++ b/src/client/QXmppHttpFileSharingProvider.h @@ -0,0 +1,40 @@ +// SPDX-FileCopyrightText: 2022 Jonah BrĂ¼chert +// +// SPDX-License-Identifier: LGPL-2.1-or-later + +#ifndef QXMPPHTTPFILESHARINGPROVIDER_H +#define QXMPPHTTPFILESHARINGPROVIDER_H + +#include "QXmppFileSharingProvider.h" +#include "QXmppHttpFileSource.h" + +#include +#include + +class QXmppClient; +class QIODevice; +class QXmppHttpUploadManager; +class QNetworkAccessManager; + +class QXmppHttpFileSharingProviderPrivate; + +class QXMPP_EXPORT QXmppHttpFileSharingProvider : public QXmppFileSharingProvider +{ +public: + /// \cond + using SourceType = QXmppHttpFileSource; + /// \endcond + + QXmppHttpFileSharingProvider(QXmppClient *client, QNetworkAccessManager *netManager); + ~QXmppHttpFileSharingProvider() override; + + auto downloadFile(const std::any &source, + std::unique_ptr &&target) -> std::shared_ptr override; + auto uploadFile(std::unique_ptr data, + const QXmppFileMetadata &info) -> std::shared_ptr override; + +private: + std::unique_ptr d; +}; + +#endif // QXMPPHTTPFILESHARINGPROVIDER_H -- cgit v1.2.3