Gentoo Archives: gentoo-commits

From: Andreas Sturmlechner <asturm@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: kde-misc/kio-gdrive/files/, kde-misc/kio-gdrive/
Date: Thu, 15 Aug 2019 17:09:59
Message-Id: 1565888983.538efaea5738d193f38cd76a5a4afe12837d1347.asturm@gentoo
1 commit: 538efaea5738d193f38cd76a5a4afe12837d1347
2 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
3 AuthorDate: Thu Aug 15 17:09:01 2019 +0000
4 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
5 CommitDate: Thu Aug 15 17:09:43 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=538efaea
7
8 kde-misc/kio-gdrive: Add patch to refresh credentials
9
10 Package-Manager: Portage-2.3.71, Repoman-2.3.17
11 Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
12
13 .../kio-gdrive-1.2.6-refresh-credentials.patch | 101 +++++++++++++++++++++
14 kde-misc/kio-gdrive/kio-gdrive-1.2.6-r1.ebuild | 5 +-
15 2 files changed, 105 insertions(+), 1 deletion(-)
16
17 diff --git a/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-refresh-credentials.patch b/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-refresh-credentials.patch
18 new file mode 100644
19 index 00000000000..2d595882786
20 --- /dev/null
21 +++ b/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-refresh-credentials.patch
22 @@ -0,0 +1,101 @@
23 +From 4ded388b2b2672f5f7fb953a0150a69fcfaa7cb0 Mon Sep 17 00:00:00 2001
24 +From: David Barchiesi <david@×××××××.si>
25 +Date: Mon, 8 Jul 2019 09:54:08 +0200
26 +Subject: Re get Google credentials from KAccounts when a refresh is needed.
27 +
28 +Summary: Currently, when the Google access token in use expires, the KIO slave silently ignores refreshing the token (only 'not implemented' gets logged) and fails all subsequent api requests. This patch prevents the slave from breaking by requesting new credentials from KAccounts.
29 +
30 +Test Plan: Open a Google Drive folder in Dolphin, wait until accounts token needs a refresh, open another Google Drive folder. The folder loads because a new access token was requested.
31 +
32 +Reviewers: elvisangelaccio
33 +
34 +Reviewed By: elvisangelaccio
35 +
36 +Subscribers: mck182, elvisangelaccio
37 +
38 +Differential Revision: https://phabricator.kde.org/D22009
39 +---
40 + src/kaccountsmanager.cpp | 45 ++++++++++++++++++++++++++++++++-------------
41 + src/kaccountsmanager.h | 2 ++
42 + 2 files changed, 34 insertions(+), 13 deletions(-)
43 +
44 +diff --git a/src/kaccountsmanager.cpp b/src/kaccountsmanager.cpp
45 +index 08272df..dc35852 100644
46 +--- a/src/kaccountsmanager.cpp
47 ++++ b/src/kaccountsmanager.cpp
48 +@@ -85,8 +85,19 @@ AccountPtr KAccountsManager::createAccount()
49 +
50 + AccountPtr KAccountsManager::refreshAccount(const AccountPtr &account)
51 + {
52 +- Q_UNUSED(account)
53 +- qCWarning(GDRIVE) << Q_FUNC_INFO << "not implemented.";
54 ++ const QString accountName = account->accountName();
55 ++ for (auto it = m_accounts.constBegin(); it != m_accounts.constEnd(); ++it) {
56 ++ if (it.value()->accountName() != accountName) {
57 ++ continue;
58 ++ }
59 ++
60 ++ const auto id = it.key();
61 ++ qCDebug(GDRIVE) << "Refreshing" << accountName;
62 ++ auto gapiAccount = getAccountCredentials(id, accountName);
63 ++ m_accounts.insert(id, gapiAccount);
64 ++ return gapiAccount;
65 ++ }
66 ++
67 + return {};
68 + }
69 +
70 +@@ -143,19 +154,27 @@ void KAccountsManager::loadAccounts()
71 + }
72 + qCDebug(GDRIVE) << account->displayName() << "supports gdrive!";
73 +
74 +- auto job = new GetCredentialsJob(id, nullptr);
75 +- job->exec();
76 ++ auto gapiAccount = getAccountCredentials(id, account->displayName());
77 ++ m_accounts.insert(id, gapiAccount);
78 ++ }
79 ++ }
80 ++}
81 +
82 +- auto gapiAccount = AccountPtr(new Account(account->displayName(),
83 +- job->credentialsData().value(QStringLiteral("AccessToken")).toString(),
84 +- job->credentialsData().value(QStringLiteral("RefreshToken")).toString()));
85 ++AccountPtr KAccountsManager::getAccountCredentials(Accounts::AccountId id, const QString& displayName)
86 ++{
87 ++ auto job = new GetCredentialsJob(id, nullptr);
88 ++ job->exec();
89 +
90 +- const auto scopes = job->credentialsData().value(QStringLiteral("Scope")).toStringList();
91 +- for (const auto &scope : scopes) {
92 +- gapiAccount->addScope(QUrl::fromUserInput(scope));
93 +- }
94 ++ auto gapiAccount = AccountPtr(new Account(displayName,
95 ++ job->credentialsData().value(QStringLiteral("AccessToken")).toString(),
96 ++ job->credentialsData().value(QStringLiteral("RefreshToken")).toString()));
97 +
98 +- m_accounts.insert(id, gapiAccount);
99 +- }
100 ++ const auto scopes = job->credentialsData().value(QStringLiteral("Scope")).toStringList();
101 ++ for (const auto &scope : scopes) {
102 ++ gapiAccount->addScope(QUrl::fromUserInput(scope));
103 + }
104 ++
105 ++ qCDebug(GDRIVE) << "Got account credentials for:" << gapiAccount->accountName() << ", accessToken:" << gapiAccount->accessToken() << ", refreshToken:" << gapiAccount->refreshToken();
106 ++
107 ++ return gapiAccount;
108 + }
109 +diff --git a/src/kaccountsmanager.h b/src/kaccountsmanager.h
110 +index 235d11a..d2dbc43 100644
111 +--- a/src/kaccountsmanager.h
112 ++++ b/src/kaccountsmanager.h
113 +@@ -40,6 +40,8 @@ public:
114 + private:
115 + void loadAccounts();
116 +
117 ++ KGAPI2::AccountPtr getAccountCredentials(Accounts::AccountId id, const QString& displayName);
118 ++
119 + QMap<Accounts::AccountId, KGAPI2::AccountPtr> m_accounts;
120 + };
121 +
122 +--
123 +cgit v1.1
124
125 diff --git a/kde-misc/kio-gdrive/kio-gdrive-1.2.6-r1.ebuild b/kde-misc/kio-gdrive/kio-gdrive-1.2.6-r1.ebuild
126 index 41e4f617d5c..f6f2fa71b1f 100644
127 --- a/kde-misc/kio-gdrive/kio-gdrive-1.2.6-r1.ebuild
128 +++ b/kde-misc/kio-gdrive/kio-gdrive-1.2.6-r1.ebuild
129 @@ -39,7 +39,10 @@ BDEPEND="dev-util/intltool"
130
131 DOCS=( README.md )
132
133 -PATCHES=( "${FILESDIR}"/${P}-libkgapi-19.08-{1,2}.patch )
134 +PATCHES=(
135 + "${FILESDIR}"/${P}-libkgapi-19.08-{1,2}.patch
136 + "${FILESDIR}"/${P}-refresh-credentials.patch
137 +)
138
139 src_configure() {
140 local mycmakeargs=(