-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Expand file tree
/
Copy pathOrigin.php
More file actions
113 lines (99 loc) Β· 2.3 KB
/
Origin.php
File metadata and controls
113 lines (99 loc) Β· 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
declare(strict_types=1);
namespace Intervention\Image;
use Intervention\Image\Exceptions\InvalidArgumentException;
use Intervention\Image\Exceptions\NotSupportedException;
use Intervention\Image\Interfaces\OriginInterface;
class Origin implements OriginInterface
{
/**
* Create new origin instance.
*/
public function __construct(
protected string $mediaType = 'application/octet-stream',
protected ?string $filePath = null
) {
//
}
/**
* {@inheritdoc}
*
* @see OriginInterface::mediaType()
*/
public function mediaType(): string
{
return $this->mediaType;
}
/**
* @see self::mediaType()
*/
public function mimetype(): string
{
return $this->mediaType();
}
/**
* {@inheritdoc}
*
* @see OriginInterface::setMediaType()
*/
public function setMediaType(string|MediaType $type): self
{
$this->mediaType = is_string($type) ? $type : $type->value;
return $this;
}
/**
* {@inheritdoc}
*
* @see OriginInterface::filePath()
*/
public function filePath(): ?string
{
return $this->filePath;
}
/**
* {@inheritdoc}
*
* @see OriginInterface::setFilePath()
*/
public function setFilePath(string $path): self
{
$this->filePath = $path;
return $this;
}
/**
* {@inheritdoc}
*
* @see OriginInterface::fileExtension()
*/
public function fileExtension(): ?string
{
return pathinfo($this->filePath ?: '', PATHINFO_EXTENSION) ?: null;
}
/**
* {@inheritdoc}
*
* @see OriginInterface::format()
*
* @throws NotSupportedException
*/
public function format(): Format
{
try {
return MediaType::create($this->mediaType())->format();
} catch (InvalidArgumentException) {
throw new NotSupportedException('Media type "' . $this->mediaType() . '" is not supported');
}
}
/**
* Show debug info for the current image.
*
* @return array<string, null|string>
*/
public function __debugInfo(): array
{
return [
'mediaType' => $this->mediaType(),
'filePath' => $this->filePath(),
];
}
}