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"