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 "postcreatejob.h" 0008 #include "bloggerservice.h" 0009 #include "post.h" 0010 #include "utils.h" 0011 0012 #include <QNetworkReply> 0013 #include <QNetworkRequest> 0014 #include <QUrlQuery> 0015 0016 using namespace KGAPI2; 0017 using namespace KGAPI2::Blogger; 0018 0019 class Q_DECL_HIDDEN PostCreateJob::Private 0020 { 0021 public: 0022 Private(const PostPtr &post, bool isDraft); 0023 0024 const PostPtr post; 0025 const bool isDraft; 0026 }; 0027 0028 PostCreateJob::Private::Private(const PostPtr &post_, bool isDraft_) 0029 : post(post_) 0030 , isDraft(isDraft_) 0031 { 0032 } 0033 0034 PostCreateJob::PostCreateJob(const PostPtr &post, bool isDraft, const AccountPtr &account, QObject *parent) 0035 : CreateJob(account, parent) 0036 , d(new Private(post, isDraft)) 0037 { 0038 } 0039 0040 PostCreateJob::~PostCreateJob() 0041 { 0042 delete d; 0043 } 0044 0045 void PostCreateJob::start() 0046 { 0047 QUrl url = BloggerService::createPostUrl(d->post->blogId()); 0048 if (d->isDraft) { 0049 QUrlQuery query(url); 0050 query.addQueryItem(QStringLiteral("isDraft"), Utils::bool2Str(d->isDraft)); 0051 url.setQuery(query); 0052 } 0053 QNetworkRequest request(url); 0054 0055 const QByteArray rawData = Post::toJSON(d->post); 0056 0057 enqueueRequest(request, rawData, QStringLiteral("application/json")); 0058 } 0059 0060 ObjectsList PostCreateJob::handleReplyWithItems(const QNetworkReply *reply, const QByteArray &rawData) 0061 { 0062 const QString contentType = reply->header(QNetworkRequest::ContentTypeHeader).toString(); 0063 ContentType ct = Utils::stringToContentType(contentType); 0064 ObjectsList items; 0065 if (ct != KGAPI2::JSON) { 0066 setError(KGAPI2::InvalidResponse); 0067 setErrorString(tr("Invalid response content type")); 0068 emitFinished(); 0069 return items; 0070 } 0071 0072 items << Post::fromJSON(rawData); 0073 emitFinished(); 0074 return items; 0075 } 0076 0077 #include "moc_postcreatejob.cpp"