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"