File indexing completed on 2024-05-12 05:22:19
0001 /* 0002 * This file is part of LibKGAPI library 0003 * 0004 * SPDX-FileCopyrightText: 2013 Daniel Vrátil <dvratil@redhat.com> 0005 * 0006 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0007 */ 0008 0009 #pragma once 0010 0011 #include "file.h" 0012 #include "fileabstractdatajob.h" 0013 #include "kgapidrive_export.h" 0014 0015 #include <QMap> 0016 #include <QStringList> 0017 0018 namespace KGAPI2 0019 { 0020 0021 namespace Drive 0022 { 0023 0024 class KGAPIDRIVE_EXPORT FileAbstractUploadJob : public KGAPI2::Drive::FileAbstractDataJob 0025 { 0026 Q_OBJECT 0027 0028 public: 0029 explicit FileAbstractUploadJob(const FilePtr &metadata, const AccountPtr &account, QObject *parent = nullptr); 0030 explicit FileAbstractUploadJob(const FilesList &metadata, const AccountPtr &account, QObject *parent = nullptr); 0031 explicit FileAbstractUploadJob(const QString &filePath, const AccountPtr &account, QObject *parent = nullptr); 0032 explicit FileAbstractUploadJob(const QString &filePath, const FilePtr &metaData, const AccountPtr &account, QObject *parent = nullptr); 0033 explicit FileAbstractUploadJob(const QStringList &filePaths, const AccountPtr &account, QObject *parent = nullptr); 0034 explicit FileAbstractUploadJob(const QMap<QString /* file path */, FilePtr /* metadata */> &files, const AccountPtr &account, QObject *parent = nullptr); 0035 ~FileAbstractUploadJob() override; 0036 0037 QMap<QString /* file path */, FilePtr /* metadata */> files() const; 0038 0039 protected: 0040 void start() override; 0041 void dispatchRequest(QNetworkAccessManager *accessManager, const QNetworkRequest &request, const QByteArray &data, const QString &contentType) override; 0042 void handleReply(const QNetworkReply *reply, const QByteArray &rawData) override; 0043 0044 virtual QUrl createUrl(const QString &filePath, const FilePtr &metaData) = 0; 0045 virtual QNetworkReply *dispatch(QNetworkAccessManager *accessManager, const QNetworkRequest &request, const QByteArray &data) = 0; 0046 void setSerializationOptions(File::SerializationOptions options); 0047 [[nodiscard]] File::SerializationOptions serializationOptions() const; 0048 0049 private: 0050 class Private; 0051 Private *const d; 0052 friend class Private; 0053 0054 Q_PRIVATE_SLOT(d, void _k_uploadProgress(qint64 uploadedBytes, qint64 totalBytes)) 0055 }; 0056 0057 } // namespace Drive 0058 0059 } // namespace KGAPI2