Remove last references to functional-php

This commit is contained in:
Alejandro Celaya
2023-11-30 18:09:15 +01:00
parent bff4bd12ae
commit 1854cc2f19
22 changed files with 147 additions and 114 deletions

View File

@@ -18,7 +18,7 @@ use Endroid\QrCode\Writer\WriterInterface;
use Psr\Http\Message\ServerRequestInterface;
use Shlinkio\Shlink\Core\Options\QrCodeOptions;
use function Shlinkio\Shlink\Core\contains;
use function Shlinkio\Shlink\Core\ArrayUtils\contains;
use function strtolower;
use function trim;

View File

@@ -12,7 +12,6 @@ use Psr\Log\LoggerInterface;
use Shlinkio\Shlink\Core\ErrorHandler\Model\NotFoundType;
use Shlinkio\Shlink\Core\Util\RedirectResponseHelperInterface;
use function Functional\compose;
use function str_replace;
use function urlencode;
@@ -51,9 +50,6 @@ class NotFoundRedirectResolver implements NotFoundRedirectResolverInterface
private function resolvePlaceholders(UriInterface $currentUri, string $redirectUrl): string
{
$domain = $currentUri->getAuthority();
$path = $currentUri->getPath();
try {
$redirectUri = Uri::createFromString($redirectUrl);
} catch (SyntaxError $e) {
@@ -64,18 +60,32 @@ class NotFoundRedirectResolver implements NotFoundRedirectResolverInterface
return $redirectUrl;
}
$replacePlaceholderForPattern = static fn (string $pattern, string $replace, callable $modifier) =>
static fn (?string $value) =>
$value === null ? null : str_replace($modifier($pattern), $modifier($replace), $value);
$replacePlaceholders = static fn (callable $modifier) => compose(
$replacePlaceholderForPattern(self::DOMAIN_PLACEHOLDER, $domain, $modifier),
$replacePlaceholderForPattern(self::ORIGINAL_PATH_PLACEHOLDER, $path, $modifier),
$path = $currentUri->getPath();
$domain = $currentUri->getAuthority();
$replacePlaceholderForPattern = static fn (string $pattern, string $replace, ?string $value): string|null =>
$value === null ? null : str_replace($pattern, $replace, $value);
$replacePlaceholders = static function (
callable $modifier,
?string $value,
) use (
$replacePlaceholderForPattern,
$path,
$domain,
): string|null {
$value = $replacePlaceholderForPattern($modifier(self::DOMAIN_PLACEHOLDER), $modifier($domain), $value);
return $replacePlaceholderForPattern($modifier(self::ORIGINAL_PATH_PLACEHOLDER), $modifier($path), $value);
};
$replacePlaceholdersInPath = static function (string $path) use ($replacePlaceholders): string {
$result = $replacePlaceholders(static fn (mixed $v) => $v, $path);
return str_replace('//', '/', $result ?? '');
};
$replacePlaceholdersInQuery = static fn (?string $query): string|null => $replacePlaceholders(
urlencode(...),
$query,
);
$replacePlaceholdersInPath = compose(
$replacePlaceholders(static fn (mixed $v) => $v),
static fn (?string $path) => $path === null ? null : str_replace('//', '/', $path),
);
$replacePlaceholdersInQuery = $replacePlaceholders(urlencode(...));
return $redirectUri
->withPath($replacePlaceholdersInPath($redirectUri->getPath()))

View File

@@ -24,7 +24,7 @@ final class DeviceLongUrlPair
* * The first one is a list of mapped instances for those entries in the map with non-null value
* * The second is a list of DeviceTypes which have been provided with value null
*
* @param array<string, string | null> $map
* @param array<string, string|null> $map
* @return array{array<string, self>, DeviceType[]}
*/
public static function fromMapToChangeSet(array $map): array

View File

@@ -2,7 +2,7 @@
namespace Shlinkio\Shlink\Core\ShortUrl\Model;
use function Shlinkio\Shlink\Core\contains;
use function Shlinkio\Shlink\Core\ArrayUtils\contains;
enum OrderableField: string
{

View File

@@ -11,9 +11,9 @@ use Shlinkio\Shlink\Core\Model\DeviceType;
use function array_keys;
use function array_values;
use function is_array;
use function Shlinkio\Shlink\Core\contains;
use function Shlinkio\Shlink\Core\ArrayUtils\contains;
use function Shlinkio\Shlink\Core\ArrayUtils\every;
use function Shlinkio\Shlink\Core\enumValues;
use function Shlinkio\Shlink\Core\every;
class DeviceLongUrlsValidator extends AbstractValidator
{

View File

@@ -2,7 +2,7 @@
namespace Shlinkio\Shlink\Core\Util;
use function Shlinkio\Shlink\Core\contains;
use function Shlinkio\Shlink\Core\ArrayUtils\contains;
enum RedirectStatus: int
{

View File

@@ -20,6 +20,7 @@ use function array_keys;
use function array_map;
use function explode;
use function implode;
use function Shlinkio\Shlink\Core\ArrayUtils\some;
use function str_contains;
class RequestTracker implements RequestTrackerInterface, RequestMethodInterface
@@ -85,17 +86,13 @@ class RequestTracker implements RequestTrackerInterface, RequestMethodInterface
$remoteAddrParts = explode('.', $remoteAddr);
$disableTrackingFrom = $this->trackingOptions->disableTrackingFrom;
foreach ($disableTrackingFrom as $value) {
return some($disableTrackingFrom, function (string $value) use ($ip, $remoteAddrParts): bool {
$range = str_contains($value, '*')
? $this->parseValueWithWildcards($value, $remoteAddrParts)
: Factory::parseRangeString($value);
if ($range !== null && $ip->matches($range)) {
return true;
}
}
return false;
return $range !== null && $ip->matches($range);
});
}
private function parseValueWithWildcards(string $value, array $remoteAddrParts): ?RangeInterface