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 "pagecreatejob.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 PageCreateJob::Private
0019 {
0020 public:
0021     Private(const PagePtr &page);
0022 
0023     const PagePtr page;
0024 };
0025 
0026 PageCreateJob::Private::Private(const PagePtr &page_)
0027     : page(page_)
0028 {
0029 }
0030 
0031 PageCreateJob::PageCreateJob(const PagePtr &page, const AccountPtr &account, QObject *parent)
0032     : CreateJob(account, parent)
0033     , d(new Private(page))
0034 {
0035 }
0036 
0037 PageCreateJob::~PageCreateJob()
0038 {
0039     delete d;
0040 }
0041 
0042 void PageCreateJob::start()
0043 {
0044     const QUrl url = BloggerService::createPageUrl(d->page->blogId());
0045     QNetworkRequest request(url);
0046 
0047     const QByteArray rawData = Page::toJSON(d->page);
0048 
0049     enqueueRequest(request, rawData, QStringLiteral("application/json"));
0050 }
0051 
0052 ObjectsList PageCreateJob::handleReplyWithItems(const QNetworkReply *reply, const QByteArray &rawData)
0053 {
0054     const QString contentType = reply->header(QNetworkRequest::ContentTypeHeader).toString();
0055     ContentType ct = Utils::stringToContentType(contentType);
0056     ObjectsList items;
0057     if (ct != KGAPI2::JSON) {
0058         setError(KGAPI2::InvalidResponse);
0059         setErrorString(tr("Invalid response content type"));
0060         emitFinished();
0061         return items;
0062     }
0063 
0064     items << Page::fromJSON(rawData);
0065     emitFinished();
0066     return items;
0067 }
0068 
0069 #include "moc_pagecreatejob.cpp"