LeechCraft
0.6.70-19424-g027e980fd1
Modular cross-platform feature rich live environment.
Toggle main menu visibility
Loading...
Searching...
No Matches
vkauthmanager.h
Go to the documentation of this file.
1
/**********************************************************************
2
* LeechCraft - modular cross-platform feature rich internet client.
3
* Copyright (C) 2006-2014 Georg Rudoy
4
*
5
* Distributed under the Boost Software License, Version 1.0.
6
* (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7
**********************************************************************/
8
9
#pragma once
10
11
#include <functional>
12
#include <variant>
13
#include <QObject>
14
#include <QDateTime>
15
#include <QUrl>
16
#include <
interfaces/core/icoreproxy.h
>
17
#include <
util/sll/util.h
>
18
#include <
util/sll/eitherfwd.h
>
19
#include "
svcauthconfig.h
"
20
21
class
QNetworkReply;
22
class
QTimer;
23
24
template
<
typename
>
25
class
QFuture
;
26
27
class
IWebWidget
;
28
29
namespace
LC::Util
30
{
31
class
QueueManager
;
32
enum class
QueuePriority
;
33
34
class
CustomCookieJar
;
35
36
namespace
SvcAuth
37
{
38
class
UTIL_SVCAUTH_API
VkAuthManager
:
public
QObject
39
{
40
Q_OBJECT
41
42
ICoreProxy_ptr
Proxy_;
43
44
const
QString AccountHR_;
45
46
std::unique_ptr<IWebWidget> Browser_;
47
48
QNetworkAccessManager *
const
AuthNAM_;
49
Util::CustomCookieJar
*
const
Cookies_;
50
51
QueueManager
*
const
Queue_;
52
53
QString Token_;
54
QDateTime ReceivedAt_;
55
qint32 ValidFor_ = 0;
56
57
bool
IsRequesting_ =
false
;
58
59
const
QString ID_;
60
QUrl URL_;
61
62
bool
IsRequestScheduled_ =
false
;
63
QTimer *
const
ScheduleTimer_;
64
65
bool
SilentMode_ =
false
;
66
67
bool
HasTracked_ =
false
;
68
public
:
69
using
RequestQueue_t
=
QList
<std::function<void (QString)>> ;
70
using
RequestQueue_ptr
=
RequestQueue_t
*;
71
72
using
PrioRequestQueue_t
=
QList
<std::pair<std::function<void (QString)>,
QueuePriority
>>;
73
using
PrioRequestQueue_ptr
=
PrioRequestQueue_t
*;
74
75
using
ScheduleGuard_t
=
Util::DefaultScopeGuard
;
76
private
:
77
QList<RequestQueue_ptr>
ManagedQueues_;
78
QList<PrioRequestQueue_ptr>
PrioManagedQueues_;
79
public
:
80
VkAuthManager
(
const
QString& accountName,
const
QString& clientId,
81
const
QStringList& scope,
const
QByteArray& cookies,
82
const
ICoreProxy_ptr
&,
QueueManager
* =
nullptr
, QObject* =
nullptr
);
83
~VkAuthManager
()
override
;
84
85
bool
IsAuthenticated
()
const
;
86
bool
HadAuthentication
()
const
;
87
88
void
UpdateScope
(
const
QStringList&);
89
90
void
GetAuthKey
();
91
92
struct
SilentMode
{};
93
using
AuthKeyError_t
= std::variant<SilentMode>;
94
using
AuthKeyResult_t
=
Either<AuthKeyError_t, QString>
;
95
96
[[nodiscard]]
QFuture<AuthKeyResult_t>
GetAuthKeyFuture
();
97
98
[[nodiscard]]
ScheduleGuard_t
ManageQueue
(
RequestQueue_ptr
);
99
[[nodiscard]]
ScheduleGuard_t
ManageQueue
(
PrioRequestQueue_ptr
);
100
101
void
SetSilentMode
(
bool
);
102
103
void
ClearAuthData
();
104
void
Reauth
();
105
private
:
106
void
InvokeQueues (
const
QString&);
107
108
void
RequestURL (
const
QUrl&);
109
void
RequestAuthKey ();
110
bool
CheckReply (QUrl);
111
bool
CheckError (
const
QUrl&);
112
113
void
ScheduleTrack (
const
QString&);
114
void
HandleGotForm (QNetworkReply*);
115
private
slots:
116
void
handleUrlChanged (
const
QUrl&);
117
signals:
118
void
gotAuthKey
(
const
QString&);
119
void
cookiesChanged
(
const
QByteArray&);
120
void
authCanceled
();
121
void
justAuthenticated
();
122
};
123
}
124
}
IWebWidget
Common interface for a web widget.
Definition
iwebbrowser.h:24
LC::Util::CustomCookieJar
A customized cookie jar with additional features.
Definition
customcookiejar.h:27
LC::Util::Either
Definition
either.h:34
LC::Util::QueueManager
A simple scheduling manager for a queue of functors.
Definition
queuemanager.h:44
LC::Util::SvcAuth::VkAuthManager::ScheduleGuard_t
Util::DefaultScopeGuard ScheduleGuard_t
Definition
vkauthmanager.h:75
LC::Util::SvcAuth::VkAuthManager::ManageQueue
ScheduleGuard_t ManageQueue(RequestQueue_ptr)
Definition
vkauthmanager.cpp:137
LC::Util::SvcAuth::VkAuthManager::ClearAuthData
void ClearAuthData()
Definition
vkauthmanager.cpp:284
LC::Util::SvcAuth::VkAuthManager::SetSilentMode
void SetSilentMode(bool)
Definition
vkauthmanager.cpp:165
LC::Util::SvcAuth::VkAuthManager::HadAuthentication
bool HadAuthentication() const
Definition
vkauthmanager.cpp:80
LC::Util::SvcAuth::VkAuthManager::RequestQueue_ptr
RequestQueue_t * RequestQueue_ptr
Definition
vkauthmanager.h:70
LC::Util::SvcAuth::VkAuthManager::PrioRequestQueue_ptr
PrioRequestQueue_t * PrioRequestQueue_ptr
Definition
vkauthmanager.h:73
LC::Util::SvcAuth::VkAuthManager::PrioRequestQueue_t
QList< std::pair< std::function< void(QString)>, QueuePriority > > PrioRequestQueue_t
Definition
vkauthmanager.h:72
LC::Util::SvcAuth::VkAuthManager::RequestQueue_t
QList< std::function< void(QString)> > RequestQueue_t
Definition
vkauthmanager.h:69
LC::Util::SvcAuth::VkAuthManager::~VkAuthManager
~VkAuthManager() override
LC::Util::SvcAuth::VkAuthManager::GetAuthKeyFuture
QFuture< AuthKeyResult_t > GetAuthKeyFuture()
Definition
vkauthmanager.cpp:118
LC::Util::SvcAuth::VkAuthManager::IsAuthenticated
bool IsAuthenticated() const
Definition
vkauthmanager.cpp:74
LC::Util::SvcAuth::VkAuthManager::AuthKeyResult_t
Either< AuthKeyError_t, QString > AuthKeyResult_t
Definition
vkauthmanager.h:94
LC::Util::SvcAuth::VkAuthManager::UpdateScope
void UpdateScope(const QStringList &)
Definition
vkauthmanager.cpp:85
LC::Util::SvcAuth::VkAuthManager::AuthKeyError_t
std::variant< SilentMode > AuthKeyError_t
Definition
vkauthmanager.h:93
LC::Util::SvcAuth::VkAuthManager::Reauth
void Reauth()
Definition
vkauthmanager.cpp:315
LC::Util::SvcAuth::VkAuthManager::authCanceled
void authCanceled()
LC::Util::SvcAuth::VkAuthManager::cookiesChanged
void cookiesChanged(const QByteArray &)
LC::Util::SvcAuth::VkAuthManager::GetAuthKey
void GetAuthKey()
Definition
vkauthmanager.cpp:97
LC::Util::SvcAuth::VkAuthManager::gotAuthKey
void gotAuthKey(const QString &)
LC::Util::SvcAuth::VkAuthManager::justAuthenticated
void justAuthenticated()
LC::Util::SvcAuth::VkAuthManager::VkAuthManager
VkAuthManager(const QString &accountName, const QString &clientId, const QStringList &scope, const QByteArray &cookies, const ICoreProxy_ptr &, QueueManager *=nullptr, QObject *=nullptr)
Definition
vkauthmanager.cpp:44
QFuture
Definition
idownload.h:17
QList
Definition
ianrulesstorage.h:16
eitherfwd.h
icoreproxy.h
ICoreProxy_ptr
std::shared_ptr< ICoreProxy > ICoreProxy_ptr
Definition
icoreproxy.h:177
LC::Util::SvcAuth
Definition
vkauthmanager.cpp:31
LC::Util
Definition
icoreproxy.h:34
LC::Util::QueuePriority
QueuePriority
The priority of the action in the queue.
Definition
queuemanager.h:28
LC::Util::DefaultScopeGuard
detail::ScopeGuard< detail::DefaultScopeGuardDeleter > DefaultScopeGuard
Definition
util.h:132
util.h
LC::Util::SvcAuth::VkAuthManager::SilentMode
Definition
vkauthmanager.h:92
svcauthconfig.h
UTIL_SVCAUTH_API
#define UTIL_SVCAUTH_API
Definition
svcauthconfig.h:16
src
util
svcauth
vkauthmanager.h
Generated by
1.18.0