summaryrefslogtreecommitdiff
path: root/kde-misc/kio-gdrive
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2019-08-18 18:16:17 +0100
committerV3n3RiX <venerix@redcorelinux.org>2019-08-18 18:16:17 +0100
commitfc637fb28da700da71ec2064d65ca5a7a31b9c6c (patch)
tree326613a08f25851c388715e205576a2e7d25dc4f /kde-misc/kio-gdrive
parentb24bd25253fe093f722ab576d29fdc41d04cb1ee (diff)
gentoo resync : 18.08.2019
Diffstat (limited to 'kde-misc/kio-gdrive')
-rw-r--r--kde-misc/kio-gdrive/Manifest6
-rw-r--r--kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-1.patch120
-rw-r--r--kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-2.patch42
-rw-r--r--kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-refresh-credentials.patch101
-rw-r--r--kde-misc/kio-gdrive/kio-gdrive-1.2.6-r1.ebuild52
-rw-r--r--kde-misc/kio-gdrive/kio-gdrive-1.2.6.ebuild2
6 files changed, 321 insertions, 2 deletions
diff --git a/kde-misc/kio-gdrive/Manifest b/kde-misc/kio-gdrive/Manifest
index a13b56d5996e..4d396fdf258b 100644
--- a/kde-misc/kio-gdrive/Manifest
+++ b/kde-misc/kio-gdrive/Manifest
@@ -1,3 +1,7 @@
+AUX kio-gdrive-1.2.6-libkgapi-19.08-1.patch 5510 BLAKE2B 2f75ff59a8f53bb55f824031161114e2230a2c5e0f987eb43e906d54c6df8f2e7c7aa346624d6dcc9d0f007242184506d3f57d272f7ef2189f95b4b26bac85e6 SHA512 e53ef54ac5006bb9dc7e729d3bfa041abb257558ac976754de342ea8f73d40472331eb9255e47abc93efc3746de52401d31634a54c0d05f384f545cb1a836a8e
+AUX kio-gdrive-1.2.6-libkgapi-19.08-2.patch 1825 BLAKE2B 7fd17ef8b92ca569531d16d91a99bc29483015040b4dbcbd9ab994e3bb06e1cdc80e89b34f7941270b277f1997a5ca442e536a8369011cfc0cb5c50d8f9c604f SHA512 2a5d672a060befb388696e4787fb692f6e219bd0a904875fa756b50d53436b7c281c120ba455fc4be98237eda869d6fe790ddff3848914a262d5082fb7c2f6a2
+AUX kio-gdrive-1.2.6-refresh-credentials.patch 4224 BLAKE2B f70a40eef14d31f296effb554308303fe9b82c21b8e3c3a56020d5548dfbd9a967ef27d24ac4b44398c681db64dabff87a088ad3e47fe9e5f962af2080471f31 SHA512 8fc99adb52f1e9b9c49c94357103a51d3de367ea1d5a98afe361910307fe1a424b9f0c5fb0ec1e5f0cc2183ac87f2d6cb1730ed12fecc76b68e8860317dfbedf
DIST kio-gdrive-1.2.6.tar.xz 46464 BLAKE2B 266245d0e640627ff98e33719d668b6e0b310ca17dd87106906ac9fe41294ce5722965c40695d1068e6d6e04c8746b79fecc8bf510c5e2f6e24d17871eb00fa1 SHA512 10a1d7a18d2fed5864543951a512a758eaed8f31bcd7130257bf7d3e66e88d477e3349d9337ee0c5f3437eaa7b93d020f51ff063b940387137d872f6e5fca3f0
-EBUILD kio-gdrive-1.2.6.ebuild 1059 BLAKE2B f3f25464d9b9e5981a0627d70386658acda2dcbc50f740e4278e6efc565d1af61e309eed381861a3ad3da825835aaec924693d3df292de935cc6adfa42840387 SHA512 17a55066e692bd50c8b5511b8a02b3fa97fd5a6de42f3309f109799caf04b755972f26e250f38f71581542eefe922f9629427543d0dd9db31bca16187726e3ed
+EBUILD kio-gdrive-1.2.6-r1.ebuild 1192 BLAKE2B 85bdc028110052b6be956180004a4eec47bb22a6a0b61a6be93ed0264c422302291d0c0db763a70fab6aa0bb1ef418c98902907d8a976b0e3e14cda185350033 SHA512 7ddf6d7f9da2967365218f06522224664564f4c4b10d7fc4d6dbe7668adbd8563c2bb1332ced44d6e51415074cbe30b4482ffcc8c3cf99e0cee38b545643b78a
+EBUILD kio-gdrive-1.2.6.ebuild 1059 BLAKE2B 79253f2bb8832acb48eb275035e6bc333eb8375acf4df42ecb1791bedbf3547646097723623e62dc12b258225bdba9dd73e72aa3df2b9508431b114a31c602c4 SHA512 052b7a83a17de28f8fc2d2d0c1ed871fdabcd7ca010596d516b5d97da3ba50ddd2c9969b97490d9c24215a885a757ea98b408f2dc777557e757341b1c3af966c
MISC metadata.xml 402 BLAKE2B 80f60bca3fa59b7e22727709066453e1002c786c2eda688aa437f86fd99d73aa4b8c35a22571d3f774c55d16b1a4267fb0242253fd38a45890701755cca72afa SHA512 2c94ff5a07cb0a89d93cf798ee2b9a9f163f448e9d6d3185c06d58b42c1a9ef480adfafd540a021d4f9ebab6bb78e979c74e9a83867abff13f66b2b35eaafd21
diff --git a/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-1.patch b/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-1.patch
new file mode 100644
index 000000000000..03352081b73f
--- /dev/null
+++ b/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-1.patch
@@ -0,0 +1,120 @@
+From 01ec4d87b2e28de5eb3c23ec469c6c746f573520 Mon Sep 17 00:00:00 2001
+From: David Barchiesi <david@barchie.si>
+Date: Sun, 19 May 2019 12:38:24 +0200
+Subject: Adapt to LibKGAPI setFields() changes.
+
+Summary:
+In the next release, LibKGAPI has changed the way it sets fields in `FileFetchJob` and in general allows setting response fields for all `Job`s (see [[ https://phabricator.kde.org/D20886 | D20886 Add fields standard query parameter to Job and use it in FileFetchJob ]]).
+
+This patch adjusts KIO Gdrive to this change and limits the response in `AboutFetchJob`s.
+
+Reviewers: dvratil, elvisangelaccio
+
+Subscribers: #libkgapi, #kio_gdrive
+
+Tags: #kio_gdrive, #libkgapi
+
+Differential Revision: https://phabricator.kde.org/D20888
+---
+ CMakeLists.txt | 2 +-
+ src/kio_gdrive.cpp | 30 ++++++++++++++++++------------
+ 2 files changed, 19 insertions(+), 13 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index a830925..680ae3e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -5,7 +5,7 @@ project(kio-gdrive VERSION ${GDRIVE_VERSION})
+
+ set(QT_MIN_VERSION 5.2.0)
+ set(KF5_MIN_VERSION 5.14.0)
+-set(KGAPI_MIN_VERSION 5.5.0)
++set(KGAPI_MIN_VERSION 5.11.41)
+ set(KACCOUNTS_MIN_VERSION 17.04.0)
+ set(QTKEYCHAIN_MIN_VERSION 0.6.0)
+
+diff --git a/src/kio_gdrive.cpp b/src/kio_gdrive.cpp
+index 9ab146f..e01fef6 100644
+--- a/src/kio_gdrive.cpp
++++ b/src/kio_gdrive.cpp
+@@ -146,6 +146,12 @@ void KIOGDrive::fileSystemFreeSpace(const QUrl &url)
+ }
+ if (!gdriveUrl.isRoot()) {
+ AboutFetchJob aboutFetch(getAccount(accountId));
++ aboutFetch.setFields({
++ About::Fields::Kind,
++ About::Fields::QuotaBytesTotal,
++ About::Fields::QuotaBytesUsedAggregate,
++ About::Fields::CanCreateTeamDrives,
++ });
+ if (runJob(aboutFetch, url, accountId)) {
+ const AboutPtr about = aboutFetch.aboutData();
+ if (about) {
+@@ -379,7 +385,7 @@ QString KIOGDrive::resolveFileIdFromPath(const QString &path, PathFlags flags)
+
+ const QString accountId = gdriveUrl.account();
+ FileFetchJob fetchJob(query, getAccount(accountId));
+- fetchJob.setFields(FileFetchJob::Id | FileFetchJob::Title | FileFetchJob::Labels);
++ fetchJob.setFields({File::Fields::Id, File::Fields::Title, File::Fields::Labels});
+ if (!runJob(fetchJob, url, accountId)) {
+ return QString();
+ }
+@@ -404,6 +410,7 @@ QString KIOGDrive::rootFolderId(const QString &accountId)
+ auto it = m_rootIds.constFind(accountId);
+ if (it == m_rootIds.cend()) {
+ AboutFetchJob aboutFetch(getAccount(accountId));
++ aboutFetch.setFields({About::Fields::Kind, About::Fields::RootFolderId});
+ QUrl url;
+ if (!runJob(aboutFetch, url, accountId)) {
+ return QString();
+@@ -455,10 +462,13 @@ void KIOGDrive::listDir(const QUrl &url)
+ query.addQuery(FileSearchQuery::Trashed, FileSearchQuery::Equals, false);
+ query.addQuery(FileSearchQuery::Parents, FileSearchQuery::In, folderId);
+ FileFetchJob fileFetchJob(query, getAccount(accountId));
+- fileFetchJob.setFields((FileFetchJob::BasicFields & ~FileFetchJob::Permissions)
+- | FileFetchJob::Labels
+- | FileFetchJob::ExportLinks
+- | FileFetchJob::LastViewedByMeDate);
++ const auto extraFields =
++ KGAPI2::Drive::FileFetchJob::FieldShorthands::BasicFields +
++ QStringList({ KGAPI2::Drive::File::Fields::Labels,
++ KGAPI2::Drive::File::Fields::ExportLinks,
++ KGAPI2::Drive::File::Fields::LastViewedByMeDate,
++ });
++ fileFetchJob.setFields(KGAPI2::Drive::FileFetchJob::FieldShorthands::BasicFields + extraFields);
+ runJob(fileFetchJob, url, accountId);
+
+ ObjectsList objects = fileFetchJob.items();
+@@ -607,10 +617,7 @@ void KIOGDrive::get(const QUrl &url)
+ }
+
+ FileFetchJob fileFetchJob(fileId, getAccount(accountId));
+- fileFetchJob.setFields(FileFetchJob::Id
+- | FileFetchJob::MimeType
+- | FileFetchJob::ExportLinks
+- | FileFetchJob::DownloadUrl);
++ fileFetchJob.setFields({File::Fields::Id, File::Fields::MimeType, File::Fields::ExportLinks, File::Fields::DownloadUrl});
+ runJob(fileFetchJob, url, accountId);
+
+ const ObjectsList objects = fileFetchJob.items();
+@@ -866,8 +873,7 @@ void KIOGDrive::copy(const QUrl &src, const QUrl &dest, int permissions, KIO::Jo
+ return;
+ }
+ FileFetchJob sourceFileFetchJob(sourceFileId, getAccount(sourceAccountId));
+- sourceFileFetchJob.setFields(FileFetchJob::Id | FileFetchJob::ModifiedDate |
+- FileFetchJob::LastViewedByMeDate | FileFetchJob::Description);
++ sourceFileFetchJob.setFields({File::Fields::Id, File::Fields::ModifiedDate, File::Fields::LastViewedByMeDate, File::Fields::Description});
+ runJob(sourceFileFetchJob, src, sourceAccountId);
+
+ const ObjectsList objects = sourceFileFetchJob.items();
+@@ -1086,7 +1092,7 @@ void KIOGDrive::mimetype(const QUrl &url)
+ const QString accountId = GDriveUrl(url).account();
+
+ FileFetchJob fileFetchJob(fileId, getAccount(accountId));
+- fileFetchJob.setFields(FileFetchJob::Id | FileFetchJob::MimeType);
++ fileFetchJob.setFields({File::Fields::Id, File::Fields::MimeType});
+ runJob(fileFetchJob, url, accountId);
+
+ const ObjectsList objects = fileFetchJob.items();
+--
+cgit v1.1
diff --git a/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-2.patch b/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-2.patch
new file mode 100644
index 000000000000..65d181ca7a5f
--- /dev/null
+++ b/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-2.patch
@@ -0,0 +1,42 @@
+From f81aed7bd13fd1d7fcd1f37baade3f1f6f34c54d Mon Sep 17 00:00:00 2001
+From: David Barchiesi <david@barchie.si>
+Date: Wed, 3 Jul 2019 20:18:59 +0200
+Subject: Remove useless FileFetchJob field specifications. Fixes D21838
+ related issues.
+
+---
+ src/kio_gdrive.cpp | 12 +++++-------
+ 1 file changed, 5 insertions(+), 7 deletions(-)
+
+diff --git a/src/kio_gdrive.cpp b/src/kio_gdrive.cpp
+index 4d80baf..5add144 100644
+--- a/src/kio_gdrive.cpp
++++ b/src/kio_gdrive.cpp
+@@ -149,8 +149,7 @@ void KIOGDrive::fileSystemFreeSpace(const QUrl &url)
+ aboutFetch.setFields({
+ About::Fields::Kind,
+ About::Fields::QuotaBytesTotal,
+- About::Fields::QuotaBytesUsedAggregate,
+- About::Fields::CanCreateTeamDrives,
++ About::Fields::QuotaBytesUsedAggregate
+ });
+ if (runJob(aboutFetch, url, accountId)) {
+ const AboutPtr about = aboutFetch.aboutData();
+@@ -462,11 +461,10 @@ void KIOGDrive::listDir(const QUrl &url)
+ query.addQuery(FileSearchQuery::Parents, FileSearchQuery::In, folderId);
+ FileFetchJob fileFetchJob(query, getAccount(accountId));
+ const auto extraFields =
+- KGAPI2::Drive::FileFetchJob::FieldShorthands::BasicFields +
+- QStringList({ KGAPI2::Drive::File::Fields::Labels,
+- KGAPI2::Drive::File::Fields::ExportLinks,
+- KGAPI2::Drive::File::Fields::LastViewedByMeDate,
+- });
++ QStringList({ KGAPI2::Drive::File::Fields::Labels,
++ KGAPI2::Drive::File::Fields::ExportLinks,
++ KGAPI2::Drive::File::Fields::LastViewedByMeDate,
++ });
+ fileFetchJob.setFields(KGAPI2::Drive::FileFetchJob::FieldShorthands::BasicFields + extraFields);
+ runJob(fileFetchJob, url, accountId);
+
+--
+cgit v1.1
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
new file mode 100644
index 000000000000..2d5958827866
--- /dev/null
+++ b/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-refresh-credentials.patch
@@ -0,0 +1,101 @@
+From 4ded388b2b2672f5f7fb953a0150a69fcfaa7cb0 Mon Sep 17 00:00:00 2001
+From: David Barchiesi <david@barchie.si>
+Date: Mon, 8 Jul 2019 09:54:08 +0200
+Subject: Re get Google credentials from KAccounts when a refresh is needed.
+
+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.
+
+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.
+
+Reviewers: elvisangelaccio
+
+Reviewed By: elvisangelaccio
+
+Subscribers: mck182, elvisangelaccio
+
+Differential Revision: https://phabricator.kde.org/D22009
+---
+ src/kaccountsmanager.cpp | 45 ++++++++++++++++++++++++++++++++-------------
+ src/kaccountsmanager.h | 2 ++
+ 2 files changed, 34 insertions(+), 13 deletions(-)
+
+diff --git a/src/kaccountsmanager.cpp b/src/kaccountsmanager.cpp
+index 08272df..dc35852 100644
+--- a/src/kaccountsmanager.cpp
++++ b/src/kaccountsmanager.cpp
+@@ -85,8 +85,19 @@ AccountPtr KAccountsManager::createAccount()
+
+ AccountPtr KAccountsManager::refreshAccount(const AccountPtr &account)
+ {
+- Q_UNUSED(account)
+- qCWarning(GDRIVE) << Q_FUNC_INFO << "not implemented.";
++ const QString accountName = account->accountName();
++ for (auto it = m_accounts.constBegin(); it != m_accounts.constEnd(); ++it) {
++ if (it.value()->accountName() != accountName) {
++ continue;
++ }
++
++ const auto id = it.key();
++ qCDebug(GDRIVE) << "Refreshing" << accountName;
++ auto gapiAccount = getAccountCredentials(id, accountName);
++ m_accounts.insert(id, gapiAccount);
++ return gapiAccount;
++ }
++
+ return {};
+ }
+
+@@ -143,19 +154,27 @@ void KAccountsManager::loadAccounts()
+ }
+ qCDebug(GDRIVE) << account->displayName() << "supports gdrive!";
+
+- auto job = new GetCredentialsJob(id, nullptr);
+- job->exec();
++ auto gapiAccount = getAccountCredentials(id, account->displayName());
++ m_accounts.insert(id, gapiAccount);
++ }
++ }
++}
+
+- auto gapiAccount = AccountPtr(new Account(account->displayName(),
+- job->credentialsData().value(QStringLiteral("AccessToken")).toString(),
+- job->credentialsData().value(QStringLiteral("RefreshToken")).toString()));
++AccountPtr KAccountsManager::getAccountCredentials(Accounts::AccountId id, const QString& displayName)
++{
++ auto job = new GetCredentialsJob(id, nullptr);
++ job->exec();
+
+- const auto scopes = job->credentialsData().value(QStringLiteral("Scope")).toStringList();
+- for (const auto &scope : scopes) {
+- gapiAccount->addScope(QUrl::fromUserInput(scope));
+- }
++ auto gapiAccount = AccountPtr(new Account(displayName,
++ job->credentialsData().value(QStringLiteral("AccessToken")).toString(),
++ job->credentialsData().value(QStringLiteral("RefreshToken")).toString()));
+
+- m_accounts.insert(id, gapiAccount);
+- }
++ const auto scopes = job->credentialsData().value(QStringLiteral("Scope")).toStringList();
++ for (const auto &scope : scopes) {
++ gapiAccount->addScope(QUrl::fromUserInput(scope));
+ }
++
++ qCDebug(GDRIVE) << "Got account credentials for:" << gapiAccount->accountName() << ", accessToken:" << gapiAccount->accessToken() << ", refreshToken:" << gapiAccount->refreshToken();
++
++ return gapiAccount;
+ }
+diff --git a/src/kaccountsmanager.h b/src/kaccountsmanager.h
+index 235d11a..d2dbc43 100644
+--- a/src/kaccountsmanager.h
++++ b/src/kaccountsmanager.h
+@@ -40,6 +40,8 @@ public:
+ private:
+ void loadAccounts();
+
++ KGAPI2::AccountPtr getAccountCredentials(Accounts::AccountId id, const QString& displayName);
++
+ QMap<Accounts::AccountId, KGAPI2::AccountPtr> m_accounts;
+ };
+
+--
+cgit v1.1
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
new file mode 100644
index 000000000000..f6f2fa71b1fa
--- /dev/null
+++ b/kde-misc/kio-gdrive/kio-gdrive-1.2.6-r1.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+KDE_APPS_MINIMAL=19.08.0
+KDE_HANDBOOK="forceoptional"
+KDE_TEST="optional"
+inherit kde5
+
+DESCRIPTION="KIO Slave for Google Drive service"
+HOMEPAGE="https://phabricator.kde.org/project/profile/72/"
+
+if [[ ${KDE_BUILD_TYPE} != live ]] ; then
+ SRC_URI="mirror://kde/stable/${PN}/${PV}/src/${P}.tar.xz"
+ KEYWORDS="~amd64 ~x86"
+fi
+
+IUSE="+kaccounts"
+
+COMMON_DEPEND="
+ $(add_frameworks_dep kcoreaddons)
+ $(add_frameworks_dep ki18n)
+ $(add_frameworks_dep kio)
+ $(add_frameworks_dep knotifications)
+ $(add_kdeapps_dep libkgapi)
+ $(add_qt_dep qtwidgets)
+ kaccounts? ( $(add_kdeapps_dep kaccounts-integration) )
+ !kaccounts? ( dev-libs/qtkeychain:=[qt5(+)] )
+"
+DEPEND="${COMMON_DEPEND}
+ $(add_qt_dep qtgui)
+ $(add_qt_dep qtnetwork)
+"
+RDEPEND="${COMMON_DEPEND}
+ kaccounts? ( $(add_kdeapps_dep kaccounts-providers) )
+"
+BDEPEND="dev-util/intltool"
+
+DOCS=( README.md )
+
+PATCHES=(
+ "${FILESDIR}"/${P}-libkgapi-19.08-{1,2}.patch
+ "${FILESDIR}"/${P}-refresh-credentials.patch
+)
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake-utils_use_find_package kaccounts KAccounts)
+ )
+ kde5_src_configure
+}
diff --git a/kde-misc/kio-gdrive/kio-gdrive-1.2.6.ebuild b/kde-misc/kio-gdrive/kio-gdrive-1.2.6.ebuild
index fcd6cec88d40..84c489c838f1 100644
--- a/kde-misc/kio-gdrive/kio-gdrive-1.2.6.ebuild
+++ b/kde-misc/kio-gdrive/kio-gdrive-1.2.6.ebuild
@@ -22,7 +22,7 @@ COMMON_DEPEND="
$(add_frameworks_dep ki18n)
$(add_frameworks_dep kio)
$(add_frameworks_dep knotifications)
- $(add_kdeapps_dep libkgapi)
+ <kde-apps/libkgapi-19.04.50
$(add_qt_dep qtwidgets)
kaccounts? ( $(add_kdeapps_dep kaccounts-integration) )
!kaccounts? ( dev-libs/qtkeychain:=[qt5(+)] )