f53df7da64
Code submissions have continually suffered from formatting inconsistencies that constantly have to be addressed. Using clang-format simplifies this by making code formatting more consistent, and allows automation of the code formatting so that maintainers can focus more on the code itself instead of code formatting.
80 lines
1.7 KiB
C++
80 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include <QDialog>
|
|
#include <string>
|
|
#include <memory>
|
|
|
|
#include "auth-base.hpp"
|
|
|
|
class QCefWidget;
|
|
|
|
class OAuthLogin : public QDialog {
|
|
Q_OBJECT
|
|
|
|
QCefWidget *cefWidget = nullptr;
|
|
QString code;
|
|
bool get_token = false;
|
|
bool fail = false;
|
|
|
|
public:
|
|
OAuthLogin(QWidget *parent, const std::string &url, bool token);
|
|
~OAuthLogin();
|
|
|
|
inline QString GetCode() const { return code; }
|
|
inline bool LoadFail() const { return fail; }
|
|
|
|
virtual int exec() override;
|
|
|
|
public slots:
|
|
void urlChanged(const QString &url);
|
|
};
|
|
|
|
class OAuth : public Auth {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
inline OAuth(const Def &d) : Auth(d) {}
|
|
|
|
typedef std::function<std::shared_ptr<Auth>(QWidget *)> login_cb;
|
|
typedef std::function<void()> delete_cookies_cb;
|
|
|
|
static std::shared_ptr<Auth> Login(QWidget *parent,
|
|
const std::string &service);
|
|
static void DeleteCookies(const std::string &service);
|
|
|
|
static void RegisterOAuth(const Def &d, create_cb create,
|
|
login_cb login,
|
|
delete_cookies_cb delete_cookies);
|
|
|
|
protected:
|
|
std::string refresh_token;
|
|
std::string token;
|
|
bool implicit = false;
|
|
uint64_t expire_time = 0;
|
|
int currentScopeVer = 0;
|
|
|
|
virtual void SaveInternal() override;
|
|
virtual bool LoadInternal() override;
|
|
|
|
virtual bool RetryLogin() = 0;
|
|
bool TokenExpired();
|
|
bool GetToken(const char *url, const std::string &client_id,
|
|
int scope_ver,
|
|
const std::string &auth_code = std::string(),
|
|
bool retry = false);
|
|
};
|
|
|
|
class OAuthStreamKey : public OAuth {
|
|
Q_OBJECT
|
|
|
|
protected:
|
|
std::string key_;
|
|
|
|
public:
|
|
inline OAuthStreamKey(const Def &d) : OAuth(d) {}
|
|
|
|
inline const std::string &key() const { return key_; }
|
|
|
|
virtual void OnStreamConfig() override;
|
|
};
|