File indexing completed on 2025-03-09 04:52:25

0001 /*
0002  * This file is part of LibKGAPI library
0003  *
0004  * SPDX-FileCopyrightText: 2013 Daniel Vrátil <dvratil@redhat.com>
0005  *
0006  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007  */
0008 
0009 #include "accountinfofetchjob.h"
0010 #include "account.h"
0011 #include "accountinfo.h"
0012 #include "debug.h"
0013 #include "utils.h"
0014 
0015 #include <QNetworkReply>
0016 #include <QNetworkRequest>
0017 
0018 using namespace KGAPI2;
0019 
0020 class Q_DECL_HIDDEN AccountInfoFetchJob::Private
0021 {
0022 };
0023 
0024 AccountInfoFetchJob::AccountInfoFetchJob(const AccountPtr &account, QObject *parent)
0025     : FetchJob(account, parent)
0026     , d(new Private)
0027 {
0028 }
0029 
0030 AccountInfoFetchJob::~AccountInfoFetchJob()
0031 {
0032     delete d;
0033 }
0034 
0035 void AccountInfoFetchJob::start()
0036 {
0037     const QUrl url = QUrl(QStringLiteral("https://www.googleapis.com/oauth2/v1/userinfo"));
0038     QNetworkRequest request(url);
0039 
0040     QStringList headers;
0041     const auto rawHeaderList = request.rawHeaderList();
0042     headers.reserve(rawHeaderList.size());
0043     for (const QByteArray &str : std::as_const(rawHeaderList)) {
0044         headers << QLatin1StringView(str) + QLatin1StringView(": ") + QLatin1StringView(request.rawHeader(str));
0045     }
0046 
0047     enqueueRequest(request);
0048 }
0049 
0050 ObjectsList AccountInfoFetchJob::handleReplyWithItems(const QNetworkReply *reply, const QByteArray &rawData)
0051 {
0052     ObjectsList items;
0053 
0054     const QString contentType = reply->header(QNetworkRequest::ContentTypeHeader).toString();
0055     ContentType ct = Utils::stringToContentType(contentType);
0056     if (ct == KGAPI2::JSON) {
0057         items << AccountInfo::fromJSON(rawData);
0058     } else {
0059         setError(KGAPI2::InvalidResponse);
0060         setErrorString(tr("Invalid response content type"));
0061         emitFinished();
0062     }
0063 
0064     return items;
0065 }
0066 
0067 #include "moc_accountinfofetchjob.cpp"