File indexing completed on 2024-04-21 04:57:51
0001 /* 0002 SPDX-FileCopyrightText: 2020 Elvis Angelaccio <elvis.angelaccio@kde.org> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #ifndef S3BACKEND_H 0007 #define S3BACKEND_H 0008 0009 #include "s3url.h" 0010 0011 #include <KIO/Job> 0012 #include <KIO/WorkerBase> 0013 0014 #include <QUrl> 0015 0016 #include <aws/s3/S3Client.h> 0017 0018 class S3Worker; 0019 0020 class S3Backend 0021 { 0022 public: 0023 0024 S3Backend(S3Worker *q); 0025 0026 Q_REQUIRED_RESULT KIO::WorkerResult listDir(const QUrl &url); 0027 Q_REQUIRED_RESULT KIO::WorkerResult stat(const QUrl &url); 0028 Q_REQUIRED_RESULT KIO::WorkerResult mimetype(const QUrl &url); 0029 Q_REQUIRED_RESULT KIO::WorkerResult get(const QUrl &url); 0030 Q_REQUIRED_RESULT KIO::WorkerResult put(const QUrl &url, int permissions, KIO::JobFlags flags); 0031 Q_REQUIRED_RESULT KIO::WorkerResult copy(const QUrl &src, const QUrl &dest, int permissions, KIO::JobFlags flags); 0032 Q_REQUIRED_RESULT KIO::WorkerResult mkdir(const QUrl &url, int permissions); 0033 Q_REQUIRED_RESULT KIO::WorkerResult del(const QUrl &url, bool isFile); 0034 Q_REQUIRED_RESULT KIO::WorkerResult rename(const QUrl &src, const QUrl &dest, KIO::JobFlags flags); 0035 0036 private: 0037 Q_DISABLE_COPY(S3Backend) 0038 0039 enum CwdAccess { 0040 ReadOnlyCwd, 0041 WritableCwd 0042 }; 0043 0044 bool listBuckets(); 0045 void listBucket(const Aws::String &bucketName); 0046 void listKey(const S3Url &s3url); 0047 void listCwdEntry(CwdAccess access = WritableCwd); 0048 bool deletePrefix(const Aws::S3::S3Client &client, const S3Url &s3url, const Aws::String &prefix); 0049 QString contentType(const S3Url &s3url); 0050 0051 Aws::String m_configProfileName; // This must be passed to the S3Client objects to get the proper region from ~/.aws/config 0052 S3Worker *q = nullptr; 0053 }; 0054 0055 #endif // S3BACKEND_H