File indexing completed on 2024-05-12 05:22:21
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 #include "parentreferencefetchjob.h" 0010 #include "driveservice.h" 0011 #include "parentreference.h" 0012 #include "utils.h" 0013 0014 #include <QNetworkReply> 0015 #include <QNetworkRequest> 0016 0017 using namespace KGAPI2; 0018 using namespace KGAPI2::Drive; 0019 0020 class Q_DECL_HIDDEN ParentReferenceFetchJob::Private 0021 { 0022 public: 0023 QString fileId; 0024 QString referenceId; 0025 }; 0026 0027 ParentReferenceFetchJob::ParentReferenceFetchJob(const QString &fileId, const AccountPtr &account, QObject *parent) 0028 : FetchJob(account, parent) 0029 , d(new Private) 0030 { 0031 d->fileId = fileId; 0032 } 0033 0034 ParentReferenceFetchJob::ParentReferenceFetchJob(const QString &fileId, const QString &referenceId, const AccountPtr &account, QObject *parent) 0035 : FetchJob(account, parent) 0036 , d(new Private) 0037 { 0038 d->fileId = fileId; 0039 d->referenceId = referenceId; 0040 } 0041 0042 ParentReferenceFetchJob::~ParentReferenceFetchJob() 0043 { 0044 delete d; 0045 } 0046 0047 void ParentReferenceFetchJob::start() 0048 { 0049 QUrl url; 0050 if (d->referenceId.isEmpty()) { 0051 url = DriveService::fetchParentReferencesUrl(d->fileId); 0052 } else { 0053 url = DriveService::fetchParentReferenceUrl(d->fileId, d->referenceId); 0054 } 0055 QNetworkRequest request(url); 0056 0057 enqueueRequest(request); 0058 } 0059 0060 ObjectsList ParentReferenceFetchJob::handleReplyWithItems(const QNetworkReply *reply, const QByteArray &rawData) 0061 { 0062 ObjectsList items; 0063 0064 const QString contentType = reply->header(QNetworkRequest::ContentTypeHeader).toString(); 0065 ContentType ct = Utils::stringToContentType(contentType); 0066 if (ct == KGAPI2::JSON) { 0067 if (d->referenceId.isEmpty()) { 0068 items << ParentReference::fromJSONFeed(rawData); 0069 } else { 0070 items << ParentReference::fromJSON(rawData); 0071 } 0072 } else { 0073 setError(KGAPI2::InvalidResponse); 0074 setErrorString(tr("Invalid response content type")); 0075 } 0076 0077 emitFinished(); 0078 return items; 0079 } 0080 0081 #include "moc_parentreferencefetchjob.cpp"