3 * @copyright Copyright (C) 2010-2023, the Friendica project
5 * @license GNU AGPL version 3 or any later version
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Affero General Public License as
9 * published by the Free Software Foundation, either version 3 of the
10 * License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Affero General Public License for more details.
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 namespace Friendica\Protocol;
24 use GuzzleHttp\Psr7\Uri;
45 private function __construct(string $user, string $host, int $port = null, string $path = null)
57 * @return WebFingerUri
59 public static function fromString(string $addr): WebFingerUri
61 $uri = new Uri('acct://' . preg_replace('/^acct:/', '', $addr));
63 return new self($uri->getUserInfo(), $uri->getHost(), $uri->getPort(), $uri->getPath());
66 private function validate()
69 throw new \InvalidArgumentException('WebFinger URI User part is required');
73 throw new \InvalidArgumentException('WebFinger URI Host part is required');
77 public function getUser(): string
82 public function getHost(): string
87 public function getFullHost(): string
90 . ($this->port ? ':' . $this->port : '') .
94 public function getLongForm(): string
96 return 'acct:' . $this->getShortForm();
99 public function getShortForm(): string
101 return $this->user . '@' . $this->getFullHost();
104 public function getAddr(): string
106 return $this->getShortForm();
109 public function __toString(): string
111 return $this->getShortForm();