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