46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
#ifndef CREDENTIALS_H
|
|
#define CREDENTIALS_H
|
|
|
|
#include "client.h"
|
|
#include <QXmppTask.h>
|
|
#include <QXmppPromise.h>
|
|
#include <QObject>
|
|
#include <QList>
|
|
#include <QPair>
|
|
#include <QStringList>
|
|
#include <variant>
|
|
|
|
class Credentials : public QObject
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
struct Success {};
|
|
struct Error
|
|
{
|
|
QString description;
|
|
};
|
|
|
|
using Pair = QPair<QString, QString>;
|
|
using PairList = QList<Pair>;
|
|
using StoreResult = std::variant<Success, Error>;
|
|
using LoadResult = std::variant<QString, Error>;
|
|
using PairListResult = std::variant<PairList, Error>;
|
|
|
|
QXmppTask<PairListResult> load();
|
|
QXmppTask<StoreResult> store(Client *c);
|
|
|
|
private:
|
|
using Users = std::variant<QStringList, Error>;
|
|
|
|
QXmppTask<StoreResult> store(const QString &key, const QString &value);
|
|
QXmppTask<StoreResult> store(const QString &user);
|
|
QXmppTask<LoadResult> load(const QString &key);
|
|
QXmppTask<LoadResult> storedUsersList();
|
|
QXmppTask<Users> storedUsers();
|
|
QXmppTask<PairListResult> load(PairList &pairs,
|
|
QStringList::const_iterator &it,
|
|
QStringList::const_iterator end);
|
|
};
|
|
|
|
#endif
|