Passed
Push — master ( 7e7284...62fa85 )
by Roeland
17:42 queued 12s
created

TemplateFileCreator::jsonSerialize()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 7
nc 1
nop 0
dl 0
loc 8
c 1
b 0
f 0
cc 1
rs 10
1
<?php
2
/*
3
 * @copyright Copyright (c) 2021 Julius Härtl <[email protected]>
4
 *
5
 * @author Julius Härtl <[email protected]>
6
 *
7
 * @license GNU AGPL version 3 or any later version
8
 *
9
 * This program is free software: you can redistribute it and/or modify
10
 * it under the terms of the GNU Affero General Public License as
11
 * published by the Free Software Foundation, either version 3 of the
12
 * License, or (at your option) any later version.
13
 *
14
 * This program is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
 * GNU Affero General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU Affero General Public License
20
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21
 *
22
 */
23
24
declare(strict_types=1);
25
26
namespace OCP\Files\Template;
27
28
/**
29
 * @since 21.0.0
30
 */
31
final class TemplateFileCreator implements \JsonSerializable {
32
	protected $appId;
33
	protected $mimetypes = [];
34
	protected $actionName;
35
	protected $fileExtension;
36
	protected $iconClass;
37
	protected $ratio = null;
38
	protected $order = 100;
39
40
	/**
41
	 * @since 21.0.0
42
	 */
43
	public function __construct(
44
		string $appId, string $actionName, string $fileExtension
45
	) {
46
		$this->appId = $appId;
47
		$this->actionName = $actionName;
48
		$this->fileExtension = $fileExtension;
49
	}
50
51
	/**
52
	 * @since 21.0.0
53
	 */
54
	public function getAppId(): string {
55
		return $this->appId;
56
	}
57
58
	/**
59
	 * @since 21.0.0
60
	 */
61
	public function setIconClass(string $iconClass): TemplateFileCreator {
62
		$this->iconClass = $iconClass;
63
		return $this;
64
	}
65
66
	/**
67
	 * @since 21.0.0
68
	 */
69
	public function addMimetype(string $mimetype): TemplateFileCreator {
70
		$this->mimetypes[] = $mimetype;
71
		return $this;
72
	}
73
74
	/**
75
	 * @since 21.0.0
76
	 */
77
	public function getMimetypes(): array {
78
		return $this->mimetypes;
79
	}
80
81
	/**
82
	 * @since 21.0.0
83
	 */
84
	public function setRatio(float $ratio): TemplateFileCreator {
85
		$this->ratio = $ratio;
86
		return $this;
87
	}
88
89
	/**
90
	 * @param int $order order in which the create action shall be listed
91
	 * @since 21.0.0
92
	 */
93
	public function setOrder(int $order): TemplateFileCreator {
94
		$this->order = $order;
95
		return $this;
96
	}
97
98
	/**
99
	 * @since 21.0.0
100
	 */
101
	public function getOrder(): int {
102
		return $this->order;
103
	}
104
105
	/**
106
	 * @since 21.0.0
107
	 */
108
	public function jsonSerialize() {
109
		return [
110
			'app' => $this->appId,
111
			'label' => $this->actionName,
112
			'extension' => $this->fileExtension,
113
			'iconClass' => $this->iconClass,
114
			'mimetypes' => $this->mimetypes,
115
			'ratio' => $this->ratio
116
		];
117
	}
118
}
119