-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgooglecloudoauth2.h
More file actions
67 lines (51 loc) · 1.74 KB
/
Copy pathgooglecloudoauth2.h
File metadata and controls
67 lines (51 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#ifndef GOOGLECLOUDOAUTH2_H
#define GOOGLECLOUDOAUTH2_H
#include <firebaseadminexports.h>
#include <QElapsedTimer>
#include <QJsonObject>
#include <QNetworkAccessManager>
#include <QObject>
#include <QPointer>
struct FIREBASE_ADMIN_QT_EXPORT GoogleCloudReply {
QJsonObject data;
bool error = false;
};
struct FIREBASE_ADMIN_QT_EXPORT GoogleCloudCode {
std::optional<QPointer<const QObject>> receiver;
std::function<void(const GoogleCloudReply &)> code;
void call(const GoogleCloudReply &gcr) const
{
if (code && (!receiver.has_value() || receiver->isNull())) {
code(gcr);
}
}
};
class FIREBASE_ADMIN_QT_EXPORT GoogleCloudOAuth2 : public QObject
{
Q_OBJECT
public:
explicit GoogleCloudOAuth2(QObject *parent = nullptr);
void setAccountCredentialFile(const QString &filename);
void setAccountCredentialData(const QByteArray &data);
void setAccountCredential(const QJsonObject &accountCredential);
QJsonObject accountCredential() const;
QNetworkAccessManager *networkAccessManager() const;
void setNetworkAccessManager(QNetworkAccessManager *nam);
virtual QNetworkRequest defaultRequest(const QUrl &url) const;
QByteArray accessTokenHeader() const;
void setScopes(const QStringList &scopes);
void getAccessToken();
void getAccessToken(QObject *receiver, std::function<void(const GoogleCloudReply &)> code);
protected:
QNetworkAccessManager *m_nam;
private:
QByteArray m_accessTokenHeader;
QStringList m_scopes;
QJsonObject m_credentialsFile;
QJsonObject m_token;
std::vector<GoogleCloudCode> m_codeToRun;
QElapsedTimer m_expiresTimer;
qint64 m_expires = 0;
bool m_gettingToken = false;
};
#endif // GOOGLECLOUDOAUTH2_H