UploadCoverAction::make()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 2
dl 0
loc 3
rs 10
1
<?php
2
3
namespace Mostafaznv\Larupload\Actions\Cover;
4
5
use Illuminate\Http\UploadedFile;
6
use Illuminate\Support\Facades\Storage;
7
use Mostafaznv\Larupload\Actions\SetFileNameAction;
8
use Mostafaznv\Larupload\DTOs\CoverActionData;
9
use Mostafaznv\Larupload\Enums\LaruploadFileType;
10
use Mostafaznv\Larupload\Storage\Image;
11
12
class UploadCoverAction
13
{
14
    private array $output;
15
16
    public function __construct(private readonly UploadedFile $cover, private readonly CoverActionData $data)
17
    {
18
        $this->output = $this->data->output;
19
    }
20
21
    public static function make(UploadedFile $cover, CoverActionData $data): static
22
    {
23
        return new static($cover, $data);
24
    }
25
26
27
    public function run(string $path): array
28
    {
29
        Storage::disk($this->data->disk)->makeDirectory($path);
30
31
        $img = $this->img();
32
        $name = SetFileNameAction::make($this->cover, $this->data->namingMethod, $this->data->lang)->generate();
33
        $saveTo = "$path/$name";
34
35
        $result = $img->resize($saveTo, $this->data->style);
36
37
        if ($result) {
0 ignored issues
show
introduced by
The condition $result is always true.
Loading history...
38
            $this->output['cover'] = $name;
39
40
            if ($this->data->type != LaruploadFileType::IMAGE) {
41
                $this->output['dominant_color'] = $this->data->withDominantColor ? $img->getDominantColor() : null;
42
            }
43
        }
44
45
        return $this->output;
46
    }
47
48
    private function img(): Image
49
    {
50
        return new Image(
51
            file: $this->cover,
52
            disk: $this->data->disk,
53
            library: $this->data->imageProcessingLibrary,
54
            dominantColorQuality: $this->data->dominantColorQuality
55
        );
56
    }
57
}
58