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

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 "commentapprovejob.h"
0008 #include "account.h"
0009 #include "bloggerservice.h"
0010 #include "comment.h"
0011 #include "utils.h"
0012 
0013 #include <QNetworkReply>
0014 #include <QNetworkRequest>
0015 
0016 using namespace KGAPI2;
0017 using namespace KGAPI2::Blogger;
0018 
0019 class Q_DECL_HIDDEN CommentApproveJob::Private
0020 {
0021 public:
0022     Private(const QString &blogId, const QString &postId, const QString &commentId, ApprovalAction action);
0023 
0024     const QString blogId;
0025     const QString postId;
0026     const QString commentId;
0027     const ApprovalAction action;
0028 };
0029 
0030 CommentApproveJob::Private::Private(const QString &blogId_, const QString &postId_, const QString &commentId_, CommentApproveJob::ApprovalAction action_)
0031     : blogId(blogId_)
0032     , postId(postId_)
0033     , commentId(commentId_)
0034     , action(action_)
0035 {
0036 }
0037 
0038 CommentApproveJob::CommentApproveJob(const QString &blogId,
0039                                      const QString &postId,
0040                                      const QString &commentId,
0041                                      CommentApproveJob::ApprovalAction action,
0042                                      const AccountPtr &account,
0043                                      QObject *parent)
0044     : ModifyJob(account, parent)
0045     , d(new Private(blogId, postId, commentId, action))
0046 {
0047 }
0048 
0049 CommentApproveJob::CommentApproveJob(const CommentPtr &comment, CommentApproveJob::ApprovalAction action, const AccountPtr &account, QObject *parent)
0050     : ModifyJob(account, parent)
0051     , d(new Private(comment->blogId(), comment->postId(), comment->id(), action))
0052 {
0053 }
0054 
0055 CommentApproveJob::~CommentApproveJob()
0056 {
0057     delete d;
0058 }
0059 
0060 void CommentApproveJob::start()
0061 {
0062     QNetworkRequest request;
0063     if (d->action == Blogger::CommentApproveJob::Approve) {
0064         request.setUrl(BloggerService::approveCommentUrl(d->blogId, d->postId, d->commentId));
0065     } else {
0066         request.setUrl(BloggerService::markCommentAsSpamUrl(d->blogId, d->postId, d->commentId));
0067     }
0068 
0069     enqueueRequest(request);
0070 }
0071 
0072 ObjectsList CommentApproveJob::handleReplyWithItems(const QNetworkReply *reply, const QByteArray &rawData)
0073 {
0074     const QString contentType = reply->header(QNetworkRequest::ContentTypeHeader).toString();
0075     ContentType ct = Utils::stringToContentType(contentType);
0076     ObjectsList items;
0077     if (ct != KGAPI2::JSON) {
0078         setError(KGAPI2::InvalidResponse);
0079         setErrorString(tr("Invalid response content type"));
0080         emitFinished();
0081         return items;
0082     }
0083 
0084     items << Comment::fromJSON(rawData);
0085     emitFinished();
0086     return items;
0087 }
0088 
0089 #include "moc_commentapprovejob.cpp"