mirror of
https://github.com/shlinkio/shlink.git
synced 2026-03-11 01:33:11 +08:00
Fix error intrduced by endroid/qr-code 6.0.4
This commit is contained in:
@@ -38,6 +38,7 @@ final readonly class QrCodeParams
|
||||
public int $size,
|
||||
public int $margin,
|
||||
public WriterInterface $writer,
|
||||
public array $writerOptions,
|
||||
public ErrorCorrectionLevel $errorCorrectionLevel,
|
||||
public RoundBlockSizeMode $roundBlockSizeMode,
|
||||
public ColorInterface $color,
|
||||
@@ -49,11 +50,13 @@ final readonly class QrCodeParams
|
||||
public static function fromRequest(ServerRequestInterface $request, QrCodeOptions $defaults): self
|
||||
{
|
||||
$query = $request->getQueryParams();
|
||||
[$writer, $writerOptions] = self::resolveWriterAndWriterOptions($query, $defaults);
|
||||
|
||||
return new self(
|
||||
size: self::resolveSize($query, $defaults),
|
||||
margin: self::resolveMargin($query, $defaults),
|
||||
writer: self::resolveWriter($query, $defaults),
|
||||
writer: $writer,
|
||||
writerOptions: $writerOptions,
|
||||
errorCorrectionLevel: self::resolveErrorCorrection($query, $defaults),
|
||||
roundBlockSizeMode: self::resolveRoundBlockSize($query, $defaults),
|
||||
color: self::resolveColor($query, $defaults),
|
||||
@@ -83,14 +86,17 @@ final readonly class QrCodeParams
|
||||
return max($intMargin, 0);
|
||||
}
|
||||
|
||||
private static function resolveWriter(array $query, QrCodeOptions $defaults): WriterInterface
|
||||
/**
|
||||
* @return array{WriterInterface, array}
|
||||
*/
|
||||
private static function resolveWriterAndWriterOptions(array $query, QrCodeOptions $defaults): array
|
||||
{
|
||||
$qFormat = self::normalizeParam($query['format'] ?? '');
|
||||
$format = contains($qFormat, self::SUPPORTED_FORMATS) ? $qFormat : self::normalizeParam($defaults->format);
|
||||
|
||||
return match ($format) {
|
||||
'svg' => new SvgWriter(),
|
||||
default => new PngWriter(),
|
||||
'svg' => [new SvgWriter(), []],
|
||||
default => [new PngWriter(), [PngWriter::WRITER_OPTION_NUMBER_OF_COLORS => null]],
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@ readonly class QrCodeAction implements MiddlewareInterface
|
||||
$params = QrCodeParams::fromRequest($request, $this->options);
|
||||
$qrCodeBuilder = new Builder(
|
||||
writer: $params->writer,
|
||||
writerOptions: $params->writerOptions,
|
||||
data: $this->stringifier->stringify($shortUrl),
|
||||
errorCorrectionLevel: $params->errorCorrectionLevel,
|
||||
size: $params->size,
|
||||
|
||||
Reference in New Issue
Block a user