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

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 "postmodifyjob.h"
0008 #include "bloggerservice.h"
0009 #include "post.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 PostModifyJob::Private
0019 {
0020 public:
0021     Private(const PostPtr &post);
0022 
0023     const PostPtr post;
0024 };
0025 
0026 PostModifyJob::Private::Private(const PostPtr &post_)
0027     : post(post_)
0028 {
0029 }
0030 
0031 PostModifyJob::PostModifyJob(const PostPtr &post, const AccountPtr &account, QObject *parent)
0032     : ModifyJob(account, parent)
0033     , d(new Private(post))
0034 {
0035 }
0036 
0037 PostModifyJob::~PostModifyJob()
0038 {
0039     delete d;
0040 }
0041 
0042 void PostModifyJob::start()
0043 {
0044     const QUrl url = BloggerService::modifyPostUrl(d->post->blogId(), d->post->id());
0045     QNetworkRequest request(url);
0046 
0047     const QByteArray rawData = Post::toJSON(d->post);
0048     enqueueRequest(request, rawData, QStringLiteral("application/json"));
0049 }
0050 
0051 ObjectsList PostModifyJob::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 << Post::fromJSON(rawData);
0064     emitFinished();
0065     return items;
0066 }
0067 
0068 #include "moc_postmodifyjob.cpp"