Test Failed
Branch master (df1c42)
by Mostafa
15:23
created

VideoStyle::validateDimension()   C

Complexity

Conditions 13
Paths 9

Size

Total Lines 27
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 13
eloc 16
c 1
b 0
f 0
nc 9
nop 0
dl 0
loc 27
rs 6.6166

How to fix   Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace Mostafaznv\Larupload\DTOs\Style;
4
5
use Exception;
6
use FFMpeg\Format\Video\X264;
7
use Mostafaznv\Larupload\Enums\LaruploadMediaStyle;
8
9
class VideoStyle extends Style
10
{
11
    public readonly LaruploadMediaStyle $mode;
12
    public readonly X264 $format;
13
14
    public function __construct(string $name, ?int $width = null, ?int $height = null, LaruploadMediaStyle $mode = LaruploadMediaStyle::SCALE_HEIGHT, X264 $format = new X264, bool $padding = false)
15
    {
16
        parent::__construct($name, $width, $height, $padding);
17
18
        $this->mode = $mode;
0 ignored issues
show
Bug introduced by
The property mode is declared read-only in Mostafaznv\Larupload\DTOs\Style\VideoStyle.
Loading history...
19
        $this->format = $format;
0 ignored issues
show
Bug introduced by
The property format is declared read-only in Mostafaznv\Larupload\DTOs\Style\VideoStyle.
Loading history...
20
21
        $this->validateDimension();
22
    }
23
24
    public static function make(string $name, ?int $width = null, ?int $height = null, LaruploadMediaStyle $mode = LaruploadMediaStyle::SCALE_HEIGHT, X264 $format = new X264, bool $padding = false): self
25
    {
26
        return new self($name, $width, $height, $mode, $format, $padding);
27
    }
28
29
30
    private function validateDimension(): void
31
    {
32
        if ($this->mode === LaruploadMediaStyle::SCALE_HEIGHT) {
33
            if ($this->width === null or $this->width === 0) {
34
                throw new Exception(
35
                    'Width is required when you are in SCALE_HEIGHT mode'
36
                );
37
            }
38
        }
39
        else if ($this->mode === LaruploadMediaStyle::SCALE_WIDTH) {
40
            if ($this->height === null or $this->height === 0) {
41
                throw new Exception(
42
                    'Height is required when you are in SCALE_WIDTH mode'
43
                );
44
            }
45
        }
46
        else if (in_array($this->mode, [LaruploadMediaStyle::CROP, LaruploadMediaStyle::FIT])) {
47
            if (!$this->width or !$this->height) {
48
                throw new Exception(
49
                    'Width and Height are required when you are in CROP/FIT mode'
50
                );
51
            }
52
        }
53
        else if ($this->mode === LaruploadMediaStyle::AUTO) {
54
            if (!$this->width and !$this->height) {
55
                throw new Exception(
56
                    'Width and height are required when you are in auto mode'
57
                );
58
            }
59
        }
60
    }
61
}
62