oc-resizer-plugin/compressors/Factory.php

53 lines
1.2 KiB
PHP
Raw Normal View History

2021-09-09 19:18:41 +02:00
<?php
namespace Aweos\Resizer\Compressors;
use Aweos\Resizer\Lib\MediaPath;
class Factory
{
private string $default = DefaultCompressor::class;
public array $types = [
'image/jpeg' => JpgCompressor::class,
2021-09-14 02:13:29 +02:00
'image/png' => PngCompressor::class,
2021-09-17 14:22:19 +02:00
'application/pdf' => PdfCompressor::class,
2021-09-09 19:18:41 +02:00
];
2021-09-17 17:09:17 +02:00
public array $extensions = [
'jpg' => JpgCompressor::class,
'png' => PngCompressor::class,
'pdf' => PdfCompressor::class,
];
2021-09-09 19:18:41 +02:00
public function fromMedia(string $mediaPath): Compressor
{
return $this->resolve(new MediaPath($mediaPath));
}
public function resolve(MediaPath $path): Compressor
{
2021-09-17 17:09:17 +02:00
$compiler = is_null($path->type())
? $this->resolveExtension($path->extension())
: $this->resolveType($path->type());
2021-09-09 19:18:41 +02:00
if (is_null($compiler)) {
return new $this->default($path);
}
return new $compiler($path);
}
private function resolveType(string $type): ?string
{
return collect($this->types)->get($type);
}
2021-09-17 17:09:17 +02:00
private function resolveExtension(string $extension): ?string
{
return collect($this->extensions)->get($extension);
}
2021-09-09 19:18:41 +02:00
}