From 7ff74ae8eda8feb232a9b2c2094ec98641543721 Mon Sep 17 00:00:00 2001 From: Bjoern Schiessle Date: Mon, 2 Jul 2018 11:36:35 +0200 Subject: [PATCH] cache results from ocm end-point discovery Signed-off-by: Bjoern Schiessle --- .../Federation/CloudFederationProviderManager.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/private/Federation/CloudFederationProviderManager.php b/lib/private/Federation/CloudFederationProviderManager.php index 10d28d0287..254ceb03bf 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 ''; }