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"