diff options
Diffstat (limited to 'lib/private/Federation/CloudId.php')
-rw-r--r-- | lib/private/Federation/CloudId.php | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/lib/private/Federation/CloudId.php b/lib/private/Federation/CloudId.php new file mode 100644 index 00000000000..b807c29d812 --- /dev/null +++ b/lib/private/Federation/CloudId.php @@ -0,0 +1,64 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OC\Federation; + +use OCP\Federation\ICloudId; +use OCP\Federation\ICloudIdManager; + +class CloudId implements ICloudId { + public function __construct( + protected string $id, + protected string $user, + protected string $remote, + protected ?string $displayName = null, + ) { + } + + /** + * The full remote cloud id + * + * @return string + */ + public function getId(): string { + return $this->id; + } + + public function getDisplayId(): string { + if ($this->displayName === null) { + /** @var CloudIdManager $cloudIdManager */ + $cloudIdManager = \OCP\Server::get(ICloudIdManager::class); + $this->displayName = $cloudIdManager->getDisplayNameFromContact($this->getId()); + } + + $atHost = str_replace(['http://', 'https://'], '', $this->getRemote()); + + if ($this->displayName) { + return $this->displayName . '@' . $atHost; + } + return $this->getUser() . '@' . $atHost; + } + + /** + * The username on the remote server + * + * @return string + */ + public function getUser(): string { + return $this->user; + } + + /** + * The base address of the remote server + * + * @return string + */ + public function getRemote(): string { + return $this->remote; + } +} |