diff --git a/data/migrations/Version20190930165521.php b/data/migrations/Version20190930165521.php
index 2f4e277b..65b83aae 100644
--- a/data/migrations/Version20190930165521.php
+++ b/data/migrations/Version20190930165521.php
@@ -5,7 +5,6 @@ namespace ShlinkMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Schema\SchemaException;
-use Doctrine\DBAL\Schema\Table;
use Doctrine\DBAL\Types\Type;
use Doctrine\Migrations\AbstractMigration;
diff --git a/module/CLI/src/Command/ShortUrl/GenerateShortUrlCommand.php b/module/CLI/src/Command/ShortUrl/GenerateShortUrlCommand.php
index 5977094f..6b2c2eeb 100644
--- a/module/CLI/src/Command/ShortUrl/GenerateShortUrlCommand.php
+++ b/module/CLI/src/Command/ShortUrl/GenerateShortUrlCommand.php
@@ -9,7 +9,6 @@ use Shlinkio\Shlink\Core\Exception\InvalidUrlException;
use Shlinkio\Shlink\Core\Exception\NonUniqueSlugException;
use Shlinkio\Shlink\Core\Model\ShortUrlMeta;
use Shlinkio\Shlink\Core\Service\UrlShortenerInterface;
-use Shlinkio\Shlink\Core\Util\ShortUrlBuilderTrait;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
@@ -26,8 +25,6 @@ use function sprintf;
class GenerateShortUrlCommand extends Command
{
- use ShortUrlBuilderTrait;
-
public const NAME = 'short-url:generate';
private const ALIASES = ['shortcode:generate', 'short-code:generate'];
@@ -119,7 +116,7 @@ class GenerateShortUrlCommand extends Command
$maxVisits = $input->getOption('maxVisits');
try {
- $shortCode = $this->urlShortener->urlToShortCode(
+ $shortUrl = $this->urlShortener->urlToShortCode(
new Uri($longUrl),
$tags,
ShortUrlMeta::createFromParams(
@@ -129,12 +126,11 @@ class GenerateShortUrlCommand extends Command
$maxVisits !== null ? (int) $maxVisits : null,
$input->getOption('findIfExists')
)
- )->getShortCode();
- $shortUrl = $this->buildShortUrl($this->domainConfig, $shortCode);
+ );
$io->writeln([
sprintf('Processed long URL: %s', $longUrl),
- sprintf('Generated short URL: %s', $shortUrl),
+ sprintf('Generated short URL: %s', $shortUrl->toString($this->domainConfig)),
]);
return ExitCodes::EXIT_SUCCESS;
} catch (InvalidUrlException $e) {
diff --git a/module/Core/src/Entity/ShortUrl.php b/module/Core/src/Entity/ShortUrl.php
index fa4d69e1..d6578318 100644
--- a/module/Core/src/Entity/ShortUrl.php
+++ b/module/Core/src/Entity/ShortUrl.php
@@ -8,6 +8,7 @@ use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Shlinkio\Shlink\Common\Entity\AbstractEntity;
use Shlinkio\Shlink\Core\Model\ShortUrlMeta;
+use Zend\Diactoros\Uri;
use function count;
@@ -135,7 +136,14 @@ class ShortUrl extends AbstractEntity
return $this->maxVisits !== null && $this->getVisitsCount() >= $this->maxVisits;
}
- public function domain(string $fallback = ''): string
+ public function toString(array $domainConfig): string
+ {
+ return (string) (new Uri())->withPath($this->shortCode)
+ ->withScheme($domainConfig['schema'] ?? 'http')
+ ->withHost($this->resolveDomain($domainConfig['hostname'] ?? ''));
+ }
+
+ private function resolveDomain(string $fallback = ''): string
{
if ($this->domain === null) {
return $fallback;
diff --git a/module/Core/src/Transformer/ShortUrlDataTransformer.php b/module/Core/src/Transformer/ShortUrlDataTransformer.php
index 6bd2bfa4..ddb8b9d6 100644
--- a/module/Core/src/Transformer/ShortUrlDataTransformer.php
+++ b/module/Core/src/Transformer/ShortUrlDataTransformer.php
@@ -5,15 +5,12 @@ namespace Shlinkio\Shlink\Core\Transformer;
use Shlinkio\Shlink\Common\Rest\DataTransformerInterface;
use Shlinkio\Shlink\Core\Entity\ShortUrl;
-use Shlinkio\Shlink\Core\Util\ShortUrlBuilderTrait;
use function Functional\invoke;
use function Functional\invoke_if;
class ShortUrlDataTransformer implements DataTransformerInterface
{
- use ShortUrlBuilderTrait;
-
/** @var array */
private $domainConfig;
@@ -23,21 +20,20 @@ class ShortUrlDataTransformer implements DataTransformerInterface
}
/**
- * @param ShortUrl $value
+ * @param ShortUrl $shortUrl
*/
- public function transform($value): array
+ public function transform($shortUrl): array
{
- $longUrl = $value->getLongUrl();
- $shortCode = $value->getShortCode();
+ $longUrl = $shortUrl->getLongUrl();
return [
- 'shortCode' => $shortCode,
- 'shortUrl' => $this->buildShortUrl($this->domainConfig, $shortCode),
+ 'shortCode' => $shortUrl->getShortCode(),
+ 'shortUrl' => $shortUrl->toString($this->domainConfig),
'longUrl' => $longUrl,
- 'dateCreated' => $value->getDateCreated()->toAtomString(),
- 'visitsCount' => $value->getVisitsCount(),
- 'tags' => invoke($value->getTags(), '__toString'),
- 'meta' => $this->buildMeta($value),
+ 'dateCreated' => $shortUrl->getDateCreated()->toAtomString(),
+ 'visitsCount' => $shortUrl->getVisitsCount(),
+ 'tags' => invoke($shortUrl->getTags(), '__toString'),
+ 'meta' => $this->buildMeta($shortUrl),
// Deprecated
'originalUrl' => $longUrl,
diff --git a/module/Core/src/Util/ShortUrlBuilderTrait.php b/module/Core/src/Util/ShortUrlBuilderTrait.php
deleted file mode 100644
index fe627b0f..00000000
--- a/module/Core/src/Util/ShortUrlBuilderTrait.php
+++ /dev/null
@@ -1,16 +0,0 @@
-withPath($shortCode)
- ->withScheme($domainConfig['schema'] ?? 'http')
- ->withHost($domainConfig['hostname'] ?? '');
- }
-}