File indexing completed on 2024-05-12 16:25:56

0001 /*
0002    SPDX-FileCopyrightText: 2022-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "personalaccesstokeninfos.h"
0008 #include "ruqola_debug.h"
0009 
0010 #include <QJsonArray>
0011 #include <QJsonObject>
0012 
0013 PersonalAccessTokenInfos::PersonalAccessTokenInfos() = default;
0014 
0015 QVector<PersonalAccessTokenInfo> PersonalAccessTokenInfos::personalAccessTokenInfos() const
0016 {
0017     return mPersonalAccessTokenInfos;
0018 }
0019 
0020 int PersonalAccessTokenInfos::count() const
0021 {
0022     return mPersonalAccessTokenInfos.count();
0023 }
0024 
0025 void PersonalAccessTokenInfos::clear()
0026 {
0027     mPersonalAccessTokenInfos.clear();
0028 }
0029 
0030 PersonalAccessTokenInfo PersonalAccessTokenInfos::at(int index) const
0031 {
0032     if (index < 0 || index > mPersonalAccessTokenInfos.count()) {
0033         qCWarning(RUQOLA_LOG) << "Invalid index " << index;
0034         return {};
0035     }
0036     return mPersonalAccessTokenInfos.at(index);
0037 }
0038 
0039 void PersonalAccessTokenInfos::removeAt(int index)
0040 {
0041     mPersonalAccessTokenInfos.removeAt(index);
0042 }
0043 
0044 bool PersonalAccessTokenInfos::isEmpty() const
0045 {
0046     return mPersonalAccessTokenInfos.isEmpty();
0047 }
0048 
0049 void PersonalAccessTokenInfos::setPersonalAccessTokenInfos(const QVector<PersonalAccessTokenInfo> &tokenInfos)
0050 {
0051     mPersonalAccessTokenInfos = tokenInfos;
0052 }
0053 
0054 void PersonalAccessTokenInfos::parsePersonalAccessTokenInfos(const QJsonObject &obj)
0055 {
0056     mPersonalAccessTokenInfos.clear();
0057     const QJsonArray tokensArray = obj[QLatin1String("tokens")].toArray();
0058     const auto tokensArrayCount = tokensArray.count();
0059     mPersonalAccessTokenInfos.reserve(tokensArrayCount);
0060     for (auto i = 0; i < tokensArrayCount; ++i) {
0061         PersonalAccessTokenInfo r;
0062         r.parsePersonalAccessTokenInfo(tokensArray.at(i).toObject());
0063         if (r.isValid()) {
0064             mPersonalAccessTokenInfos.append(std::move(r));
0065         } else {
0066             qCWarning(RUQOLA_LOG) << "Invalid personal Access Token Info: " << tokensArray.at(i).toObject();
0067         }
0068     }
0069 }
0070 
0071 QDebug operator<<(QDebug d, const PersonalAccessTokenInfos &t)
0072 {
0073     for (int i = 0, total = t.personalAccessTokenInfos().count(); i < total; ++i) {
0074         d << t.personalAccessTokenInfos().at(i) << "\n";
0075     }
0076     return d;
0077 }