File indexing completed on 2024-05-12 05:22:11

0001 /*
0002  * SPDX-FileCopyrightText: 2014 Daniel Vrátil <dvratil@redhat.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005  */
0006 
0007 #include "pagemodifyjob.h"
0008 #include "bloggerservice.h"
0009 #include "page.h"
0010 #include "utils.h"
0011 
0012 #include <QNetworkReply>
0013 #include <QNetworkRequest>
0014 
0015 using namespace KGAPI2;
0016 using namespace KGAPI2::Blogger;
0017 
0018 class Q_DECL_HIDDEN PageModifyJob::Private
0019 {
0020 public:
0021     Private(const PagePtr &page);
0022 
0023     const PagePtr page;
0024 };
0025 
0026 PageModifyJob::Private::Private(const PagePtr &page_)
0027     : page(page_)
0028 {
0029 }
0030 
0031 PageModifyJob::PageModifyJob(const PagePtr &page, const AccountPtr &account, QObject *parent)
0032     : ModifyJob(account, parent)
0033     , d(new Private(page))
0034 {
0035 }
0036 
0037 PageModifyJob::~PageModifyJob()
0038 {
0039     delete d;
0040 }
0041 
0042 void PageModifyJob::start()
0043 {
0044     const QUrl url = BloggerService::modifyPageUrl(d->page->blogId(), d->page->id());
0045     QNetworkRequest request(url);
0046 
0047     const QByteArray rawData = Page::toJSON(d->page);
0048     enqueueRequest(request, rawData, QStringLiteral("application/json"));
0049 }
0050 
0051 ObjectsList PageModifyJob::handleReplyWithItems(const QNetworkReply *reply, const QByteArray &rawData)
0052 {
0053     const QString contentType = reply->header(QNetworkRequest::ContentTypeHeader).toString();
0054     ContentType ct = Utils::stringToContentType(contentType);
0055     ObjectsList items;
0056     if (ct != KGAPI2::JSON) {
0057         setError(KGAPI2::InvalidResponse);
0058         setErrorString(tr("Invalid response content type"));
0059         emitFinished();
0060         return items;
0061     }
0062 
0063     items << Page::fromJSON(rawData);
0064     emitFinished();
0065     return items;
0066 }
0067 
0068 #include "moc_pagemodifyjob.cpp"