File indexing completed on 2024-05-12 17:19:14
0001 // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0002 // SPDX-FileCopyrightText: 2022 Harald Sitter <sitter@kde.org> 0003 0004 #include "putcommand.h" 0005 0006 #include <KIO/TransferJob> 0007 0008 PutCommand::PutCommand(const QUrl &url, int permissions, KIO::JobFlags flags, const QString &remoteService, const QDBusObjectPath &objectPath, QObject *parent) 0009 : BusObject(remoteService, objectPath, parent) 0010 , m_url(url) 0011 , m_permissions(permissions) 0012 , m_flags(flags) 0013 { 0014 } 0015 0016 void PutCommand::start() 0017 { 0018 qDebug() << Q_FUNC_INFO; 0019 if (!isAuthorized()) { 0020 sendErrorReply(QDBusError::AccessDenied); 0021 return; 0022 } 0023 0024 auto job = KIO::put(m_url, m_permissions, m_flags); 0025 setParent(job); 0026 connect(job, &KIO::TransferJob::dataReq, this, [this](KIO::Job *, QByteArray &data) { 0027 qDebug() << Q_FUNC_INFO << "data request"; 0028 sendSignal(&PutCommand::dataRequest); 0029 m_loop.exec(); 0030 data = m_newData; 0031 }); 0032 connect(job, &KIO::TransferJob::result, this, [this, job](KJob *) { 0033 qDebug() << Q_FUNC_INFO << "result" << job->errorString(); 0034 sendSignal(&PutCommand::result, job->error(), job->errorString()); 0035 }); 0036 } 0037 0038 void PutCommand::data(const QByteArray &data) 0039 { 0040 qDebug() << Q_FUNC_INFO; 0041 if (!isAuthorized()) { 0042 sendErrorReply(QDBusError::AccessDenied); 0043 return; 0044 } 0045 0046 m_newData = data; 0047 m_loop.quit(); 0048 } 0049 0050 void PutCommand::kill() 0051 { 0052 doKill(); 0053 }