nymea-app/libnymea-app-core/connection/awsclient.h

60 lines
1.1 KiB
C++

#ifndef AWSCLIENT_H
#define AWSCLIENT_H
#include <QObject>
#include <QNetworkRequest>
#include <QDate>
class QNetworkAccessManager;
class AWSDevice {
public:
QString id;
QString name;
bool online;
};
class AWSClient : public QObject
{
Q_OBJECT
Q_PROPERTY(bool isLoggedIn READ isLoggedIn NOTIFY isLoggedInChanged)
public:
explicit AWSClient(QObject *parent = nullptr);
bool isLoggedIn() const;
Q_INVOKABLE void login(const QString &username, const QString &password);
Q_INVOKABLE void fetchDevices();
Q_INVOKABLE void postToMQTT();
Q_INVOKABLE void getId();
QByteArray accessToken() const;
signals:
void isLoggedInChanged();
void devicesFetched(QList<AWSDevice> devices);
private:
void getCredentialsForIdentity(const QString &identityId);
void connectMQTT();
private:
QNetworkAccessManager *m_nam = nullptr;
QString m_username;
QByteArray m_accessToken;
QByteArray m_idToken;
QByteArray m_refreshToken;
QByteArray m_accessKeyId;
QByteArray m_secretKey;
QByteArray m_sessionToken;
QDateTime m_expirationDate;
};
#endif // AWSCLIENT_H