12345678910111213141516171819202122232425262728293031323334353637383940 |
- <?php
- declare(strict_types=1);
- namespace Shlinkio\Shlink\Core\ShortUrl\Helper;
- use Laminas\Diactoros\Uri;
- use Shlinkio\Shlink\Core\Entity\ShortUrl;
- use function sprintf;
- class ShortUrlStringifier implements ShortUrlStringifierInterface
- {
- private array $domainConfig;
- private string $basePath;
- public function __construct(array $domainConfig, string $basePath = '')
- {
- $this->domainConfig = $domainConfig;
- $this->basePath = $basePath;
- }
- public function stringify(ShortUrl $shortUrl): string
- {
- return (new Uri())->withPath($shortUrl->getShortCode())
- ->withScheme($this->domainConfig['schema'] ?? 'http')
- ->withHost($this->resolveDomain($shortUrl))
- ->__toString();
- }
- private function resolveDomain(ShortUrl $shortUrl): string
- {
- $domain = $shortUrl->getDomain();
- if ($domain === null) {
- return $this->domainConfig['hostname'] ?? '';
- }
- return sprintf('%s%s', $domain->getAuthority(), $this->basePath);
- }
- }
|