mirror of
https://github.com/shlinkio/shlink.git
synced 2024-11-27 08:18:24 +03:00
Fixed merge conflicts
This commit is contained in:
commit
781ca39938
8 changed files with 48 additions and 7 deletions
|
@ -12,6 +12,7 @@ return [
|
||||||
'hostname' => env('SHORTENED_URL_HOSTNAME'),
|
'hostname' => env('SHORTENED_URL_HOSTNAME'),
|
||||||
],
|
],
|
||||||
'shortcode_chars' => env('SHORTCODE_CHARS', UrlShortener::DEFAULT_CHARS),
|
'shortcode_chars' => env('SHORTCODE_CHARS', UrlShortener::DEFAULT_CHARS),
|
||||||
|
'validate_url' => true,
|
||||||
],
|
],
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
|
@ -45,6 +45,13 @@ class UrlShortenerConfigCustomizerPlugin extends AbstractConfigCustomizerPlugin
|
||||||
null,
|
null,
|
||||||
true
|
true
|
||||||
) ?: str_shuffle(UrlShortener::DEFAULT_CHARS),
|
) ?: str_shuffle(UrlShortener::DEFAULT_CHARS),
|
||||||
|
'VALIDATE_URL' => $this->questionHelper->ask(
|
||||||
|
$input,
|
||||||
|
$output,
|
||||||
|
new ConfirmationQuestion(
|
||||||
|
'<question>Do you want to validate long urls by 200 HTTP status code on response (Y/n):</question>'
|
||||||
|
)
|
||||||
|
),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -191,6 +191,7 @@ final class CustomizableAppConfig implements ArraySerializableInterface
|
||||||
'SCHEMA' => $urlShortener['domain']['schema'],
|
'SCHEMA' => $urlShortener['domain']['schema'],
|
||||||
'HOSTNAME' => $urlShortener['domain']['hostname'],
|
'HOSTNAME' => $urlShortener['domain']['hostname'],
|
||||||
'CHARS' => $urlShortener['shortcode_chars'],
|
'CHARS' => $urlShortener['shortcode_chars'],
|
||||||
|
'VALIDATE_URL' => $urlShortener['validate_url'],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -242,6 +243,7 @@ final class CustomizableAppConfig implements ArraySerializableInterface
|
||||||
'hostname' => $this->urlShortener['HOSTNAME'],
|
'hostname' => $this->urlShortener['HOSTNAME'],
|
||||||
],
|
],
|
||||||
'shortcode_chars' => $this->urlShortener['CHARS'],
|
'shortcode_chars' => $this->urlShortener['CHARS'],
|
||||||
|
'validate_url' => $this->urlShortener['VALIDATE_URL'],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -47,8 +47,9 @@ class UrlShortenerConfigCustomizerPluginTest extends TestCase
|
||||||
'SCHEMA' => 'something',
|
'SCHEMA' => 'something',
|
||||||
'HOSTNAME' => 'something',
|
'HOSTNAME' => 'something',
|
||||||
'CHARS' => 'something',
|
'CHARS' => 'something',
|
||||||
|
'VALIDATE_URL' => 'something',
|
||||||
], $config->getUrlShortener());
|
], $config->getUrlShortener());
|
||||||
$askSecret->shouldHaveBeenCalledTimes(3);
|
$askSecret->shouldHaveBeenCalledTimes(4);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -66,6 +67,7 @@ class UrlShortenerConfigCustomizerPluginTest extends TestCase
|
||||||
'SCHEMA' => 'bar',
|
'SCHEMA' => 'bar',
|
||||||
'HOSTNAME' => 'bar',
|
'HOSTNAME' => 'bar',
|
||||||
'CHARS' => 'bar',
|
'CHARS' => 'bar',
|
||||||
|
'VALIDATE_URL' => 'bar',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->plugin->process(new ArrayInput([]), new NullOutput(), $config);
|
$this->plugin->process(new ArrayInput([]), new NullOutput(), $config);
|
||||||
|
@ -74,8 +76,9 @@ class UrlShortenerConfigCustomizerPluginTest extends TestCase
|
||||||
'SCHEMA' => 'foo',
|
'SCHEMA' => 'foo',
|
||||||
'HOSTNAME' => 'foo',
|
'HOSTNAME' => 'foo',
|
||||||
'CHARS' => 'foo',
|
'CHARS' => 'foo',
|
||||||
|
'VALIDATE_URL' => false,
|
||||||
], $config->getUrlShortener());
|
], $config->getUrlShortener());
|
||||||
$ask->shouldHaveBeenCalledTimes(4);
|
$ask->shouldHaveBeenCalledTimes(5);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -91,6 +94,7 @@ class UrlShortenerConfigCustomizerPluginTest extends TestCase
|
||||||
'SCHEMA' => 'foo',
|
'SCHEMA' => 'foo',
|
||||||
'HOSTNAME' => 'foo',
|
'HOSTNAME' => 'foo',
|
||||||
'CHARS' => 'foo',
|
'CHARS' => 'foo',
|
||||||
|
'VALIDATE_URL' => 'foo',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->plugin->process(new ArrayInput([]), new NullOutput(), $config);
|
$this->plugin->process(new ArrayInput([]), new NullOutput(), $config);
|
||||||
|
@ -99,6 +103,7 @@ class UrlShortenerConfigCustomizerPluginTest extends TestCase
|
||||||
'SCHEMA' => 'foo',
|
'SCHEMA' => 'foo',
|
||||||
'HOSTNAME' => 'foo',
|
'HOSTNAME' => 'foo',
|
||||||
'CHARS' => 'foo',
|
'CHARS' => 'foo',
|
||||||
|
'VALIDATE_URL' => 'foo',
|
||||||
], $config->getUrlShortener());
|
], $config->getUrlShortener());
|
||||||
$ask->shouldHaveBeenCalledTimes(1);
|
$ask->shouldHaveBeenCalledTimes(1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,7 @@ class CacheFactoryTest extends TestCase
|
||||||
*/
|
*/
|
||||||
public function filesystemCacheAdaptersReadDirOption()
|
public function filesystemCacheAdaptersReadDirOption()
|
||||||
{
|
{
|
||||||
$dir = sys_get_temp_dir();
|
$dir = realpath(sys_get_temp_dir());
|
||||||
/** @var FilesystemCache $instance */
|
/** @var FilesystemCache $instance */
|
||||||
$instance = $this->factory->__invoke($this->createSM(FilesystemCache::class, ['dir' => $dir]), '');
|
$instance = $this->factory->__invoke($this->createSM(FilesystemCache::class, ['dir' => $dir]), '');
|
||||||
$this->assertInstanceOf(FilesystemCache::class, $instance);
|
$this->assertInstanceOf(FilesystemCache::class, $instance);
|
||||||
|
|
|
@ -42,7 +42,13 @@ return [
|
||||||
NotFoundDelegate::class => [TemplateRendererInterface::class],
|
NotFoundDelegate::class => [TemplateRendererInterface::class],
|
||||||
|
|
||||||
// Services
|
// Services
|
||||||
Service\UrlShortener::class => ['httpClient', 'em', Cache::class, 'config.url_shortener.shortcode_chars'],
|
Service\UrlShortener::class => [
|
||||||
|
'httpClient',
|
||||||
|
'em',
|
||||||
|
Cache::class,
|
||||||
|
'config.url_shortener.validate_url',
|
||||||
|
'config.url_shortener.shortcode_chars',
|
||||||
|
],
|
||||||
Service\VisitsTracker::class => ['em'],
|
Service\VisitsTracker::class => ['em'],
|
||||||
Service\ShortUrlService::class => ['em'],
|
Service\ShortUrlService::class => ['em'],
|
||||||
Service\VisitService::class => ['em'],
|
Service\VisitService::class => ['em'],
|
||||||
|
|
|
@ -46,18 +46,24 @@ class UrlShortener implements UrlShortenerInterface
|
||||||
* @var SlugifyInterface
|
* @var SlugifyInterface
|
||||||
*/
|
*/
|
||||||
private $slugger;
|
private $slugger;
|
||||||
|
/**
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
private $urlValidationEnabled;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
ClientInterface $httpClient,
|
ClientInterface $httpClient,
|
||||||
EntityManagerInterface $em,
|
EntityManagerInterface $em,
|
||||||
Cache $cache,
|
Cache $cache,
|
||||||
|
$urlValidationEnabled,
|
||||||
$chars = self::DEFAULT_CHARS,
|
$chars = self::DEFAULT_CHARS,
|
||||||
SlugifyInterface $slugger = null
|
SlugifyInterface $slugger = null
|
||||||
) {
|
) {
|
||||||
$this->httpClient = $httpClient;
|
$this->httpClient = $httpClient;
|
||||||
$this->em = $em;
|
$this->em = $em;
|
||||||
$this->chars = empty($chars) ? self::DEFAULT_CHARS : $chars;
|
|
||||||
$this->cache = $cache;
|
$this->cache = $cache;
|
||||||
|
$this->urlValidationEnabled = $urlValidationEnabled;
|
||||||
|
$this->chars = empty($chars) ? self::DEFAULT_CHARS : $chars;
|
||||||
$this->slugger = $slugger ?: new Slugify();
|
$this->slugger = $slugger ?: new Slugify();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,8 +97,11 @@ class UrlShortener implements UrlShortenerInterface
|
||||||
return $shortUrl->getShortCode();
|
return $shortUrl->getShortCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check that the URL exists
|
// Check if the validation of url is enabled in the config
|
||||||
$this->checkUrlExists($url);
|
if (true === $this->urlValidationEnabled) {
|
||||||
|
// Check that the URL exists
|
||||||
|
$this->checkUrlExists($url);
|
||||||
|
}
|
||||||
$customSlug = $this->processCustomSlug($customSlug);
|
$customSlug = $this->processCustomSlug($customSlug);
|
||||||
|
|
||||||
// Transactionally insert the short url, then generate the short code and finally update the short code
|
// Transactionally insert the short url, then generate the short code and finally update the short code
|
||||||
|
|
|
@ -69,10 +69,19 @@ class UrlShortenerTest extends TestCase
|
||||||
$this->cache = new ArrayCache();
|
$this->cache = new ArrayCache();
|
||||||
$this->slugger = $this->prophesize(SlugifyInterface::class);
|
$this->slugger = $this->prophesize(SlugifyInterface::class);
|
||||||
|
|
||||||
|
$this->setUrlShortener(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param bool $urlValidationEnabled
|
||||||
|
*/
|
||||||
|
public function setUrlShortener($urlValidationEnabled)
|
||||||
|
{
|
||||||
$this->urlShortener = new UrlShortener(
|
$this->urlShortener = new UrlShortener(
|
||||||
$this->httpClient->reveal(),
|
$this->httpClient->reveal(),
|
||||||
$this->em->reveal(),
|
$this->em->reveal(),
|
||||||
$this->cache,
|
$this->cache,
|
||||||
|
$urlValidationEnabled,
|
||||||
UrlShortener::DEFAULT_CHARS,
|
UrlShortener::DEFAULT_CHARS,
|
||||||
$this->slugger->reveal()
|
$this->slugger->reveal()
|
||||||
);
|
);
|
||||||
|
@ -110,6 +119,8 @@ class UrlShortenerTest extends TestCase
|
||||||
*/
|
*/
|
||||||
public function exceptionIsThrownWhenUrlDoesNotExist()
|
public function exceptionIsThrownWhenUrlDoesNotExist()
|
||||||
{
|
{
|
||||||
|
$this->setUrlShortener(true);
|
||||||
|
|
||||||
$this->httpClient->request(Argument::cetera())->willThrow(
|
$this->httpClient->request(Argument::cetera())->willThrow(
|
||||||
new ClientException('', $this->prophesize(Request::class)->reveal())
|
new ClientException('', $this->prophesize(Request::class)->reveal())
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue