Slight improvements on RoadRunner config

This commit is contained in:
Alejandro Celaya 2022-08-26 17:58:25 +02:00
parent e9ec32b3c3
commit 846802c003
8 changed files with 24 additions and 11 deletions

View File

@ -2,6 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
use function Shlinkio\Shlink\Config\env;
use function Shlinkio\Shlink\Config\swooleIsInstalled; use function Shlinkio\Shlink\Config\swooleIsInstalled;
return [ return [
@ -10,8 +11,8 @@ return [
'domain' => [ 'domain' => [
'schema' => 'http', 'schema' => 'http',
'hostname' => sprintf('localhost:%s', match (true) { 'hostname' => sprintf('localhost:%s', match (true) {
PHP_SAPI === 'cli' && env('RR_MODE') !== null => '8800', // Roadrunner
swooleIsInstalled() => '8080', // Swoole swooleIsInstalled() => '8080', // Swoole
PHP_SAPI === 'cli' => '8800', // Roadrunner
default => '8000', // FPM default => '8000', // FPM
}), }),
], ],

View File

@ -42,10 +42,12 @@ logs:
level: debug level: debug
reload: reload:
enabled: true
interval: 1s interval: 1s
patterns: ['.php', '.yml', '.yaml'] patterns: ['.php', '.yml', '.yaml']
services: services:
http: http:
dirs: ['.'] dirs: ['../..']
recursive: true
jobs:
dirs: ['../..']
recursive: true recursive: true

View File

@ -9,7 +9,7 @@ use Shlinkio\Shlink\EventDispatcher\Util\JsonUnserializable;
abstract class AbstractVisitEvent implements JsonSerializable, JsonUnserializable abstract class AbstractVisitEvent implements JsonSerializable, JsonUnserializable
{ {
public function __construct(public readonly string $visitId) final public function __construct(public readonly string $visitId)
{ {
} }

View File

@ -6,8 +6,18 @@ namespace Shlinkio\Shlink\Core\EventDispatcher\Event;
final class UrlVisited extends AbstractVisitEvent final class UrlVisited extends AbstractVisitEvent
{ {
public function __construct(string $visitId, public readonly ?string $originalIpAddress = null) private ?string $originalIpAddress = null;
public static function withOriginalIpAddress(string $visitId, ?string $originalIpAddress): self
{ {
parent::__construct($visitId); $instance = new self($visitId);
$instance->originalIpAddress = $originalIpAddress;
return $instance;
}
public function originalIpAddress(): ?string
{
return $this->originalIpAddress;
} }
} }

View File

@ -41,7 +41,7 @@ class LocateVisit
return; return;
} }
$this->locateVisit($visitId, $shortUrlVisited->originalIpAddress, $visit); $this->locateVisit($visitId, $shortUrlVisited->originalIpAddress(), $visit);
$this->eventDispatcher->dispatch(new VisitLocated($visitId)); $this->eventDispatcher->dispatch(new VisitLocated($visitId));
} }

View File

@ -72,6 +72,6 @@ class VisitsTracker implements VisitsTrackerInterface
$this->em->persist($visit); $this->em->persist($visit);
$this->em->flush(); $this->em->flush();
$this->eventDispatcher->dispatch(new UrlVisited($visit->getId(), $visitor->remoteAddress)); $this->eventDispatcher->dispatch(UrlVisited::withOriginalIpAddress($visit->getId(), $visitor->remoteAddress));
} }
} }

View File

@ -193,7 +193,7 @@ class LocateVisitTest extends TestCase
{ {
$ipAddr = $originalIpAddress ?? $visit->getRemoteAddr(); $ipAddr = $originalIpAddress ?? $visit->getRemoteAddr();
$location = new Location('', '', '', '', 0.0, 0.0, ''); $location = new Location('', '', '', '', 0.0, 0.0, '');
$event = new UrlVisited('123', $originalIpAddress); $event = UrlVisited::withOriginalIpAddress('123', $originalIpAddress);
$findVisit = $this->em->find(Visit::class, '123')->willReturn($visit); $findVisit = $this->em->find(Visit::class, '123')->willReturn($visit);
$flush = $this->em->flush()->will(function (): void { $flush = $this->em->flush()->will(function (): void {

View File

@ -11,14 +11,14 @@ use Psr\Http\Server\RequestHandlerInterface;
class DropDefaultDomainFromRequestMiddleware implements MiddlewareInterface class DropDefaultDomainFromRequestMiddleware implements MiddlewareInterface
{ {
public function __construct(private string $defaultDomain) public function __construct(private readonly string $defaultDomain)
{ {
} }
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{ {
/** @var array $body */ /** @var array $body */
$body = $request->getParsedBody(); $body = $request->getParsedBody() ?? [];
$request = $request->withQueryParams($this->sanitizeDomainFromPayload($request->getQueryParams())) $request = $request->withQueryParams($this->sanitizeDomainFromPayload($request->getQueryParams()))
->withParsedBody($this->sanitizeDomainFromPayload($body)); ->withParsedBody($this->sanitizeDomainFromPayload($body));