File indexing completed on 2024-05-19 05:00:39
0001 /* 0002 * SPDX-FileCopyrightText: 2014 Daniel Vrátil <dvratil@redhat.com> 0003 * SPDX-FileCopyrightText: 2016 Elvis Angelaccio <elvis.angelaccio@kde.org> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-or-later 0006 * 0007 */ 0008 0009 #pragma once 0010 0011 #include "abstractaccountmanager.h" 0012 0013 namespace QKeychain 0014 { 0015 class Job; 0016 } 0017 0018 class KeychainAccountManager : public AbstractAccountManager 0019 { 0020 public: 0021 virtual ~KeychainAccountManager() 0022 { 0023 } 0024 0025 KGAPI2::AccountPtr account(const QString &accountName) override; 0026 KGAPI2::AccountPtr createAccount() override; 0027 KGAPI2::AccountPtr refreshAccount(const KGAPI2::AccountPtr &account) override; 0028 void removeAccount(const QString &accountName) override; 0029 QSet<QString> accounts() override; 0030 0031 private: 0032 template<typename T> 0033 QByteArray serialize(const T &object); 0034 0035 template<typename T> 0036 T deserialize(QByteArray *data); 0037 0038 void storeAccount(const KGAPI2::AccountPtr &account); 0039 0040 // Store/remove account names in/from gdrive-accounts keychain entry. 0041 void removeAccountName(const QString &accountName); 0042 void storeAccountName(const QString &accountName); 0043 0044 QMap<QString, QString> readMap(const QString &accountName); 0045 void writeMap(const QString &accountName, const QMap<QString, QString> &map); 0046 void runKeychainJob(QKeychain::Job *job); 0047 0048 QSet<QString> m_accounts; 0049 0050 static QString s_apiKey; 0051 static QString s_apiSecret; 0052 };