diff --git a/apps/federatedfilesharing/lib/DiscoveryManager.php b/apps/federatedfilesharing/lib/DiscoveryManager.php index 229381b82f6f..4b1540e48e00 100644 --- a/apps/federatedfilesharing/lib/DiscoveryManager.php +++ b/apps/federatedfilesharing/lib/DiscoveryManager.php @@ -141,22 +141,26 @@ private function ocmDiscover($remote) { $decodedService = $this->makeRequest($remote . '/ocm-provider/'); if (!empty($decodedService) && $decodedService['enabled'] === true) { $discoveredServices['ocm'] = $decodedService['endPoint']; - $shareTypes = $decodedService['shareTypes']; - foreach ($shareTypes as $type) { + $types = []; + if (isset($decodedService['shareTypes'])) { + $types = $decodedService['shareTypes']; + } elseif (isset($decodedService['resourceTypes'])) { + $types = $decodedService['resourceTypes']; + } + foreach ($types as $type) { if ($type['name'] == 'file') { $discoveredServices['webdav'] = $type['protocols']['webdav']; } } - } else { - return [ - 'webdav' => false, - 'ocm' => false, - ]; - } - // Write into cache - $this->cache->set('OCM' . $remote, \json_encode($discoveredServices)); - return $discoveredServices; + // Write into cache + $this->cache->set('OCM' . $remote, \json_encode($discoveredServices)); + return $discoveredServices; + } + return [ + 'webdav' => false, + 'ocm' => false, + ]; } /** diff --git a/changelog/unreleased/38751 b/changelog/unreleased/38751 new file mode 100644 index 000000000000..fa0b1f9b7d01 --- /dev/null +++ b/changelog/unreleased/38751 @@ -0,0 +1,6 @@ +Bugfix: Correctly parse different ocm-provider api responses + +Some WebDAV service providers returns different responses for ocm-provider API +and we were not able to parse these responses. This problem has been fixed. + +https://github.com/owncloud/core/pull/38751