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"