]> source.dussan.org Git - nextcloud-server.git/commitdiff
some small fixes and improvements 11723/head
authorBjoern Schiessle <bjoern@schiessle.org>
Wed, 10 Oct 2018 14:07:01 +0000 (16:07 +0200)
committerBjoern Schiessle <bjoern@schiessle.org>
Wed, 10 Oct 2018 14:08:49 +0000 (16:08 +0200)
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
lib/private/Collaboration/Collaborators/LookupPlugin.php
tests/lib/Collaboration/Collaborators/LookupPluginTest.php

index 6f983b66b08b94038f4216a6f044c5dd1c53e7bf..ae5f7fd0cbcd667394c44007572a669c4bb202c3 100644 (file)
@@ -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[] = [
index 20a1f962306a9b461ae62c28187e3fb6778ab976..a2707016fb86bc5242bccc841df93995fa8b4f2b 100644 (file)
@@ -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
+               );
        }
 
        /**