summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern Schiessle <bjoern@schiessle.org>2018-10-10 16:07:01 +0200
committerBjoern Schiessle <bjoern@schiessle.org>2018-10-10 16:07:01 +0200
commitfd5fc24da26293e188b44c576a74b6ffbf5e1481 (patch)
treeabf491f9de2c16a896d70ba2e9390650d3106a99
parent9e76d4049a00d2349ca2a4d3daeb4b36c9252b0c (diff)
downloadnextcloud-server-fd5fc24da26293e188b44c576a74b6ffbf5e1481.tar.gz
nextcloud-server-fd5fc24da26293e188b44c576a74b6ffbf5e1481.zip
some small fixes and improvements
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
-rw-r--r--lib/private/Collaboration/Collaborators/LookupPlugin.php23
-rw-r--r--tests/lib/Collaboration/Collaborators/LookupPluginTest.php12
2 files changed, 29 insertions, 6 deletions
diff --git a/lib/private/Collaboration/Collaborators/LookupPlugin.php b/lib/private/Collaboration/Collaborators/LookupPlugin.php
index 6f983b66b08..ae5f7fd0cbc 100644
--- a/lib/private/Collaboration/Collaborators/LookupPlugin.php
+++ b/lib/private/Collaboration/Collaborators/LookupPlugin.php
@@ -30,6 +30,7 @@ use OCP\Collaboration\Collaborators\SearchResultType;
use OCP\Federation\ICloudIdManager;
use OCP\Http\Client\IClientService;
use OCP\IConfig;
+use OCP\ILogger;
use OCP\IUserSession;
use OCP\Share;
@@ -43,23 +44,27 @@ class LookupPlugin implements ISearchPlugin {
private $currentUserRemote;
/** @var ICloudIdManager */
private $cloudIdManager;
+ /** @var ILogger */
+ private $logger;
public function __construct(IConfig $config,
IClientService $clientService,
IUserSession $userSession,
- ICloudIdManager $cloudIdManager) {
+ ICloudIdManager $cloudIdManager,
+ ILogger $logger) {
$this->config = $config;
$this->clientService = $clientService;
$this->cloudIdManager = $cloudIdManager;
$currentUserCloudId = $userSession->getUser()->getCloudId();
$this->currentUserRemote = $cloudIdManager->resolveCloudId($currentUserCloudId)->getRemote();
+ $this->logger = $logger;
}
public function search($search, $limit, $offset, ISearchResult $searchResult) {
$isGlobalScaleEnabled = $this->config->getSystemValue('gs.enabled', false);
- $isLookupServerEnabled = $this->config->getAppValue('files_sharing', 'lookupServerEnabled', 'no');
+ $isLookupServerEnabled = $this->config->getAppValue('files_sharing', 'lookupServerEnabled', 'no') === 'yes';
// if case of Global Scale we always search the lookup server
- if ($isLookupServerEnabled !== 'yes' && !$isGlobalScaleEnabled) {
+ if (!$isLookupServerEnabled && !$isGlobalScaleEnabled) {
return false;
}
@@ -80,8 +85,16 @@ class LookupPlugin implements ISearchPlugin {
$body = json_decode($response->getBody(), true);
foreach ($body as $lookup) {
- $remote = $this->cloudIdManager->resolveCloudId($lookup['federationId'])->getRemote();
- if ($this->currentUserRemote === $remote) continue;
+ try {
+ $remote = $this->cloudIdManager->resolveCloudId($lookup['federationId'])->getRemote();
+ } catch (\Exception $e) {
+ $this->logger->error('Can not parse federated cloud ID "' . $lookup['federationId'] . '"');
+ $this->logger->error($e->getMessage());
+ continue;
+ }
+ if ($this->currentUserRemote === $remote) {
+ continue;
+ }
$name = isset($lookup['name']['value']) ? $lookup['name']['value'] : '';
$label = empty($name) ? $lookup['federationId'] : $name . ' (' . $lookup['federationId'] . ')';
$result[] = [
diff --git a/tests/lib/Collaboration/Collaborators/LookupPluginTest.php b/tests/lib/Collaboration/Collaborators/LookupPluginTest.php
index 20a1f962306..a2707016fb8 100644
--- a/tests/lib/Collaboration/Collaborators/LookupPluginTest.php
+++ b/tests/lib/Collaboration/Collaborators/LookupPluginTest.php
@@ -34,6 +34,7 @@ use OCP\Http\Client\IClient;
use OCP\Http\Client\IClientService;
use OCP\Http\Client\IResponse;
use OCP\IConfig;
+use OCP\ILogger;
use OCP\IUser;
use OCP\IUserSession;
use OCP\Share;
@@ -51,6 +52,8 @@ class LookupPluginTest extends TestCase {
protected $cloudIdManager;
/** @var LookupPlugin */
protected $plugin;
+ /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */
+ protected $logger;
public function setUp() {
parent::setUp();
@@ -58,6 +61,7 @@ class LookupPluginTest extends TestCase {
$this->userSession = $this->createMock(IUserSession::class);
$this->cloudIdManager = $this->createMock(ICloudIdManager::class);
$this->config = $this->createMock(IConfig::class);
+ $this->logger = $this->createMock(ILogger::class);
$this->clientService = $this->createMock(IClientService::class);
$cloudId = $this->createMock(ICloudId::class);
$cloudId->expects($this->any())->method('getRemote')->willReturn('myNextcloud.net');
@@ -74,7 +78,13 @@ class LookupPluginTest extends TestCase {
});
- $this->plugin = new LookupPlugin($this->config, $this->clientService, $this->userSession, $this->cloudIdManager);
+ $this->plugin = new LookupPlugin(
+ $this->config,
+ $this->clientService,
+ $this->userSession,
+ $this->cloudIdManager,
+ $this->logger
+ );
}
/**