summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern Schiessle <bjoern@schiessle.org>2018-07-02 11:36:35 +0200
committerBjoern Schiessle <bjoern@schiessle.org>2018-07-02 12:43:43 +0200
commit7ff74ae8eda8feb232a9b2c2094ec98641543721 (patch)
tree0cd7aba2ce8f5da95fd2314f5416e3def92ad50b
parentce567b61216c8b41d28a484e04eba35d185fa08a (diff)
downloadnextcloud-server-7ff74ae8eda8feb232a9b2c2094ec98641543721.tar.gz
nextcloud-server-7ff74ae8eda8feb232a9b2c2094ec98641543721.zip
cache results from ocm end-point discovery
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
-rw-r--r--lib/private/Federation/CloudFederationProviderManager.php11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/private/Federation/CloudFederationProviderManager.php b/lib/private/Federation/CloudFederationProviderManager.php
index 10d28d0287d..254ceb03bf8 100644
--- a/lib/private/Federation/CloudFederationProviderManager.php
+++ b/lib/private/Federation/CloudFederationProviderManager.php
@@ -57,6 +57,9 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
/** @var ILogger */
private $logger;
+ /** @var array cache OCM end-points */
+ private $ocmEndPoints = [];
+
private $supportedAPIVersion = '1.0-proposal1';
/**
@@ -208,10 +211,16 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
* @return string
*/
protected function getOCMEndPoint($url) {
+
+ if (isset($this->ocmEndPoints[$url])) {
+ return $this->ocmEndPoints[$url];
+ }
+
$client = $this->httpClientService->newClient();
try {
$response = $client->get($url . '/ocm-provider/', ['timeout' => 10, 'connect_timeout' => 10]);
} catch (\Exception $e) {
+ $this->ocmEndPoints[$url] = '';
return '';
}
@@ -221,9 +230,11 @@ class CloudFederationProviderManager implements ICloudFederationProviderManager
$supportedVersion = isset($result['apiVersion']) && $result['apiVersion'] === $this->supportedAPIVersion;
if (isset($result['endPoint']) && $supportedVersion) {
+ $this->ocmEndPoints[$url] = $result['endPoint'];
return $result['endPoint'];
}
+ $this->ocmEndPoints[$url] = '';
return '';
}