Passed
Push — master ( d048db...e350b2 )
by Shahrad
01:41
created
src/Exceptions/InvalidArgumentException.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -12,6 +12,6 @@
 block discarded – undo
12 12
 class InvalidArgumentException extends \Exception
13 13
 {
14 14
 
15
-	protected $message = 'Invalid argument';
15
+    protected $message = 'Invalid argument';
16 16
 
17 17
 }
18 18
\ No newline at end of file
Please login to merge, or discard this patch.
src/Exceptions/BadResponseException.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -12,6 +12,6 @@
 block discarded – undo
12 12
 class BadResponseException extends \Exception
13 13
 {
14 14
 
15
-	protected $message = 'Bad response from server';
15
+    protected $message = 'Bad response from server';
16 16
 
17 17
 }
18 18
\ No newline at end of file
Please login to merge, or discard this patch.
src/Exceptions/WebSocketException.php 1 patch
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -12,10 +12,10 @@
 block discarded – undo
12 12
 class WebSocketException extends \Exception
13 13
 {
14 14
 
15
-	public function printStack()
16
-	{
17
-		echo $this->getFile() . ' ' . $this->getLine() . ' ' . $this->getMessage() . PHP_EOL;
18
-		echo $this->getTraceAsString();
19
-	}
15
+    public function printStack()
16
+    {
17
+        echo $this->getFile() . ' ' . $this->getLine() . ' ' . $this->getMessage() . PHP_EOL;
18
+        echo $this->getTraceAsString();
19
+    }
20 20
 
21 21
 }
Please login to merge, or discard this patch.
src/MimeType.php 1 patch
Indentation   +989 added lines, -989 removed lines patch added patch discarded remove patch
@@ -12,994 +12,994 @@
 block discarded – undo
12 12
 class MimeType
13 13
 {
14 14
 
15
-	/**
16
-	 * @var array
17
-	 */
18
-	public const TYPES = [
19
-		'ez' => "application/andrew-inset",
20
-		'aw' => "application/applixware",
21
-		'atom' => "application/atom+xml",
22
-		'atomcat' => "application/atomcat+xml",
23
-		'atomsvc' => "application/atomsvc+xml",
24
-		'ccxml' => "application/ccxml+xml",
25
-		'cdmia' => "application/cdmi-capability",
26
-		'cdmic' => "application/cdmi-container",
27
-		'cdmid' => "application/cdmi-domain",
28
-		'cdmio' => "application/cdmi-object",
29
-		'cdmiq' => "application/cdmi-queue",
30
-		'cu' => "application/cu-seeme",
31
-		'davmount' => "application/davmount+xml",
32
-		'dbk' => "application/docbook+xml",
33
-		'dssc' => "application/dssc+der",
34
-		'xdssc' => "application/dssc+xml",
35
-		'ecma' => "application/ecmascript",
36
-		'emma' => "application/emma+xml",
37
-		'epub' => "application/epub+zip",
38
-		'exi' => "application/exi",
39
-		'pfr' => "application/font-tdpfr",
40
-		'gml' => "application/gml+xml",
41
-		'gpx' => "application/gpx+xml",
42
-		'gxf' => "application/gxf",
43
-		'stk' => "application/hyperstudio",
44
-		'ink' => "application/inkml+xml",
45
-		'inkml' => "application/inkml+xml",
46
-		'ipfix' => "application/ipfix",
47
-		'jar' => "application/java-archive",
48
-		'ser' => "application/java-serialized-object",
49
-		'class' => "application/java-vm",
50
-		'js' => "application/javascript",
51
-		'json' => "application/json",
52
-		'jsonml' => "application/jsonml+json",
53
-		'lostxml' => "application/lost+xml",
54
-		'hqx' => "application/mac-binhex40",
55
-		'cpt' => "application/mac-compactpro",
56
-		'mads' => "application/mads+xml",
57
-		'mrc' => "application/marc",
58
-		'mrcx' => "application/marcxml+xml",
59
-		'ma' => "application/mathematica",
60
-		'nb' => "application/mathematica",
61
-		'mb' => "application/mathematica",
62
-		'mathml' => "application/mathml+xml",
63
-		'mbox' => "application/mbox",
64
-		'mscml' => "application/mediaservercontrol+xml",
65
-		'metalink' => "application/metalink+xml",
66
-		'meta4' => "application/metalink4+xml",
67
-		'mets' => "application/mets+xml",
68
-		'mods' => "application/mods+xml",
69
-		'm21' => "application/mp21",
70
-		'mp21' => "application/mp21",
71
-		'mp4s' => "application/mp4",
72
-		'doc' => "application/msword",
73
-		'dot' => "application/msword",
74
-		'mxf' => "application/mxf",
75
-		'bin' => "application/octet-stream",
76
-		'dms' => "application/octet-stream",
77
-		'lrf' => "application/octet-stream",
78
-		'mar' => "application/octet-stream",
79
-		'so' => "application/octet-stream",
80
-		'dist' => "application/octet-stream",
81
-		'distz' => "application/octet-stream",
82
-		'pkg' => "application/octet-stream",
83
-		'bpk' => "application/octet-stream",
84
-		'dump' => "application/octet-stream",
85
-		'elc' => "application/octet-stream",
86
-		'deploy' => "application/octet-stream",
87
-		'oda' => "application/oda",
88
-		'opf' => "application/oebps-package+xml",
89
-		'ogx' => "application/ogg",
90
-		'omdoc' => "application/omdoc+xml",
91
-		'onetoc' => "application/onenote",
92
-		'onetoc2' => "application/onenote",
93
-		'onetmp' => "application/onenote",
94
-		'onepkg' => "application/onenote",
95
-		'oxps' => "application/oxps",
96
-		'xer' => "application/patch-ops-error+xml",
97
-		'pdf' => "application/pdf",
98
-		'pgp' => "application/pgp-encrypted",
99
-		'asc' => "application/pgp-signature",
100
-		'sig' => "application/pgp-signature",
101
-		'prf' => "application/pics-rules",
102
-		'p10' => "application/pkcs10",
103
-		'p7m' => "application/pkcs7-mime",
104
-		'p7c' => "application/pkcs7-mime",
105
-		'p7s' => "application/pkcs7-signature",
106
-		'p8' => "application/pkcs8",
107
-		'ac' => "application/pkix-attr-cert",
108
-		'cer' => "application/pkix-cert",
109
-		'crl' => "application/pkix-crl",
110
-		'pkipath' => "application/pkix-pkipath",
111
-		'pki' => "application/pkixcmp",
112
-		'pls' => "application/pls+xml",
113
-		'ai' => "application/postscript",
114
-		'eps' => "application/postscript",
115
-		'ps' => "application/postscript",
116
-		'cww' => "application/prs.cww",
117
-		'pskcxml' => "application/pskc+xml",
118
-		'rdf' => "application/rdf+xml",
119
-		'rif' => "application/reginfo+xml",
120
-		'rnc' => "application/relax-ng-compact-syntax",
121
-		'rl' => "application/resource-lists+xml",
122
-		'rld' => "application/resource-lists-diff+xml",
123
-		'rs' => "application/rls-services+xml",
124
-		'gbr' => "application/rpki-ghostbusters",
125
-		'mft' => "application/rpki-manifest",
126
-		'roa' => "application/rpki-roa",
127
-		'rsd' => "application/rsd+xml",
128
-		'rss' => "application/rss+xml",
129
-		'rtf' => "application/rtf",
130
-		'sbml' => "application/sbml+xml",
131
-		'scq' => "application/scvp-cv-request",
132
-		'scs' => "application/scvp-cv-response",
133
-		'spq' => "application/scvp-vp-request",
134
-		'spp' => "application/scvp-vp-response",
135
-		'sdp' => "application/sdp",
136
-		'setpay' => "application/set-payment-initiation",
137
-		'setreg' => "application/set-registration-initiation",
138
-		'shf' => "application/shf+xml",
139
-		'smi' => "application/smil+xml",
140
-		'smil' => "application/smil+xml",
141
-		'rq' => "application/sparql-query",
142
-		'srx' => "application/sparql-results+xml",
143
-		'gram' => "application/srgs",
144
-		'grxml' => "application/srgs+xml",
145
-		'sru' => "application/sru+xml",
146
-		'ssdl' => "application/ssdl+xml",
147
-		'ssml' => "application/ssml+xml",
148
-		'tei' => "application/tei+xml",
149
-		'teicorpus' => "application/tei+xml",
150
-		'tfi' => "application/thraud+xml",
151
-		'tsd' => "application/timestamped-data",
152
-		'plb' => "application/vnd.3gpp.pic-bw-large",
153
-		'psb' => "application/vnd.3gpp.pic-bw-small",
154
-		'pvb' => "application/vnd.3gpp.pic-bw-var",
155
-		'tcap' => "application/vnd.3gpp2.tcap",
156
-		'pwn' => "application/vnd.3m.post-it-notes",
157
-		'aso' => "application/vnd.accpac.simply.aso",
158
-		'imp' => "application/vnd.accpac.simply.imp",
159
-		'acu' => "application/vnd.acucobol",
160
-		'atc' => "application/vnd.acucorp",
161
-		'acutc' => "application/vnd.acucorp",
162
-		'air' => "application/vnd.adobe.air-application-installer-package+zip",
163
-		'fcdt' => "application/vnd.adobe.formscentral.fcdt",
164
-		'fxp' => "application/vnd.adobe.fxp",
165
-		'fxpl' => "application/vnd.adobe.fxp",
166
-		'xdp' => "application/vnd.adobe.xdp+xml",
167
-		'xfdf' => "application/vnd.adobe.xfdf",
168
-		'ahead' => "application/vnd.ahead.space",
169
-		'azf' => "application/vnd.airzip.filesecure.azf",
170
-		'azs' => "application/vnd.airzip.filesecure.azs",
171
-		'azw' => "application/vnd.amazon.ebook",
172
-		'acc' => "application/vnd.americandynamics.acc",
173
-		'ami' => "application/vnd.amiga.ami",
174
-		'apk' => "application/vnd.android.package-archive",
175
-		'cii' => "application/vnd.anser-web-certificate-issue-initiation",
176
-		'fti' => "application/vnd.anser-web-funds-transfer-initiation",
177
-		'atx' => "application/vnd.antix.game-component",
178
-		'mpkg' => "application/vnd.apple.installer+xml",
179
-		'm3u8' => "application/vnd.apple.mpegurl",
180
-		'swi' => "application/vnd.aristanetworks.swi",
181
-		'iota' => "application/vnd.astraea-software.iota",
182
-		'aep' => "application/vnd.audiograph",
183
-		'mpm' => "application/vnd.blueice.multipass",
184
-		'bmi' => "application/vnd.bmi",
185
-		'rep' => "application/vnd.businessobjects",
186
-		'cdxml' => "application/vnd.chemdraw+xml",
187
-		'mmd' => "application/vnd.chipnuts.karaoke-mmd",
188
-		'cdy' => "application/vnd.cinderella",
189
-		'cla' => "application/vnd.claymore",
190
-		'rp9' => "application/vnd.cloanto.rp9",
191
-		'c4g' => "application/vnd.clonk.c4group",
192
-		'c4d' => "application/vnd.clonk.c4group",
193
-		'c4f' => "application/vnd.clonk.c4group",
194
-		'c4p' => "application/vnd.clonk.c4group",
195
-		'c4u' => "application/vnd.clonk.c4group",
196
-		'c11amc' => "application/vnd.cluetrust.cartomobile-config",
197
-		'c11amz' => "application/vnd.cluetrust.cartomobile-config-pkg",
198
-		'csp' => "application/vnd.commonspace",
199
-		'cdbcmsg' => "application/vnd.contact.cmsg",
200
-		'cmc' => "application/vnd.cosmocaller",
201
-		'clkx' => "application/vnd.crick.clicker",
202
-		'clkk' => "application/vnd.crick.clicker.keyboard",
203
-		'clkp' => "application/vnd.crick.clicker.palette",
204
-		'clkt' => "application/vnd.crick.clicker.template",
205
-		'clkw' => "application/vnd.crick.clicker.wordbank",
206
-		'wbs' => "application/vnd.criticaltools.wbs+xml",
207
-		'pml' => "application/vnd.ctc-posml",
208
-		'ppd' => "application/vnd.cups-ppd",
209
-		'car' => "application/vnd.curl.car",
210
-		'pcurl' => "application/vnd.curl.pcurl",
211
-		'dart' => "application/vnd.dart",
212
-		'rdz' => "application/vnd.data-vision.rdz",
213
-		'uvf' => "application/vnd.dece.data",
214
-		'uvvf' => "application/vnd.dece.data",
215
-		'uvd' => "application/vnd.dece.data",
216
-		'uvvd' => "application/vnd.dece.data",
217
-		'uvt' => "application/vnd.dece.ttml+xml",
218
-		'uvvt' => "application/vnd.dece.ttml+xml",
219
-		'uvx' => "application/vnd.dece.unspecified",
220
-		'uvvx' => "application/vnd.dece.unspecified",
221
-		'uvz' => "application/vnd.dece.zip",
222
-		'uvvz' => "application/vnd.dece.zip",
223
-		'fe_launch' => "application/vnd.denovo.fcselayout-link",
224
-		'dna' => "application/vnd.dna",
225
-		'mlp' => "application/vnd.dolby.mlp",
226
-		'dpg' => "application/vnd.dpgraph",
227
-		'dfac' => "application/vnd.dreamfactory",
228
-		'kpxx' => "application/vnd.ds-keypoint",
229
-		'ait' => "application/vnd.dvb.ait",
230
-		'svc' => "application/vnd.dvb.service",
231
-		'geo' => "application/vnd.dynageo",
232
-		'mag' => "application/vnd.ecowin.chart",
233
-		'nml' => "application/vnd.enliven",
234
-		'esf' => "application/vnd.epson.esf",
235
-		'msf' => "application/vnd.epson.msf",
236
-		'qam' => "application/vnd.epson.quickanime",
237
-		'slt' => "application/vnd.epson.salt",
238
-		'ssf' => "application/vnd.epson.ssf",
239
-		'es3' => "application/vnd.eszigno3+xml",
240
-		'et3' => "application/vnd.eszigno3+xml",
241
-		'ez2' => "application/vnd.ezpix-album",
242
-		'ez3' => "application/vnd.ezpix-package",
243
-		'fdf' => "application/vnd.fdf",
244
-		'mseed' => "application/vnd.fdsn.mseed",
245
-		'seed' => "application/vnd.fdsn.seed",
246
-		'dataless' => "application/vnd.fdsn.seed",
247
-		'gph' => "application/vnd.flographit",
248
-		'ftc' => "application/vnd.fluxtime.clip",
249
-		'fm' => "application/vnd.framemaker",
250
-		'frame' => "application/vnd.framemaker",
251
-		'maker' => "application/vnd.framemaker",
252
-		'book' => "application/vnd.framemaker",
253
-		'fnc' => "application/vnd.frogans.fnc",
254
-		'ltf' => "application/vnd.frogans.ltf",
255
-		'fsc' => "application/vnd.fsc.weblaunch",
256
-		'oas' => "application/vnd.fujitsu.oasys",
257
-		'oa2' => "application/vnd.fujitsu.oasys2",
258
-		'oa3' => "application/vnd.fujitsu.oasys3",
259
-		'fg5' => "application/vnd.fujitsu.oasysgp",
260
-		'bh2' => "application/vnd.fujitsu.oasysprs",
261
-		'ddd' => "application/vnd.fujixerox.ddd",
262
-		'xdw' => "application/vnd.fujixerox.docuworks",
263
-		'xbd' => "application/vnd.fujixerox.docuworks.binder",
264
-		'fzs' => "application/vnd.fuzzysheet",
265
-		'txd' => "application/vnd.genomatix.tuxedo",
266
-		'ggb' => "application/vnd.geogebra.file",
267
-		'ggt' => "application/vnd.geogebra.tool",
268
-		'gex' => "application/vnd.geometry-explorer",
269
-		'gre' => "application/vnd.geometry-explorer",
270
-		'gxt' => "application/vnd.geonext",
271
-		'g2w' => "application/vnd.geoplan",
272
-		'g3w' => "application/vnd.geospace",
273
-		'gmx' => "application/vnd.gmx",
274
-		'kml' => "application/vnd.google-earth.kml+xml",
275
-		'kmz' => "application/vnd.google-earth.kmz",
276
-		'gqf' => "application/vnd.grafeq",
277
-		'gqs' => "application/vnd.grafeq",
278
-		'gac' => "application/vnd.groove-account",
279
-		'ghf' => "application/vnd.groove-help",
280
-		'gim' => "application/vnd.groove-identity-message",
281
-		'grv' => "application/vnd.groove-injector",
282
-		'gtm' => "application/vnd.groove-tool-message",
283
-		'tpl' => "application/vnd.groove-tool-template",
284
-		'vcg' => "application/vnd.groove-vcard",
285
-		'hal' => "application/vnd.hal+xml",
286
-		'zmm' => "application/vnd.handheld-entertainment+xml",
287
-		'hbci' => "application/vnd.hbci",
288
-		'les' => "application/vnd.hhe.lesson-player",
289
-		'hpgl' => "application/vnd.hp-hpgl",
290
-		'hpid' => "application/vnd.hp-hpid",
291
-		'hps' => "application/vnd.hp-hps",
292
-		'jlt' => "application/vnd.hp-jlyt",
293
-		'pcl' => "application/vnd.hp-pcl",
294
-		'pclxl' => "application/vnd.hp-pclxl",
295
-		'sfd-hdstx' => "application/vnd.hydrostatix.sof-data",
296
-		'mpy' => "application/vnd.ibm.minipay",
297
-		'afp' => "application/vnd.ibm.modcap",
298
-		'listafp' => "application/vnd.ibm.modcap",
299
-		'list3820' => "application/vnd.ibm.modcap",
300
-		'irm' => "application/vnd.ibm.rights-management",
301
-		'sc' => "application/vnd.ibm.secure-container",
302
-		'icc' => "application/vnd.iccprofile",
303
-		'icm' => "application/vnd.iccprofile",
304
-		'igl' => "application/vnd.igloader",
305
-		'ivp' => "application/vnd.immervision-ivp",
306
-		'ivu' => "application/vnd.immervision-ivu",
307
-		'igm' => "application/vnd.insors.igm",
308
-		'xpw' => "application/vnd.intercon.formnet",
309
-		'xpx' => "application/vnd.intercon.formnet",
310
-		'i2g' => "application/vnd.intergeo",
311
-		'qbo' => "application/vnd.intu.qbo",
312
-		'qfx' => "application/vnd.intu.qfx",
313
-		'rcprofile' => "application/vnd.ipunplugged.rcprofile",
314
-		'irp' => "application/vnd.irepository.package+xml",
315
-		'xpr' => "application/vnd.is-xpr",
316
-		'fcs' => "application/vnd.isac.fcs",
317
-		'jam' => "application/vnd.jam",
318
-		'rms' => "application/vnd.jcp.javame.midlet-rms",
319
-		'jisp' => "application/vnd.jisp",
320
-		'joda' => "application/vnd.joost.joda-archive",
321
-		'ktz' => "application/vnd.kahootz",
322
-		'ktr' => "application/vnd.kahootz",
323
-		'karbon' => "application/vnd.kde.karbon",
324
-		'chrt' => "application/vnd.kde.kchart",
325
-		'kfo' => "application/vnd.kde.kformula",
326
-		'flw' => "application/vnd.kde.kivio",
327
-		'kon' => "application/vnd.kde.kontour",
328
-		'kpr' => "application/vnd.kde.kpresenter",
329
-		'kpt' => "application/vnd.kde.kpresenter",
330
-		'ksp' => "application/vnd.kde.kspread",
331
-		'kwd' => "application/vnd.kde.kword",
332
-		'kwt' => "application/vnd.kde.kword",
333
-		'htke' => "application/vnd.kenameaapp",
334
-		'kia' => "application/vnd.kidspiration",
335
-		'kne' => "application/vnd.kinar",
336
-		'knp' => "application/vnd.kinar",
337
-		'skp' => "application/vnd.koan",
338
-		'skd' => "application/vnd.koan",
339
-		'skt' => "application/vnd.koan",
340
-		'skm' => "application/vnd.koan",
341
-		'sse' => "application/vnd.kodak-descriptor",
342
-		'lasxml' => "application/vnd.las.las+xml",
343
-		'lbd' => "application/vnd.llamagraphics.life-balance.desktop",
344
-		'lbe' => "application/vnd.llamagraphics.life-balance.exchange+xml",
345
-		'123' => "application/vnd.lotus-1-2-3",
346
-		'apr' => "application/vnd.lotus-approach",
347
-		'pre' => "application/vnd.lotus-freelance",
348
-		'nsf' => "application/vnd.lotus-notes",
349
-		'org' => "application/vnd.lotus-organizer",
350
-		'scm' => "application/vnd.lotus-screencam",
351
-		'lwp' => "application/vnd.lotus-wordpro",
352
-		'portpkg' => "application/vnd.macports.portpkg",
353
-		'mcd' => "application/vnd.mcd",
354
-		'mc1' => "application/vnd.medcalcdata",
355
-		'cdkey' => "application/vnd.mediastation.cdkey",
356
-		'mwf' => "application/vnd.mfer",
357
-		'mfm' => "application/vnd.mfmp",
358
-		'flo' => "application/vnd.micrografx.flo",
359
-		'igx' => "application/vnd.micrografx.igx",
360
-		'mif' => "application/vnd.mif",
361
-		'daf' => "application/vnd.mobius.daf",
362
-		'dis' => "application/vnd.mobius.dis",
363
-		'mbk' => "application/vnd.mobius.mbk",
364
-		'mqy' => "application/vnd.mobius.mqy",
365
-		'msl' => "application/vnd.mobius.msl",
366
-		'plc' => "application/vnd.mobius.plc",
367
-		'txf' => "application/vnd.mobius.txf",
368
-		'mpn' => "application/vnd.mophun.application",
369
-		'mpc' => "application/vnd.mophun.certificate",
370
-		'xul' => "application/vnd.mozilla.xul+xml",
371
-		'cil' => "application/vnd.ms-artgalry",
372
-		'cab' => "application/vnd.ms-cab-compressed",
373
-		'xls' => "application/vnd.ms-excel",
374
-		'xlm' => "application/vnd.ms-excel",
375
-		'xla' => "application/vnd.ms-excel",
376
-		'xlc' => "application/vnd.ms-excel",
377
-		'xlt' => "application/vnd.ms-excel",
378
-		'xlw' => "application/vnd.ms-excel",
379
-		'xlam' => "application/vnd.ms-excel.addin.macroenabled.12",
380
-		'xlsb' => "application/vnd.ms-excel.sheet.binary.macroenabled.12",
381
-		'xlsm' => "application/vnd.ms-excel.sheet.macroenabled.12",
382
-		'xltm' => "application/vnd.ms-excel.template.macroenabled.12",
383
-		'eot' => "application/vnd.ms-fontobject",
384
-		'chm' => "application/vnd.ms-htmlhelp",
385
-		'ims' => "application/vnd.ms-ims",
386
-		'lrm' => "application/vnd.ms-lrm",
387
-		'thmx' => "application/vnd.ms-officetheme",
388
-		'cat' => "application/vnd.ms-pki.seccat",
389
-		'stl' => "application/vnd.ms-pki.stl",
390
-		'ppt' => "application/vnd.ms-powerpoint",
391
-		'pps' => "application/vnd.ms-powerpoint",
392
-		'pot' => "application/vnd.ms-powerpoint",
393
-		'ppam' => "application/vnd.ms-powerpoint.addin.macroenabled.12",
394
-		'pptm' => "application/vnd.ms-powerpoint.presentation.macroenabled.12",
395
-		'sldm' => "application/vnd.ms-powerpoint.slide.macroenabled.12",
396
-		'ppsm' => "application/vnd.ms-powerpoint.slideshow.macroenabled.12",
397
-		'potm' => "application/vnd.ms-powerpoint.template.macroenabled.12",
398
-		'mpp' => "application/vnd.ms-project",
399
-		'mpt' => "application/vnd.ms-project",
400
-		'docm' => "application/vnd.ms-word.document.macroenabled.12",
401
-		'dotm' => "application/vnd.ms-word.template.macroenabled.12",
402
-		'wps' => "application/vnd.ms-works",
403
-		'wks' => "application/vnd.ms-works",
404
-		'wcm' => "application/vnd.ms-works",
405
-		'wdb' => "application/vnd.ms-works",
406
-		'wpl' => "application/vnd.ms-wpl",
407
-		'xps' => "application/vnd.ms-xpsdocument",
408
-		'mseq' => "application/vnd.mseq",
409
-		'mus' => "application/vnd.musician",
410
-		'msty' => "application/vnd.muvee.style",
411
-		'taglet' => "application/vnd.mynfc",
412
-		'nlu' => "application/vnd.neurolanguage.nlu",
413
-		'ntf' => "application/vnd.nitf",
414
-		'nitf' => "application/vnd.nitf",
415
-		'nnd' => "application/vnd.noblenet-directory",
416
-		'nns' => "application/vnd.noblenet-sealer",
417
-		'nnw' => "application/vnd.noblenet-web",
418
-		'ngdat' => "application/vnd.nokia.n-gage.data",
419
-		'n-gage' => "application/vnd.nokia.n-gage.symbian.install",
420
-		'rpst' => "application/vnd.nokia.radio-preset",
421
-		'rpss' => "application/vnd.nokia.radio-presets",
422
-		'edm' => "application/vnd.novadigm.edm",
423
-		'edx' => "application/vnd.novadigm.edx",
424
-		'ext' => "application/vnd.novadigm.ext",
425
-		'odc' => "application/vnd.oasis.opendocument.chart",
426
-		'otc' => "application/vnd.oasis.opendocument.chart-template",
427
-		'odb' => "application/vnd.oasis.opendocument.database",
428
-		'odf' => "application/vnd.oasis.opendocument.formula",
429
-		'odft' => "application/vnd.oasis.opendocument.formula-template",
430
-		'odg' => "application/vnd.oasis.opendocument.graphics",
431
-		'otg' => "application/vnd.oasis.opendocument.graphics-template",
432
-		'odi' => "application/vnd.oasis.opendocument.image",
433
-		'oti' => "application/vnd.oasis.opendocument.image-template",
434
-		'odp' => "application/vnd.oasis.opendocument.presentation",
435
-		'otp' => "application/vnd.oasis.opendocument.presentation-template",
436
-		'ods' => "application/vnd.oasis.opendocument.spreadsheet",
437
-		'ots' => "application/vnd.oasis.opendocument.spreadsheet-template",
438
-		'odt' => "application/vnd.oasis.opendocument.text",
439
-		'odm' => "application/vnd.oasis.opendocument.text-master",
440
-		'ott' => "application/vnd.oasis.opendocument.text-template",
441
-		'oth' => "application/vnd.oasis.opendocument.text-web",
442
-		'xo' => "application/vnd.olpc-sugar",
443
-		'dd2' => "application/vnd.oma.dd2+xml",
444
-		'oxt' => "application/vnd.openofficeorg.extension",
445
-		'pptx' => "application/vnd.openxmlformats-officedocument.presentationml.presentation",
446
-		'sldx' => "application/vnd.openxmlformats-officedocument.presentationml.slide",
447
-		'ppsx' => "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
448
-		'potx' => "application/vnd.openxmlformats-officedocument.presentationml.template",
449
-		'xlsx' => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
450
-		'xltx' => "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
451
-		'docx' => "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
452
-		'dotx' => "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
453
-		'mgp' => "application/vnd.osgeo.mapguide.package",
454
-		'dp' => "application/vnd.osgi.dp",
455
-		'esa' => "application/vnd.osgi.subsystem",
456
-		'pdb' => "application/vnd.palm",
457
-		'pqa' => "application/vnd.palm",
458
-		'oprc' => "application/vnd.palm",
459
-		'paw' => "application/vnd.pawaafile",
460
-		'str' => "application/vnd.pg.format",
461
-		'ei6' => "application/vnd.pg.osasli",
462
-		'efif' => "application/vnd.picsel",
463
-		'wg' => "application/vnd.pmi.widget",
464
-		'plf' => "application/vnd.pocketlearn",
465
-		'pbd' => "application/vnd.powerbuilder6",
466
-		'box' => "application/vnd.previewsystems.box",
467
-		'mgz' => "application/vnd.proteus.magazine",
468
-		'qps' => "application/vnd.publishare-delta-tree",
469
-		'ptid' => "application/vnd.pvi.ptid1",
470
-		'qxd' => "application/vnd.quark.quarkxpress",
471
-		'qxt' => "application/vnd.quark.quarkxpress",
472
-		'qwd' => "application/vnd.quark.quarkxpress",
473
-		'qwt' => "application/vnd.quark.quarkxpress",
474
-		'qxl' => "application/vnd.quark.quarkxpress",
475
-		'qxb' => "application/vnd.quark.quarkxpress",
476
-		'bed' => "application/vnd.realvnc.bed",
477
-		'mxl' => "application/vnd.recordare.musicxml",
478
-		'musicxml' => "application/vnd.recordare.musicxml+xml",
479
-		'cryptonote' => "application/vnd.rig.cryptonote",
480
-		'cod' => "application/vnd.rim.cod",
481
-		'rm' => "application/vnd.rn-realmedia",
482
-		'rmvb' => "application/vnd.rn-realmedia-vbr",
483
-		'link66' => "application/vnd.route66.link66+xml",
484
-		'st' => "application/vnd.sailingtracker.track",
485
-		'see' => "application/vnd.seemail",
486
-		'sema' => "application/vnd.sema",
487
-		'semd' => "application/vnd.semd",
488
-		'semf' => "application/vnd.semf",
489
-		'ifm' => "application/vnd.shana.informed.formdata",
490
-		'itp' => "application/vnd.shana.informed.formtemplate",
491
-		'iif' => "application/vnd.shana.informed.interchange",
492
-		'ipk' => "application/vnd.shana.informed.package",
493
-		'twd' => "application/vnd.simtech-mindmapper",
494
-		'twds' => "application/vnd.simtech-mindmapper",
495
-		'mmf' => "application/vnd.smaf",
496
-		'teacher' => "application/vnd.smart.teacher",
497
-		'sdkm' => "application/vnd.solent.sdkm+xml",
498
-		'sdkd' => "application/vnd.solent.sdkm+xml",
499
-		'dxp' => "application/vnd.spotfire.dxp",
500
-		'sfs' => "application/vnd.spotfire.sfs",
501
-		'sdc' => "application/vnd.stardivision.calc",
502
-		'sda' => "application/vnd.stardivision.draw",
503
-		'sdd' => "application/vnd.stardivision.impress",
504
-		'smf' => "application/vnd.stardivision.math",
505
-		'sdw' => "application/vnd.stardivision.writer",
506
-		'vor' => "application/vnd.stardivision.writer",
507
-		'sgl' => "application/vnd.stardivision.writer-global",
508
-		'smzip' => "application/vnd.stepmania.package",
509
-		'sm' => "application/vnd.stepmania.stepchart",
510
-		'sxc' => "application/vnd.sun.xml.calc",
511
-		'stc' => "application/vnd.sun.xml.calc.template",
512
-		'sxd' => "application/vnd.sun.xml.draw",
513
-		'std' => "application/vnd.sun.xml.draw.template",
514
-		'sxi' => "application/vnd.sun.xml.impress",
515
-		'sti' => "application/vnd.sun.xml.impress.template",
516
-		'sxm' => "application/vnd.sun.xml.math",
517
-		'sxw' => "application/vnd.sun.xml.writer",
518
-		'sxg' => "application/vnd.sun.xml.writer.global",
519
-		'stw' => "application/vnd.sun.xml.writer.template",
520
-		'sus' => "application/vnd.sus-calendar",
521
-		'susp' => "application/vnd.sus-calendar",
522
-		'svd' => "application/vnd.svd",
523
-		'sis' => "application/vnd.symbian.install",
524
-		'sisx' => "application/vnd.symbian.install",
525
-		'xsm' => "application/vnd.syncml+xml",
526
-		'bdm' => "application/vnd.syncml.dm+wbxml",
527
-		'xdm' => "application/vnd.syncml.dm+xml",
528
-		'tao' => "application/vnd.tao.intent-module-archive",
529
-		'pcap' => "application/vnd.tcpdump.pcap",
530
-		'cap' => "application/vnd.tcpdump.pcap",
531
-		'dmp' => "application/vnd.tcpdump.pcap",
532
-		'tmo' => "application/vnd.tmobile-livetv",
533
-		'tpt' => "application/vnd.trid.tpt",
534
-		'mxs' => "application/vnd.triscape.mxs",
535
-		'tra' => "application/vnd.trueapp",
536
-		'ufd' => "application/vnd.ufdl",
537
-		'ufdl' => "application/vnd.ufdl",
538
-		'utz' => "application/vnd.uiq.theme",
539
-		'umj' => "application/vnd.umajin",
540
-		'unityweb' => "application/vnd.unity",
541
-		'uoml' => "application/vnd.uoml+xml",
542
-		'vcx' => "application/vnd.vcx",
543
-		'vsd' => "application/vnd.visio",
544
-		'vst' => "application/vnd.visio",
545
-		'vss' => "application/vnd.visio",
546
-		'vsw' => "application/vnd.visio",
547
-		'vis' => "application/vnd.visionary",
548
-		'vsf' => "application/vnd.vsf",
549
-		'wbxml' => "application/vnd.wap.wbxml",
550
-		'wmlc' => "application/vnd.wap.wmlc",
551
-		'wmlsc' => "application/vnd.wap.wmlscriptc",
552
-		'wtb' => "application/vnd.webturbo",
553
-		'nbp' => "application/vnd.wolfram.player",
554
-		'wpd' => "application/vnd.wordperfect",
555
-		'wqd' => "application/vnd.wqd",
556
-		'stf' => "application/vnd.wt.stf",
557
-		'xar' => "application/vnd.xara",
558
-		'xfdl' => "application/vnd.xfdl",
559
-		'hvd' => "application/vnd.yamaha.hv-dic",
560
-		'hvs' => "application/vnd.yamaha.hv-script",
561
-		'hvp' => "application/vnd.yamaha.hv-voice",
562
-		'osf' => "application/vnd.yamaha.openscoreformat",
563
-		'osfpvg' => "application/vnd.yamaha.openscoreformat.osfpvg+xml",
564
-		'saf' => "application/vnd.yamaha.smaf-audio",
565
-		'spf' => "application/vnd.yamaha.smaf-phrase",
566
-		'cmp' => "application/vnd.yellowriver-custom-menu",
567
-		'zir' => "application/vnd.zul",
568
-		'zirz' => "application/vnd.zul",
569
-		'zaz' => "application/vnd.zzazz.deck+xml",
570
-		'vxml' => "application/voicexml+xml",
571
-		'wgt' => "application/widget",
572
-		'hlp' => "application/winhlp",
573
-		'wsdl' => "application/wsdl+xml",
574
-		'wspolicy' => "application/wspolicy+xml",
575
-		'7z' => "application/x-7z-compressed",
576
-		'abw' => "application/x-abiword",
577
-		'ace' => "application/x-ace-compressed",
578
-		'dmg' => "application/x-apple-diskimage",
579
-		'aab' => "application/x-authorware-bin",
580
-		'x32' => "application/x-authorware-bin",
581
-		'u32' => "application/x-authorware-bin",
582
-		'vox' => "application/x-authorware-bin",
583
-		'aam' => "application/x-authorware-map",
584
-		'aas' => "application/x-authorware-seg",
585
-		'bcpio' => "application/x-bcpio",
586
-		'torrent' => "application/x-bittorrent",
587
-		'blb' => "application/x-blorb",
588
-		'blorb' => "application/x-blorb",
589
-		'bz' => "application/x-bzip",
590
-		'bz2' => "application/x-bzip2",
591
-		'boz' => "application/x-bzip2",
592
-		'cbr' => "application/x-cbr",
593
-		'cba' => "application/x-cbr",
594
-		'cbt' => "application/x-cbr",
595
-		'cbz' => "application/x-cbr",
596
-		'cb7' => "application/x-cbr",
597
-		'vcd' => "application/x-cdlink",
598
-		'cfs' => "application/x-cfs-compressed",
599
-		'chat' => "application/x-chat",
600
-		'pgn' => "application/x-chess-pgn",
601
-		'nsc' => "application/x-conference",
602
-		'cpio' => "application/x-cpio",
603
-		'csh' => "application/x-csh",
604
-		'deb' => "application/x-debian-package",
605
-		'udeb' => "application/x-debian-package",
606
-		'dgc' => "application/x-dgc-compressed",
607
-		'dir' => "application/x-director",
608
-		'dcr' => "application/x-director",
609
-		'dxr' => "application/x-director",
610
-		'cst' => "application/x-director",
611
-		'cct' => "application/x-director",
612
-		'cxt' => "application/x-director",
613
-		'w3d' => "application/x-director",
614
-		'fgd' => "application/x-director",
615
-		'swa' => "application/x-director",
616
-		'wad' => "application/x-doom",
617
-		'ncx' => "application/x-dtbncx+xml",
618
-		'dtb' => "application/x-dtbook+xml",
619
-		'res' => "application/x-dtbresource+xml",
620
-		'dvi' => "application/x-dvi",
621
-		'evy' => "application/x-envoy",
622
-		'eva' => "application/x-eva",
623
-		'bdf' => "application/x-font-bdf",
624
-		'gsf' => "application/x-font-ghostscript",
625
-		'psf' => "application/x-font-linux-psf",
626
-		'pcf' => "application/x-font-pcf",
627
-		'snf' => "application/x-font-snf",
628
-		'pfa' => "application/x-font-type1",
629
-		'pfb' => "application/x-font-type1",
630
-		'pfm' => "application/x-font-type1",
631
-		'afm' => "application/x-font-type1",
632
-		'arc' => "application/x-freearc",
633
-		'spl' => "application/x-futuresplash",
634
-		'gca' => "application/x-gca-compressed",
635
-		'ulx' => "application/x-glulx",
636
-		'gnumeric' => "application/x-gnumeric",
637
-		'gramps' => "application/x-gramps-xml",
638
-		'gtar' => "application/x-gtar",
639
-		'hdf' => "application/x-hdf",
640
-		'install' => "application/x-install-instructions",
641
-		'iso' => "application/x-iso9660-image",
642
-		'jnlp' => "application/x-java-jnlp-file",
643
-		'latex' => "application/x-latex",
644
-		'lzh' => "application/x-lzh-compressed",
645
-		'lha' => "application/x-lzh-compressed",
646
-		'mie' => "application/x-mie",
647
-		'prc' => "application/x-mobipocket-ebook",
648
-		'mobi' => "application/x-mobipocket-ebook",
649
-		'application' => "application/x-ms-application",
650
-		'lnk' => "application/x-ms-shortcut",
651
-		'wmd' => "application/x-ms-wmd",
652
-		'wmz' => "application/x-msmetafile",
653
-		'xbap' => "application/x-ms-xbap",
654
-		'mdb' => "application/x-msaccess",
655
-		'obd' => "application/x-msbinder",
656
-		'crd' => "application/x-mscardfile",
657
-		'clp' => "application/x-msclip",
658
-		'exe' => "application/x-msdownload",
659
-		'dll' => "application/x-msdownload",
660
-		'com' => "application/x-msdownload",
661
-		'bat' => "application/x-msdownload",
662
-		'msi' => "application/x-msdownload",
663
-		'mvb' => "application/x-msmediaview",
664
-		'm13' => "application/x-msmediaview",
665
-		'm14' => "application/x-msmediaview",
666
-		'wmf' => "application/x-msmetafile",
667
-		'emf' => "application/x-msmetafile",
668
-		'emz' => "application/x-msmetafile",
669
-		'mny' => "application/x-msmoney",
670
-		'pub' => "application/x-mspublisher",
671
-		'scd' => "application/x-msschedule",
672
-		'trm' => "application/x-msterminal",
673
-		'wri' => "application/x-mswrite",
674
-		'nc' => "application/x-netcdf",
675
-		'cdf' => "application/x-netcdf",
676
-		'nzb' => "application/x-nzb",
677
-		'p12' => "application/x-pkcs12",
678
-		'pfx' => "application/x-pkcs12",
679
-		'p7b' => "application/x-pkcs7-certificates",
680
-		'spc' => "application/x-pkcs7-certificates",
681
-		'p7r' => "application/x-pkcs7-certreqresp",
682
-		'rar' => "application/x-rar-compressed",
683
-		'ris' => "application/x-research-info-systems",
684
-		'sh' => "application/x-sh",
685
-		'shar' => "application/x-shar",
686
-		'swf' => "application/x-shockwave-flash",
687
-		'xap' => "application/x-silverlight-app",
688
-		'sql' => "application/x-sql",
689
-		'sit' => "application/x-stuffit",
690
-		'sitx' => "application/x-stuffitx",
691
-		'srt' => "application/x-subrip",
692
-		'sv4cpio' => "application/x-sv4cpio",
693
-		'sv4crc' => "application/x-sv4crc",
694
-		't3' => "application/x-t3vm-image",
695
-		'gam' => "application/x-tads",
696
-		'tar' => "application/x-tar",
697
-		'tcl' => "application/x-tcl",
698
-		'tex' => "application/x-tex",
699
-		'tfm' => "application/x-tex-tfm",
700
-		'texinfo' => "application/x-texinfo",
701
-		'texi' => "application/x-texinfo",
702
-		'obj' => "application/x-tgif",
703
-		'ustar' => "application/x-ustar",
704
-		'src' => "application/x-wais-source",
705
-		'der' => "application/x-x509-ca-cert",
706
-		'crt' => "application/x-x509-ca-cert",
707
-		'fig' => "application/x-xfig",
708
-		'xlf' => "application/x-xliff+xml",
709
-		'xpi' => "application/x-xpinstall",
710
-		'xz' => "application/x-xz",
711
-		'z1' => "application/x-zmachine",
712
-		'z2' => "application/x-zmachine",
713
-		'z3' => "application/x-zmachine",
714
-		'z4' => "application/x-zmachine",
715
-		'z5' => "application/x-zmachine",
716
-		'z6' => "application/x-zmachine",
717
-		'z7' => "application/x-zmachine",
718
-		'z8' => "application/x-zmachine",
719
-		'xaml' => "application/xaml+xml",
720
-		'xdf' => "application/xcap-diff+xml",
721
-		'xenc' => "application/xenc+xml",
722
-		'xhtml' => "application/xhtml+xml",
723
-		'xht' => "application/xhtml+xml",
724
-		'xml' => "application/xml",
725
-		'xsl' => "application/xml",
726
-		'dtd' => "application/xml-dtd",
727
-		'xop' => "application/xop+xml",
728
-		'xpl' => "application/xproc+xml",
729
-		'xslt' => "application/xslt+xml",
730
-		'xspf' => "application/xspf+xml",
731
-		'mxml' => "application/xv+xml",
732
-		'xhvml' => "application/xv+xml",
733
-		'xvml' => "application/xv+xml",
734
-		'xvm' => "application/xv+xml",
735
-		'yang' => "application/yang",
736
-		'yin' => "application/yin+xml",
737
-		'zip' => "application/zip",
738
-		'adp' => "audio/adpcm",
739
-		'au' => "audio/basic",
740
-		'snd' => "audio/basic",
741
-		'mid' => "audio/midi",
742
-		'midi' => "audio/midi",
743
-		'kar' => "audio/midi",
744
-		'rmi' => "audio/midi",
745
-		'm4a' => "audio/mp4",
746
-		'mp4a' => "audio/mp4",
747
-		'mpga' => "audio/mpeg",
748
-		'mp2' => "audio/mpeg",
749
-		'mp2a' => "audio/mpeg",
750
-		'mp3' => "audio/mpeg",
751
-		'm2a' => "audio/mpeg",
752
-		'm3a' => "audio/mpeg",
753
-		'oga' => "audio/ogg",
754
-		'ogg' => "audio/ogg",
755
-		'spx' => "audio/ogg",
756
-		'opus' => "audio/ogg",
757
-		's3m' => "audio/s3m",
758
-		'sil' => "audio/silk",
759
-		'uva' => "audio/vnd.dece.audio",
760
-		'uvva' => "audio/vnd.dece.audio",
761
-		'eol' => "audio/vnd.digital-winds",
762
-		'dra' => "audio/vnd.dra",
763
-		'dts' => "audio/vnd.dts",
764
-		'dtshd' => "audio/vnd.dts.hd",
765
-		'lvp' => "audio/vnd.lucent.voice",
766
-		'pya' => "audio/vnd.ms-playready.media.pya",
767
-		'ecelp4800' => "audio/vnd.nuera.ecelp4800",
768
-		'ecelp7470' => "audio/vnd.nuera.ecelp7470",
769
-		'ecelp9600' => "audio/vnd.nuera.ecelp9600",
770
-		'rip' => "audio/vnd.rip",
771
-		'weba' => "audio/webm",
772
-		'aac' => "audio/x-aac",
773
-		'aif' => "audio/x-aiff",
774
-		'aiff' => "audio/x-aiff",
775
-		'aifc' => "audio/x-aiff",
776
-		'caf' => "audio/x-caf",
777
-		'flac' => "audio/x-flac",
778
-		'mka' => "audio/x-matroska",
779
-		'm3u' => "audio/x-mpegurl",
780
-		'wax' => "audio/x-ms-wax",
781
-		'wma' => "audio/x-ms-wma",
782
-		'ram' => "audio/x-pn-realaudio",
783
-		'ra' => "audio/x-pn-realaudio",
784
-		'rmp' => "audio/x-pn-realaudio-plugin",
785
-		'wav' => "audio/x-wav",
786
-		'xm' => "audio/xm",
787
-		'cdx' => "chemical/x-cdx",
788
-		'cif' => "chemical/x-cif",
789
-		'cmdf' => "chemical/x-cmdf",
790
-		'cml' => "chemical/x-cml",
791
-		'csml' => "chemical/x-csml",
792
-		'xyz' => "chemical/x-xyz",
793
-		'ttc' => "font/collection",
794
-		'otf' => "font/otf",
795
-		'ttf' => "font/ttf",
796
-		'woff' => "font/woff",
797
-		'woff2' => "font/woff2",
798
-		'bmp' => "image/bmp",
799
-		'cgm' => "image/cgm",
800
-		'g3' => "image/g3fax",
801
-		'gif' => "image/gif",
802
-		'ief' => "image/ief",
803
-		'jpeg' => "image/jpeg",
804
-		'jpg' => "image/jpeg",
805
-		'jpe' => "image/jpeg",
806
-		'ktx' => "image/ktx",
807
-		'png' => "image/png",
808
-		'btif' => "image/prs.btif",
809
-		'sgi' => "image/sgi",
810
-		'svg' => "image/svg+xml",
811
-		'svgz' => "image/svg+xml",
812
-		'tiff' => "image/tiff",
813
-		'tif' => "image/tiff",
814
-		'psd' => "image/vnd.adobe.photoshop",
815
-		'uvi' => "image/vnd.dece.graphic",
816
-		'uvvi' => "image/vnd.dece.graphic",
817
-		'uvg' => "image/vnd.dece.graphic",
818
-		'uvvg' => "image/vnd.dece.graphic",
819
-		'djvu' => "image/vnd.djvu",
820
-		'djv' => "image/vnd.djvu",
821
-		'sub' => "text/vnd.dvb.subtitle",
822
-		'dwg' => "image/vnd.dwg",
823
-		'dxf' => "image/vnd.dxf",
824
-		'fbs' => "image/vnd.fastbidsheet",
825
-		'fpx' => "image/vnd.fpx",
826
-		'fst' => "image/vnd.fst",
827
-		'mmr' => "image/vnd.fujixerox.edmics-mmr",
828
-		'rlc' => "image/vnd.fujixerox.edmics-rlc",
829
-		'mdi' => "image/vnd.ms-modi",
830
-		'wdp' => "image/vnd.ms-photo",
831
-		'npx' => "image/vnd.net-fpx",
832
-		'wbmp' => "image/vnd.wap.wbmp",
833
-		'xif' => "image/vnd.xiff",
834
-		'webp' => "image/webp",
835
-		'3ds' => "image/x-3ds",
836
-		'ras' => "image/x-cmu-raster",
837
-		'cmx' => "image/x-cmx",
838
-		'fh' => "image/x-freehand",
839
-		'fhc' => "image/x-freehand",
840
-		'fh4' => "image/x-freehand",
841
-		'fh5' => "image/x-freehand",
842
-		'fh7' => "image/x-freehand",
843
-		'ico' => "image/x-icon",
844
-		'sid' => "image/x-mrsid-image",
845
-		'pcx' => "image/x-pcx",
846
-		'pic' => "image/x-pict",
847
-		'pct' => "image/x-pict",
848
-		'pnm' => "image/x-portable-anymap",
849
-		'pbm' => "image/x-portable-bitmap",
850
-		'pgm' => "image/x-portable-graymap",
851
-		'ppm' => "image/x-portable-pixmap",
852
-		'rgb' => "image/x-rgb",
853
-		'tga' => "image/x-tga",
854
-		'xbm' => "image/x-xbitmap",
855
-		'xpm' => "image/x-xpixmap",
856
-		'xwd' => "image/x-xwindowdump",
857
-		'eml' => "message/rfc822",
858
-		'mime' => "message/rfc822",
859
-		'igs' => "model/iges",
860
-		'iges' => "model/iges",
861
-		'msh' => "model/mesh",
862
-		'mesh' => "model/mesh",
863
-		'silo' => "model/mesh",
864
-		'dae' => "model/vnd.collada+xml",
865
-		'dwf' => "model/vnd.dwf",
866
-		'gdl' => "model/vnd.gdl",
867
-		'gtw' => "model/vnd.gtw",
868
-		'mts' => "model/vnd.mts",
869
-		'vtu' => "model/vnd.vtu",
870
-		'wrl' => "model/vrml",
871
-		'vrml' => "model/vrml",
872
-		'x3db' => "model/x3d+binary",
873
-		'x3dbz' => "model/x3d+binary",
874
-		'x3dv' => "model/x3d+vrml",
875
-		'x3dvz' => "model/x3d+vrml",
876
-		'x3d' => "model/x3d+xml",
877
-		'x3dz' => "model/x3d+xml",
878
-		'appcache' => "text/cache-manifest",
879
-		'ics' => "text/calendar",
880
-		'ifb' => "text/calendar",
881
-		'css' => "text/css",
882
-		'csv' => "text/csv",
883
-		'html' => "text/html",
884
-		'htm' => "text/html",
885
-		'n3' => "text/n3",
886
-		'txt' => "text/plain",
887
-		'text' => "text/plain",
888
-		'conf' => "text/plain",
889
-		'def' => "text/plain",
890
-		'list' => "text/plain",
891
-		'log' => "text/plain",
892
-		'in' => "text/plain",
893
-		'dsc' => "text/prs.lines.tag",
894
-		'rtx' => "text/richtext",
895
-		'sgml' => "text/sgml",
896
-		'sgm' => "text/sgml",
897
-		'tsv' => "text/tab-separated-values",
898
-		't' => "text/troff",
899
-		'tr' => "text/troff",
900
-		'roff' => "text/troff",
901
-		'man' => "text/troff",
902
-		'me' => "text/troff",
903
-		'ms' => "text/troff",
904
-		'ttl' => "text/turtle",
905
-		'uri' => "text/uri-list",
906
-		'uris' => "text/uri-list",
907
-		'urls' => "text/uri-list",
908
-		'vcard' => "text/vcard",
909
-		'curl' => "text/vnd.curl",
910
-		'dcurl' => "text/vnd.curl.dcurl",
911
-		'mcurl' => "text/vnd.curl.mcurl",
912
-		'scurl' => "text/vnd.curl.scurl",
913
-		'fly' => "text/vnd.fly",
914
-		'flx' => "text/vnd.fmi.flexstor",
915
-		'gv' => "text/vnd.graphviz",
916
-		'3dml' => "text/vnd.in3d.3dml",
917
-		'spot' => "text/vnd.in3d.spot",
918
-		'jad' => "text/vnd.sun.j2me.app-descriptor",
919
-		'wml' => "text/vnd.wap.wml",
920
-		'wmls' => "text/vnd.wap.wmlscript",
921
-		's' => "text/x-asm",
922
-		'asm' => "text/x-asm",
923
-		'c' => "text/x-c",
924
-		'cc' => "text/x-c",
925
-		'cxx' => "text/x-c",
926
-		'cpp' => "text/x-c",
927
-		'h' => "text/x-c",
928
-		'hh' => "text/x-c",
929
-		'dic' => "text/x-c",
930
-		'f' => "text/x-fortran",
931
-		'for' => "text/x-fortran",
932
-		'f77' => "text/x-fortran",
933
-		'f90' => "text/x-fortran",
934
-		'java' => "text/x-java-source",
935
-		'nfo' => "text/x-nfo",
936
-		'opml' => "text/x-opml",
937
-		'p' => "text/x-pascal",
938
-		'pas' => "text/x-pascal",
939
-		'etx' => "text/x-setext",
940
-		'sfv' => "text/x-sfv",
941
-		'uu' => "text/x-uuencode",
942
-		'vcs' => "text/x-vcalendar",
943
-		'vcf' => "text/x-vcard",
944
-		'3gp' => "video/3gpp",
945
-		'3g2' => "video/3gpp2",
946
-		'h261' => "video/h261",
947
-		'h263' => "video/h263",
948
-		'h264' => "video/h264",
949
-		'jpgv' => "video/jpeg",
950
-		'jpm' => "video/jpm",
951
-		'jpgm' => "video/jpm",
952
-		'mj2' => "video/mj2",
953
-		'mjp2' => "video/mj2",
954
-		'mp4' => "video/mp4",
955
-		'mp4v' => "video/mp4",
956
-		'mpg4' => "video/mp4",
957
-		'mpeg' => "video/mpeg",
958
-		'mpg' => "video/mpeg",
959
-		'mpe' => "video/mpeg",
960
-		'm1v' => "video/mpeg",
961
-		'm2v' => "video/mpeg",
962
-		'ogv' => "video/ogg",
963
-		'qt' => "video/quicktime",
964
-		'mov' => "video/quicktime",
965
-		'uvh' => "video/vnd.dece.hd",
966
-		'uvvh' => "video/vnd.dece.hd",
967
-		'uvm' => "video/vnd.dece.mobile",
968
-		'uvvm' => "video/vnd.dece.mobile",
969
-		'uvp' => "video/vnd.dece.pd",
970
-		'uvvp' => "video/vnd.dece.pd",
971
-		'uvs' => "video/vnd.dece.sd",
972
-		'uvvs' => "video/vnd.dece.sd",
973
-		'uvv' => "video/vnd.dece.video",
974
-		'uvvv' => "video/vnd.dece.video",
975
-		'dvb' => "video/vnd.dvb.file",
976
-		'fvt' => "video/vnd.fvt",
977
-		'mxu' => "video/vnd.mpegurl",
978
-		'm4u' => "video/vnd.mpegurl",
979
-		'pyv' => "video/vnd.ms-playready.media.pyv",
980
-		'uvu' => "video/vnd.uvvu.mp4",
981
-		'uvvu' => "video/vnd.uvvu.mp4",
982
-		'viv' => "video/vnd.vivo",
983
-		'webm' => "video/webm",
984
-		'f4v' => "video/x-f4v",
985
-		'fli' => "video/x-fli",
986
-		'flv' => "video/x-flv",
987
-		'm4v' => "video/x-m4v",
988
-		'mkv' => "video/x-matroska",
989
-		'mk3d' => "video/x-matroska",
990
-		'mks' => "video/x-matroska",
991
-		'mng' => "video/x-mng",
992
-		'asf' => "video/x-ms-asf",
993
-		'asx' => "video/x-ms-asf",
994
-		'vob' => "video/x-ms-vob",
995
-		'wm' => "video/x-ms-wm",
996
-		'wmv' => "video/x-ms-wmv",
997
-		'wmx' => "video/x-ms-wmx",
998
-		'wvx' => "video/x-ms-wvx",
999
-		'avi' => "video/x-msvideo",
1000
-		'movie' => "video/x-sgi-movie",
1001
-		'smv' => "video/x-smv",
1002
-		'ice' => "x-conference/x-cooltalk"
1003
-	];
15
+    /**
16
+     * @var array
17
+     */
18
+    public const TYPES = [
19
+        'ez' => "application/andrew-inset",
20
+        'aw' => "application/applixware",
21
+        'atom' => "application/atom+xml",
22
+        'atomcat' => "application/atomcat+xml",
23
+        'atomsvc' => "application/atomsvc+xml",
24
+        'ccxml' => "application/ccxml+xml",
25
+        'cdmia' => "application/cdmi-capability",
26
+        'cdmic' => "application/cdmi-container",
27
+        'cdmid' => "application/cdmi-domain",
28
+        'cdmio' => "application/cdmi-object",
29
+        'cdmiq' => "application/cdmi-queue",
30
+        'cu' => "application/cu-seeme",
31
+        'davmount' => "application/davmount+xml",
32
+        'dbk' => "application/docbook+xml",
33
+        'dssc' => "application/dssc+der",
34
+        'xdssc' => "application/dssc+xml",
35
+        'ecma' => "application/ecmascript",
36
+        'emma' => "application/emma+xml",
37
+        'epub' => "application/epub+zip",
38
+        'exi' => "application/exi",
39
+        'pfr' => "application/font-tdpfr",
40
+        'gml' => "application/gml+xml",
41
+        'gpx' => "application/gpx+xml",
42
+        'gxf' => "application/gxf",
43
+        'stk' => "application/hyperstudio",
44
+        'ink' => "application/inkml+xml",
45
+        'inkml' => "application/inkml+xml",
46
+        'ipfix' => "application/ipfix",
47
+        'jar' => "application/java-archive",
48
+        'ser' => "application/java-serialized-object",
49
+        'class' => "application/java-vm",
50
+        'js' => "application/javascript",
51
+        'json' => "application/json",
52
+        'jsonml' => "application/jsonml+json",
53
+        'lostxml' => "application/lost+xml",
54
+        'hqx' => "application/mac-binhex40",
55
+        'cpt' => "application/mac-compactpro",
56
+        'mads' => "application/mads+xml",
57
+        'mrc' => "application/marc",
58
+        'mrcx' => "application/marcxml+xml",
59
+        'ma' => "application/mathematica",
60
+        'nb' => "application/mathematica",
61
+        'mb' => "application/mathematica",
62
+        'mathml' => "application/mathml+xml",
63
+        'mbox' => "application/mbox",
64
+        'mscml' => "application/mediaservercontrol+xml",
65
+        'metalink' => "application/metalink+xml",
66
+        'meta4' => "application/metalink4+xml",
67
+        'mets' => "application/mets+xml",
68
+        'mods' => "application/mods+xml",
69
+        'm21' => "application/mp21",
70
+        'mp21' => "application/mp21",
71
+        'mp4s' => "application/mp4",
72
+        'doc' => "application/msword",
73
+        'dot' => "application/msword",
74
+        'mxf' => "application/mxf",
75
+        'bin' => "application/octet-stream",
76
+        'dms' => "application/octet-stream",
77
+        'lrf' => "application/octet-stream",
78
+        'mar' => "application/octet-stream",
79
+        'so' => "application/octet-stream",
80
+        'dist' => "application/octet-stream",
81
+        'distz' => "application/octet-stream",
82
+        'pkg' => "application/octet-stream",
83
+        'bpk' => "application/octet-stream",
84
+        'dump' => "application/octet-stream",
85
+        'elc' => "application/octet-stream",
86
+        'deploy' => "application/octet-stream",
87
+        'oda' => "application/oda",
88
+        'opf' => "application/oebps-package+xml",
89
+        'ogx' => "application/ogg",
90
+        'omdoc' => "application/omdoc+xml",
91
+        'onetoc' => "application/onenote",
92
+        'onetoc2' => "application/onenote",
93
+        'onetmp' => "application/onenote",
94
+        'onepkg' => "application/onenote",
95
+        'oxps' => "application/oxps",
96
+        'xer' => "application/patch-ops-error+xml",
97
+        'pdf' => "application/pdf",
98
+        'pgp' => "application/pgp-encrypted",
99
+        'asc' => "application/pgp-signature",
100
+        'sig' => "application/pgp-signature",
101
+        'prf' => "application/pics-rules",
102
+        'p10' => "application/pkcs10",
103
+        'p7m' => "application/pkcs7-mime",
104
+        'p7c' => "application/pkcs7-mime",
105
+        'p7s' => "application/pkcs7-signature",
106
+        'p8' => "application/pkcs8",
107
+        'ac' => "application/pkix-attr-cert",
108
+        'cer' => "application/pkix-cert",
109
+        'crl' => "application/pkix-crl",
110
+        'pkipath' => "application/pkix-pkipath",
111
+        'pki' => "application/pkixcmp",
112
+        'pls' => "application/pls+xml",
113
+        'ai' => "application/postscript",
114
+        'eps' => "application/postscript",
115
+        'ps' => "application/postscript",
116
+        'cww' => "application/prs.cww",
117
+        'pskcxml' => "application/pskc+xml",
118
+        'rdf' => "application/rdf+xml",
119
+        'rif' => "application/reginfo+xml",
120
+        'rnc' => "application/relax-ng-compact-syntax",
121
+        'rl' => "application/resource-lists+xml",
122
+        'rld' => "application/resource-lists-diff+xml",
123
+        'rs' => "application/rls-services+xml",
124
+        'gbr' => "application/rpki-ghostbusters",
125
+        'mft' => "application/rpki-manifest",
126
+        'roa' => "application/rpki-roa",
127
+        'rsd' => "application/rsd+xml",
128
+        'rss' => "application/rss+xml",
129
+        'rtf' => "application/rtf",
130
+        'sbml' => "application/sbml+xml",
131
+        'scq' => "application/scvp-cv-request",
132
+        'scs' => "application/scvp-cv-response",
133
+        'spq' => "application/scvp-vp-request",
134
+        'spp' => "application/scvp-vp-response",
135
+        'sdp' => "application/sdp",
136
+        'setpay' => "application/set-payment-initiation",
137
+        'setreg' => "application/set-registration-initiation",
138
+        'shf' => "application/shf+xml",
139
+        'smi' => "application/smil+xml",
140
+        'smil' => "application/smil+xml",
141
+        'rq' => "application/sparql-query",
142
+        'srx' => "application/sparql-results+xml",
143
+        'gram' => "application/srgs",
144
+        'grxml' => "application/srgs+xml",
145
+        'sru' => "application/sru+xml",
146
+        'ssdl' => "application/ssdl+xml",
147
+        'ssml' => "application/ssml+xml",
148
+        'tei' => "application/tei+xml",
149
+        'teicorpus' => "application/tei+xml",
150
+        'tfi' => "application/thraud+xml",
151
+        'tsd' => "application/timestamped-data",
152
+        'plb' => "application/vnd.3gpp.pic-bw-large",
153
+        'psb' => "application/vnd.3gpp.pic-bw-small",
154
+        'pvb' => "application/vnd.3gpp.pic-bw-var",
155
+        'tcap' => "application/vnd.3gpp2.tcap",
156
+        'pwn' => "application/vnd.3m.post-it-notes",
157
+        'aso' => "application/vnd.accpac.simply.aso",
158
+        'imp' => "application/vnd.accpac.simply.imp",
159
+        'acu' => "application/vnd.acucobol",
160
+        'atc' => "application/vnd.acucorp",
161
+        'acutc' => "application/vnd.acucorp",
162
+        'air' => "application/vnd.adobe.air-application-installer-package+zip",
163
+        'fcdt' => "application/vnd.adobe.formscentral.fcdt",
164
+        'fxp' => "application/vnd.adobe.fxp",
165
+        'fxpl' => "application/vnd.adobe.fxp",
166
+        'xdp' => "application/vnd.adobe.xdp+xml",
167
+        'xfdf' => "application/vnd.adobe.xfdf",
168
+        'ahead' => "application/vnd.ahead.space",
169
+        'azf' => "application/vnd.airzip.filesecure.azf",
170
+        'azs' => "application/vnd.airzip.filesecure.azs",
171
+        'azw' => "application/vnd.amazon.ebook",
172
+        'acc' => "application/vnd.americandynamics.acc",
173
+        'ami' => "application/vnd.amiga.ami",
174
+        'apk' => "application/vnd.android.package-archive",
175
+        'cii' => "application/vnd.anser-web-certificate-issue-initiation",
176
+        'fti' => "application/vnd.anser-web-funds-transfer-initiation",
177
+        'atx' => "application/vnd.antix.game-component",
178
+        'mpkg' => "application/vnd.apple.installer+xml",
179
+        'm3u8' => "application/vnd.apple.mpegurl",
180
+        'swi' => "application/vnd.aristanetworks.swi",
181
+        'iota' => "application/vnd.astraea-software.iota",
182
+        'aep' => "application/vnd.audiograph",
183
+        'mpm' => "application/vnd.blueice.multipass",
184
+        'bmi' => "application/vnd.bmi",
185
+        'rep' => "application/vnd.businessobjects",
186
+        'cdxml' => "application/vnd.chemdraw+xml",
187
+        'mmd' => "application/vnd.chipnuts.karaoke-mmd",
188
+        'cdy' => "application/vnd.cinderella",
189
+        'cla' => "application/vnd.claymore",
190
+        'rp9' => "application/vnd.cloanto.rp9",
191
+        'c4g' => "application/vnd.clonk.c4group",
192
+        'c4d' => "application/vnd.clonk.c4group",
193
+        'c4f' => "application/vnd.clonk.c4group",
194
+        'c4p' => "application/vnd.clonk.c4group",
195
+        'c4u' => "application/vnd.clonk.c4group",
196
+        'c11amc' => "application/vnd.cluetrust.cartomobile-config",
197
+        'c11amz' => "application/vnd.cluetrust.cartomobile-config-pkg",
198
+        'csp' => "application/vnd.commonspace",
199
+        'cdbcmsg' => "application/vnd.contact.cmsg",
200
+        'cmc' => "application/vnd.cosmocaller",
201
+        'clkx' => "application/vnd.crick.clicker",
202
+        'clkk' => "application/vnd.crick.clicker.keyboard",
203
+        'clkp' => "application/vnd.crick.clicker.palette",
204
+        'clkt' => "application/vnd.crick.clicker.template",
205
+        'clkw' => "application/vnd.crick.clicker.wordbank",
206
+        'wbs' => "application/vnd.criticaltools.wbs+xml",
207
+        'pml' => "application/vnd.ctc-posml",
208
+        'ppd' => "application/vnd.cups-ppd",
209
+        'car' => "application/vnd.curl.car",
210
+        'pcurl' => "application/vnd.curl.pcurl",
211
+        'dart' => "application/vnd.dart",
212
+        'rdz' => "application/vnd.data-vision.rdz",
213
+        'uvf' => "application/vnd.dece.data",
214
+        'uvvf' => "application/vnd.dece.data",
215
+        'uvd' => "application/vnd.dece.data",
216
+        'uvvd' => "application/vnd.dece.data",
217
+        'uvt' => "application/vnd.dece.ttml+xml",
218
+        'uvvt' => "application/vnd.dece.ttml+xml",
219
+        'uvx' => "application/vnd.dece.unspecified",
220
+        'uvvx' => "application/vnd.dece.unspecified",
221
+        'uvz' => "application/vnd.dece.zip",
222
+        'uvvz' => "application/vnd.dece.zip",
223
+        'fe_launch' => "application/vnd.denovo.fcselayout-link",
224
+        'dna' => "application/vnd.dna",
225
+        'mlp' => "application/vnd.dolby.mlp",
226
+        'dpg' => "application/vnd.dpgraph",
227
+        'dfac' => "application/vnd.dreamfactory",
228
+        'kpxx' => "application/vnd.ds-keypoint",
229
+        'ait' => "application/vnd.dvb.ait",
230
+        'svc' => "application/vnd.dvb.service",
231
+        'geo' => "application/vnd.dynageo",
232
+        'mag' => "application/vnd.ecowin.chart",
233
+        'nml' => "application/vnd.enliven",
234
+        'esf' => "application/vnd.epson.esf",
235
+        'msf' => "application/vnd.epson.msf",
236
+        'qam' => "application/vnd.epson.quickanime",
237
+        'slt' => "application/vnd.epson.salt",
238
+        'ssf' => "application/vnd.epson.ssf",
239
+        'es3' => "application/vnd.eszigno3+xml",
240
+        'et3' => "application/vnd.eszigno3+xml",
241
+        'ez2' => "application/vnd.ezpix-album",
242
+        'ez3' => "application/vnd.ezpix-package",
243
+        'fdf' => "application/vnd.fdf",
244
+        'mseed' => "application/vnd.fdsn.mseed",
245
+        'seed' => "application/vnd.fdsn.seed",
246
+        'dataless' => "application/vnd.fdsn.seed",
247
+        'gph' => "application/vnd.flographit",
248
+        'ftc' => "application/vnd.fluxtime.clip",
249
+        'fm' => "application/vnd.framemaker",
250
+        'frame' => "application/vnd.framemaker",
251
+        'maker' => "application/vnd.framemaker",
252
+        'book' => "application/vnd.framemaker",
253
+        'fnc' => "application/vnd.frogans.fnc",
254
+        'ltf' => "application/vnd.frogans.ltf",
255
+        'fsc' => "application/vnd.fsc.weblaunch",
256
+        'oas' => "application/vnd.fujitsu.oasys",
257
+        'oa2' => "application/vnd.fujitsu.oasys2",
258
+        'oa3' => "application/vnd.fujitsu.oasys3",
259
+        'fg5' => "application/vnd.fujitsu.oasysgp",
260
+        'bh2' => "application/vnd.fujitsu.oasysprs",
261
+        'ddd' => "application/vnd.fujixerox.ddd",
262
+        'xdw' => "application/vnd.fujixerox.docuworks",
263
+        'xbd' => "application/vnd.fujixerox.docuworks.binder",
264
+        'fzs' => "application/vnd.fuzzysheet",
265
+        'txd' => "application/vnd.genomatix.tuxedo",
266
+        'ggb' => "application/vnd.geogebra.file",
267
+        'ggt' => "application/vnd.geogebra.tool",
268
+        'gex' => "application/vnd.geometry-explorer",
269
+        'gre' => "application/vnd.geometry-explorer",
270
+        'gxt' => "application/vnd.geonext",
271
+        'g2w' => "application/vnd.geoplan",
272
+        'g3w' => "application/vnd.geospace",
273
+        'gmx' => "application/vnd.gmx",
274
+        'kml' => "application/vnd.google-earth.kml+xml",
275
+        'kmz' => "application/vnd.google-earth.kmz",
276
+        'gqf' => "application/vnd.grafeq",
277
+        'gqs' => "application/vnd.grafeq",
278
+        'gac' => "application/vnd.groove-account",
279
+        'ghf' => "application/vnd.groove-help",
280
+        'gim' => "application/vnd.groove-identity-message",
281
+        'grv' => "application/vnd.groove-injector",
282
+        'gtm' => "application/vnd.groove-tool-message",
283
+        'tpl' => "application/vnd.groove-tool-template",
284
+        'vcg' => "application/vnd.groove-vcard",
285
+        'hal' => "application/vnd.hal+xml",
286
+        'zmm' => "application/vnd.handheld-entertainment+xml",
287
+        'hbci' => "application/vnd.hbci",
288
+        'les' => "application/vnd.hhe.lesson-player",
289
+        'hpgl' => "application/vnd.hp-hpgl",
290
+        'hpid' => "application/vnd.hp-hpid",
291
+        'hps' => "application/vnd.hp-hps",
292
+        'jlt' => "application/vnd.hp-jlyt",
293
+        'pcl' => "application/vnd.hp-pcl",
294
+        'pclxl' => "application/vnd.hp-pclxl",
295
+        'sfd-hdstx' => "application/vnd.hydrostatix.sof-data",
296
+        'mpy' => "application/vnd.ibm.minipay",
297
+        'afp' => "application/vnd.ibm.modcap",
298
+        'listafp' => "application/vnd.ibm.modcap",
299
+        'list3820' => "application/vnd.ibm.modcap",
300
+        'irm' => "application/vnd.ibm.rights-management",
301
+        'sc' => "application/vnd.ibm.secure-container",
302
+        'icc' => "application/vnd.iccprofile",
303
+        'icm' => "application/vnd.iccprofile",
304
+        'igl' => "application/vnd.igloader",
305
+        'ivp' => "application/vnd.immervision-ivp",
306
+        'ivu' => "application/vnd.immervision-ivu",
307
+        'igm' => "application/vnd.insors.igm",
308
+        'xpw' => "application/vnd.intercon.formnet",
309
+        'xpx' => "application/vnd.intercon.formnet",
310
+        'i2g' => "application/vnd.intergeo",
311
+        'qbo' => "application/vnd.intu.qbo",
312
+        'qfx' => "application/vnd.intu.qfx",
313
+        'rcprofile' => "application/vnd.ipunplugged.rcprofile",
314
+        'irp' => "application/vnd.irepository.package+xml",
315
+        'xpr' => "application/vnd.is-xpr",
316
+        'fcs' => "application/vnd.isac.fcs",
317
+        'jam' => "application/vnd.jam",
318
+        'rms' => "application/vnd.jcp.javame.midlet-rms",
319
+        'jisp' => "application/vnd.jisp",
320
+        'joda' => "application/vnd.joost.joda-archive",
321
+        'ktz' => "application/vnd.kahootz",
322
+        'ktr' => "application/vnd.kahootz",
323
+        'karbon' => "application/vnd.kde.karbon",
324
+        'chrt' => "application/vnd.kde.kchart",
325
+        'kfo' => "application/vnd.kde.kformula",
326
+        'flw' => "application/vnd.kde.kivio",
327
+        'kon' => "application/vnd.kde.kontour",
328
+        'kpr' => "application/vnd.kde.kpresenter",
329
+        'kpt' => "application/vnd.kde.kpresenter",
330
+        'ksp' => "application/vnd.kde.kspread",
331
+        'kwd' => "application/vnd.kde.kword",
332
+        'kwt' => "application/vnd.kde.kword",
333
+        'htke' => "application/vnd.kenameaapp",
334
+        'kia' => "application/vnd.kidspiration",
335
+        'kne' => "application/vnd.kinar",
336
+        'knp' => "application/vnd.kinar",
337
+        'skp' => "application/vnd.koan",
338
+        'skd' => "application/vnd.koan",
339
+        'skt' => "application/vnd.koan",
340
+        'skm' => "application/vnd.koan",
341
+        'sse' => "application/vnd.kodak-descriptor",
342
+        'lasxml' => "application/vnd.las.las+xml",
343
+        'lbd' => "application/vnd.llamagraphics.life-balance.desktop",
344
+        'lbe' => "application/vnd.llamagraphics.life-balance.exchange+xml",
345
+        '123' => "application/vnd.lotus-1-2-3",
346
+        'apr' => "application/vnd.lotus-approach",
347
+        'pre' => "application/vnd.lotus-freelance",
348
+        'nsf' => "application/vnd.lotus-notes",
349
+        'org' => "application/vnd.lotus-organizer",
350
+        'scm' => "application/vnd.lotus-screencam",
351
+        'lwp' => "application/vnd.lotus-wordpro",
352
+        'portpkg' => "application/vnd.macports.portpkg",
353
+        'mcd' => "application/vnd.mcd",
354
+        'mc1' => "application/vnd.medcalcdata",
355
+        'cdkey' => "application/vnd.mediastation.cdkey",
356
+        'mwf' => "application/vnd.mfer",
357
+        'mfm' => "application/vnd.mfmp",
358
+        'flo' => "application/vnd.micrografx.flo",
359
+        'igx' => "application/vnd.micrografx.igx",
360
+        'mif' => "application/vnd.mif",
361
+        'daf' => "application/vnd.mobius.daf",
362
+        'dis' => "application/vnd.mobius.dis",
363
+        'mbk' => "application/vnd.mobius.mbk",
364
+        'mqy' => "application/vnd.mobius.mqy",
365
+        'msl' => "application/vnd.mobius.msl",
366
+        'plc' => "application/vnd.mobius.plc",
367
+        'txf' => "application/vnd.mobius.txf",
368
+        'mpn' => "application/vnd.mophun.application",
369
+        'mpc' => "application/vnd.mophun.certificate",
370
+        'xul' => "application/vnd.mozilla.xul+xml",
371
+        'cil' => "application/vnd.ms-artgalry",
372
+        'cab' => "application/vnd.ms-cab-compressed",
373
+        'xls' => "application/vnd.ms-excel",
374
+        'xlm' => "application/vnd.ms-excel",
375
+        'xla' => "application/vnd.ms-excel",
376
+        'xlc' => "application/vnd.ms-excel",
377
+        'xlt' => "application/vnd.ms-excel",
378
+        'xlw' => "application/vnd.ms-excel",
379
+        'xlam' => "application/vnd.ms-excel.addin.macroenabled.12",
380
+        'xlsb' => "application/vnd.ms-excel.sheet.binary.macroenabled.12",
381
+        'xlsm' => "application/vnd.ms-excel.sheet.macroenabled.12",
382
+        'xltm' => "application/vnd.ms-excel.template.macroenabled.12",
383
+        'eot' => "application/vnd.ms-fontobject",
384
+        'chm' => "application/vnd.ms-htmlhelp",
385
+        'ims' => "application/vnd.ms-ims",
386
+        'lrm' => "application/vnd.ms-lrm",
387
+        'thmx' => "application/vnd.ms-officetheme",
388
+        'cat' => "application/vnd.ms-pki.seccat",
389
+        'stl' => "application/vnd.ms-pki.stl",
390
+        'ppt' => "application/vnd.ms-powerpoint",
391
+        'pps' => "application/vnd.ms-powerpoint",
392
+        'pot' => "application/vnd.ms-powerpoint",
393
+        'ppam' => "application/vnd.ms-powerpoint.addin.macroenabled.12",
394
+        'pptm' => "application/vnd.ms-powerpoint.presentation.macroenabled.12",
395
+        'sldm' => "application/vnd.ms-powerpoint.slide.macroenabled.12",
396
+        'ppsm' => "application/vnd.ms-powerpoint.slideshow.macroenabled.12",
397
+        'potm' => "application/vnd.ms-powerpoint.template.macroenabled.12",
398
+        'mpp' => "application/vnd.ms-project",
399
+        'mpt' => "application/vnd.ms-project",
400
+        'docm' => "application/vnd.ms-word.document.macroenabled.12",
401
+        'dotm' => "application/vnd.ms-word.template.macroenabled.12",
402
+        'wps' => "application/vnd.ms-works",
403
+        'wks' => "application/vnd.ms-works",
404
+        'wcm' => "application/vnd.ms-works",
405
+        'wdb' => "application/vnd.ms-works",
406
+        'wpl' => "application/vnd.ms-wpl",
407
+        'xps' => "application/vnd.ms-xpsdocument",
408
+        'mseq' => "application/vnd.mseq",
409
+        'mus' => "application/vnd.musician",
410
+        'msty' => "application/vnd.muvee.style",
411
+        'taglet' => "application/vnd.mynfc",
412
+        'nlu' => "application/vnd.neurolanguage.nlu",
413
+        'ntf' => "application/vnd.nitf",
414
+        'nitf' => "application/vnd.nitf",
415
+        'nnd' => "application/vnd.noblenet-directory",
416
+        'nns' => "application/vnd.noblenet-sealer",
417
+        'nnw' => "application/vnd.noblenet-web",
418
+        'ngdat' => "application/vnd.nokia.n-gage.data",
419
+        'n-gage' => "application/vnd.nokia.n-gage.symbian.install",
420
+        'rpst' => "application/vnd.nokia.radio-preset",
421
+        'rpss' => "application/vnd.nokia.radio-presets",
422
+        'edm' => "application/vnd.novadigm.edm",
423
+        'edx' => "application/vnd.novadigm.edx",
424
+        'ext' => "application/vnd.novadigm.ext",
425
+        'odc' => "application/vnd.oasis.opendocument.chart",
426
+        'otc' => "application/vnd.oasis.opendocument.chart-template",
427
+        'odb' => "application/vnd.oasis.opendocument.database",
428
+        'odf' => "application/vnd.oasis.opendocument.formula",
429
+        'odft' => "application/vnd.oasis.opendocument.formula-template",
430
+        'odg' => "application/vnd.oasis.opendocument.graphics",
431
+        'otg' => "application/vnd.oasis.opendocument.graphics-template",
432
+        'odi' => "application/vnd.oasis.opendocument.image",
433
+        'oti' => "application/vnd.oasis.opendocument.image-template",
434
+        'odp' => "application/vnd.oasis.opendocument.presentation",
435
+        'otp' => "application/vnd.oasis.opendocument.presentation-template",
436
+        'ods' => "application/vnd.oasis.opendocument.spreadsheet",
437
+        'ots' => "application/vnd.oasis.opendocument.spreadsheet-template",
438
+        'odt' => "application/vnd.oasis.opendocument.text",
439
+        'odm' => "application/vnd.oasis.opendocument.text-master",
440
+        'ott' => "application/vnd.oasis.opendocument.text-template",
441
+        'oth' => "application/vnd.oasis.opendocument.text-web",
442
+        'xo' => "application/vnd.olpc-sugar",
443
+        'dd2' => "application/vnd.oma.dd2+xml",
444
+        'oxt' => "application/vnd.openofficeorg.extension",
445
+        'pptx' => "application/vnd.openxmlformats-officedocument.presentationml.presentation",
446
+        'sldx' => "application/vnd.openxmlformats-officedocument.presentationml.slide",
447
+        'ppsx' => "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
448
+        'potx' => "application/vnd.openxmlformats-officedocument.presentationml.template",
449
+        'xlsx' => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
450
+        'xltx' => "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
451
+        'docx' => "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
452
+        'dotx' => "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
453
+        'mgp' => "application/vnd.osgeo.mapguide.package",
454
+        'dp' => "application/vnd.osgi.dp",
455
+        'esa' => "application/vnd.osgi.subsystem",
456
+        'pdb' => "application/vnd.palm",
457
+        'pqa' => "application/vnd.palm",
458
+        'oprc' => "application/vnd.palm",
459
+        'paw' => "application/vnd.pawaafile",
460
+        'str' => "application/vnd.pg.format",
461
+        'ei6' => "application/vnd.pg.osasli",
462
+        'efif' => "application/vnd.picsel",
463
+        'wg' => "application/vnd.pmi.widget",
464
+        'plf' => "application/vnd.pocketlearn",
465
+        'pbd' => "application/vnd.powerbuilder6",
466
+        'box' => "application/vnd.previewsystems.box",
467
+        'mgz' => "application/vnd.proteus.magazine",
468
+        'qps' => "application/vnd.publishare-delta-tree",
469
+        'ptid' => "application/vnd.pvi.ptid1",
470
+        'qxd' => "application/vnd.quark.quarkxpress",
471
+        'qxt' => "application/vnd.quark.quarkxpress",
472
+        'qwd' => "application/vnd.quark.quarkxpress",
473
+        'qwt' => "application/vnd.quark.quarkxpress",
474
+        'qxl' => "application/vnd.quark.quarkxpress",
475
+        'qxb' => "application/vnd.quark.quarkxpress",
476
+        'bed' => "application/vnd.realvnc.bed",
477
+        'mxl' => "application/vnd.recordare.musicxml",
478
+        'musicxml' => "application/vnd.recordare.musicxml+xml",
479
+        'cryptonote' => "application/vnd.rig.cryptonote",
480
+        'cod' => "application/vnd.rim.cod",
481
+        'rm' => "application/vnd.rn-realmedia",
482
+        'rmvb' => "application/vnd.rn-realmedia-vbr",
483
+        'link66' => "application/vnd.route66.link66+xml",
484
+        'st' => "application/vnd.sailingtracker.track",
485
+        'see' => "application/vnd.seemail",
486
+        'sema' => "application/vnd.sema",
487
+        'semd' => "application/vnd.semd",
488
+        'semf' => "application/vnd.semf",
489
+        'ifm' => "application/vnd.shana.informed.formdata",
490
+        'itp' => "application/vnd.shana.informed.formtemplate",
491
+        'iif' => "application/vnd.shana.informed.interchange",
492
+        'ipk' => "application/vnd.shana.informed.package",
493
+        'twd' => "application/vnd.simtech-mindmapper",
494
+        'twds' => "application/vnd.simtech-mindmapper",
495
+        'mmf' => "application/vnd.smaf",
496
+        'teacher' => "application/vnd.smart.teacher",
497
+        'sdkm' => "application/vnd.solent.sdkm+xml",
498
+        'sdkd' => "application/vnd.solent.sdkm+xml",
499
+        'dxp' => "application/vnd.spotfire.dxp",
500
+        'sfs' => "application/vnd.spotfire.sfs",
501
+        'sdc' => "application/vnd.stardivision.calc",
502
+        'sda' => "application/vnd.stardivision.draw",
503
+        'sdd' => "application/vnd.stardivision.impress",
504
+        'smf' => "application/vnd.stardivision.math",
505
+        'sdw' => "application/vnd.stardivision.writer",
506
+        'vor' => "application/vnd.stardivision.writer",
507
+        'sgl' => "application/vnd.stardivision.writer-global",
508
+        'smzip' => "application/vnd.stepmania.package",
509
+        'sm' => "application/vnd.stepmania.stepchart",
510
+        'sxc' => "application/vnd.sun.xml.calc",
511
+        'stc' => "application/vnd.sun.xml.calc.template",
512
+        'sxd' => "application/vnd.sun.xml.draw",
513
+        'std' => "application/vnd.sun.xml.draw.template",
514
+        'sxi' => "application/vnd.sun.xml.impress",
515
+        'sti' => "application/vnd.sun.xml.impress.template",
516
+        'sxm' => "application/vnd.sun.xml.math",
517
+        'sxw' => "application/vnd.sun.xml.writer",
518
+        'sxg' => "application/vnd.sun.xml.writer.global",
519
+        'stw' => "application/vnd.sun.xml.writer.template",
520
+        'sus' => "application/vnd.sus-calendar",
521
+        'susp' => "application/vnd.sus-calendar",
522
+        'svd' => "application/vnd.svd",
523
+        'sis' => "application/vnd.symbian.install",
524
+        'sisx' => "application/vnd.symbian.install",
525
+        'xsm' => "application/vnd.syncml+xml",
526
+        'bdm' => "application/vnd.syncml.dm+wbxml",
527
+        'xdm' => "application/vnd.syncml.dm+xml",
528
+        'tao' => "application/vnd.tao.intent-module-archive",
529
+        'pcap' => "application/vnd.tcpdump.pcap",
530
+        'cap' => "application/vnd.tcpdump.pcap",
531
+        'dmp' => "application/vnd.tcpdump.pcap",
532
+        'tmo' => "application/vnd.tmobile-livetv",
533
+        'tpt' => "application/vnd.trid.tpt",
534
+        'mxs' => "application/vnd.triscape.mxs",
535
+        'tra' => "application/vnd.trueapp",
536
+        'ufd' => "application/vnd.ufdl",
537
+        'ufdl' => "application/vnd.ufdl",
538
+        'utz' => "application/vnd.uiq.theme",
539
+        'umj' => "application/vnd.umajin",
540
+        'unityweb' => "application/vnd.unity",
541
+        'uoml' => "application/vnd.uoml+xml",
542
+        'vcx' => "application/vnd.vcx",
543
+        'vsd' => "application/vnd.visio",
544
+        'vst' => "application/vnd.visio",
545
+        'vss' => "application/vnd.visio",
546
+        'vsw' => "application/vnd.visio",
547
+        'vis' => "application/vnd.visionary",
548
+        'vsf' => "application/vnd.vsf",
549
+        'wbxml' => "application/vnd.wap.wbxml",
550
+        'wmlc' => "application/vnd.wap.wmlc",
551
+        'wmlsc' => "application/vnd.wap.wmlscriptc",
552
+        'wtb' => "application/vnd.webturbo",
553
+        'nbp' => "application/vnd.wolfram.player",
554
+        'wpd' => "application/vnd.wordperfect",
555
+        'wqd' => "application/vnd.wqd",
556
+        'stf' => "application/vnd.wt.stf",
557
+        'xar' => "application/vnd.xara",
558
+        'xfdl' => "application/vnd.xfdl",
559
+        'hvd' => "application/vnd.yamaha.hv-dic",
560
+        'hvs' => "application/vnd.yamaha.hv-script",
561
+        'hvp' => "application/vnd.yamaha.hv-voice",
562
+        'osf' => "application/vnd.yamaha.openscoreformat",
563
+        'osfpvg' => "application/vnd.yamaha.openscoreformat.osfpvg+xml",
564
+        'saf' => "application/vnd.yamaha.smaf-audio",
565
+        'spf' => "application/vnd.yamaha.smaf-phrase",
566
+        'cmp' => "application/vnd.yellowriver-custom-menu",
567
+        'zir' => "application/vnd.zul",
568
+        'zirz' => "application/vnd.zul",
569
+        'zaz' => "application/vnd.zzazz.deck+xml",
570
+        'vxml' => "application/voicexml+xml",
571
+        'wgt' => "application/widget",
572
+        'hlp' => "application/winhlp",
573
+        'wsdl' => "application/wsdl+xml",
574
+        'wspolicy' => "application/wspolicy+xml",
575
+        '7z' => "application/x-7z-compressed",
576
+        'abw' => "application/x-abiword",
577
+        'ace' => "application/x-ace-compressed",
578
+        'dmg' => "application/x-apple-diskimage",
579
+        'aab' => "application/x-authorware-bin",
580
+        'x32' => "application/x-authorware-bin",
581
+        'u32' => "application/x-authorware-bin",
582
+        'vox' => "application/x-authorware-bin",
583
+        'aam' => "application/x-authorware-map",
584
+        'aas' => "application/x-authorware-seg",
585
+        'bcpio' => "application/x-bcpio",
586
+        'torrent' => "application/x-bittorrent",
587
+        'blb' => "application/x-blorb",
588
+        'blorb' => "application/x-blorb",
589
+        'bz' => "application/x-bzip",
590
+        'bz2' => "application/x-bzip2",
591
+        'boz' => "application/x-bzip2",
592
+        'cbr' => "application/x-cbr",
593
+        'cba' => "application/x-cbr",
594
+        'cbt' => "application/x-cbr",
595
+        'cbz' => "application/x-cbr",
596
+        'cb7' => "application/x-cbr",
597
+        'vcd' => "application/x-cdlink",
598
+        'cfs' => "application/x-cfs-compressed",
599
+        'chat' => "application/x-chat",
600
+        'pgn' => "application/x-chess-pgn",
601
+        'nsc' => "application/x-conference",
602
+        'cpio' => "application/x-cpio",
603
+        'csh' => "application/x-csh",
604
+        'deb' => "application/x-debian-package",
605
+        'udeb' => "application/x-debian-package",
606
+        'dgc' => "application/x-dgc-compressed",
607
+        'dir' => "application/x-director",
608
+        'dcr' => "application/x-director",
609
+        'dxr' => "application/x-director",
610
+        'cst' => "application/x-director",
611
+        'cct' => "application/x-director",
612
+        'cxt' => "application/x-director",
613
+        'w3d' => "application/x-director",
614
+        'fgd' => "application/x-director",
615
+        'swa' => "application/x-director",
616
+        'wad' => "application/x-doom",
617
+        'ncx' => "application/x-dtbncx+xml",
618
+        'dtb' => "application/x-dtbook+xml",
619
+        'res' => "application/x-dtbresource+xml",
620
+        'dvi' => "application/x-dvi",
621
+        'evy' => "application/x-envoy",
622
+        'eva' => "application/x-eva",
623
+        'bdf' => "application/x-font-bdf",
624
+        'gsf' => "application/x-font-ghostscript",
625
+        'psf' => "application/x-font-linux-psf",
626
+        'pcf' => "application/x-font-pcf",
627
+        'snf' => "application/x-font-snf",
628
+        'pfa' => "application/x-font-type1",
629
+        'pfb' => "application/x-font-type1",
630
+        'pfm' => "application/x-font-type1",
631
+        'afm' => "application/x-font-type1",
632
+        'arc' => "application/x-freearc",
633
+        'spl' => "application/x-futuresplash",
634
+        'gca' => "application/x-gca-compressed",
635
+        'ulx' => "application/x-glulx",
636
+        'gnumeric' => "application/x-gnumeric",
637
+        'gramps' => "application/x-gramps-xml",
638
+        'gtar' => "application/x-gtar",
639
+        'hdf' => "application/x-hdf",
640
+        'install' => "application/x-install-instructions",
641
+        'iso' => "application/x-iso9660-image",
642
+        'jnlp' => "application/x-java-jnlp-file",
643
+        'latex' => "application/x-latex",
644
+        'lzh' => "application/x-lzh-compressed",
645
+        'lha' => "application/x-lzh-compressed",
646
+        'mie' => "application/x-mie",
647
+        'prc' => "application/x-mobipocket-ebook",
648
+        'mobi' => "application/x-mobipocket-ebook",
649
+        'application' => "application/x-ms-application",
650
+        'lnk' => "application/x-ms-shortcut",
651
+        'wmd' => "application/x-ms-wmd",
652
+        'wmz' => "application/x-msmetafile",
653
+        'xbap' => "application/x-ms-xbap",
654
+        'mdb' => "application/x-msaccess",
655
+        'obd' => "application/x-msbinder",
656
+        'crd' => "application/x-mscardfile",
657
+        'clp' => "application/x-msclip",
658
+        'exe' => "application/x-msdownload",
659
+        'dll' => "application/x-msdownload",
660
+        'com' => "application/x-msdownload",
661
+        'bat' => "application/x-msdownload",
662
+        'msi' => "application/x-msdownload",
663
+        'mvb' => "application/x-msmediaview",
664
+        'm13' => "application/x-msmediaview",
665
+        'm14' => "application/x-msmediaview",
666
+        'wmf' => "application/x-msmetafile",
667
+        'emf' => "application/x-msmetafile",
668
+        'emz' => "application/x-msmetafile",
669
+        'mny' => "application/x-msmoney",
670
+        'pub' => "application/x-mspublisher",
671
+        'scd' => "application/x-msschedule",
672
+        'trm' => "application/x-msterminal",
673
+        'wri' => "application/x-mswrite",
674
+        'nc' => "application/x-netcdf",
675
+        'cdf' => "application/x-netcdf",
676
+        'nzb' => "application/x-nzb",
677
+        'p12' => "application/x-pkcs12",
678
+        'pfx' => "application/x-pkcs12",
679
+        'p7b' => "application/x-pkcs7-certificates",
680
+        'spc' => "application/x-pkcs7-certificates",
681
+        'p7r' => "application/x-pkcs7-certreqresp",
682
+        'rar' => "application/x-rar-compressed",
683
+        'ris' => "application/x-research-info-systems",
684
+        'sh' => "application/x-sh",
685
+        'shar' => "application/x-shar",
686
+        'swf' => "application/x-shockwave-flash",
687
+        'xap' => "application/x-silverlight-app",
688
+        'sql' => "application/x-sql",
689
+        'sit' => "application/x-stuffit",
690
+        'sitx' => "application/x-stuffitx",
691
+        'srt' => "application/x-subrip",
692
+        'sv4cpio' => "application/x-sv4cpio",
693
+        'sv4crc' => "application/x-sv4crc",
694
+        't3' => "application/x-t3vm-image",
695
+        'gam' => "application/x-tads",
696
+        'tar' => "application/x-tar",
697
+        'tcl' => "application/x-tcl",
698
+        'tex' => "application/x-tex",
699
+        'tfm' => "application/x-tex-tfm",
700
+        'texinfo' => "application/x-texinfo",
701
+        'texi' => "application/x-texinfo",
702
+        'obj' => "application/x-tgif",
703
+        'ustar' => "application/x-ustar",
704
+        'src' => "application/x-wais-source",
705
+        'der' => "application/x-x509-ca-cert",
706
+        'crt' => "application/x-x509-ca-cert",
707
+        'fig' => "application/x-xfig",
708
+        'xlf' => "application/x-xliff+xml",
709
+        'xpi' => "application/x-xpinstall",
710
+        'xz' => "application/x-xz",
711
+        'z1' => "application/x-zmachine",
712
+        'z2' => "application/x-zmachine",
713
+        'z3' => "application/x-zmachine",
714
+        'z4' => "application/x-zmachine",
715
+        'z5' => "application/x-zmachine",
716
+        'z6' => "application/x-zmachine",
717
+        'z7' => "application/x-zmachine",
718
+        'z8' => "application/x-zmachine",
719
+        'xaml' => "application/xaml+xml",
720
+        'xdf' => "application/xcap-diff+xml",
721
+        'xenc' => "application/xenc+xml",
722
+        'xhtml' => "application/xhtml+xml",
723
+        'xht' => "application/xhtml+xml",
724
+        'xml' => "application/xml",
725
+        'xsl' => "application/xml",
726
+        'dtd' => "application/xml-dtd",
727
+        'xop' => "application/xop+xml",
728
+        'xpl' => "application/xproc+xml",
729
+        'xslt' => "application/xslt+xml",
730
+        'xspf' => "application/xspf+xml",
731
+        'mxml' => "application/xv+xml",
732
+        'xhvml' => "application/xv+xml",
733
+        'xvml' => "application/xv+xml",
734
+        'xvm' => "application/xv+xml",
735
+        'yang' => "application/yang",
736
+        'yin' => "application/yin+xml",
737
+        'zip' => "application/zip",
738
+        'adp' => "audio/adpcm",
739
+        'au' => "audio/basic",
740
+        'snd' => "audio/basic",
741
+        'mid' => "audio/midi",
742
+        'midi' => "audio/midi",
743
+        'kar' => "audio/midi",
744
+        'rmi' => "audio/midi",
745
+        'm4a' => "audio/mp4",
746
+        'mp4a' => "audio/mp4",
747
+        'mpga' => "audio/mpeg",
748
+        'mp2' => "audio/mpeg",
749
+        'mp2a' => "audio/mpeg",
750
+        'mp3' => "audio/mpeg",
751
+        'm2a' => "audio/mpeg",
752
+        'm3a' => "audio/mpeg",
753
+        'oga' => "audio/ogg",
754
+        'ogg' => "audio/ogg",
755
+        'spx' => "audio/ogg",
756
+        'opus' => "audio/ogg",
757
+        's3m' => "audio/s3m",
758
+        'sil' => "audio/silk",
759
+        'uva' => "audio/vnd.dece.audio",
760
+        'uvva' => "audio/vnd.dece.audio",
761
+        'eol' => "audio/vnd.digital-winds",
762
+        'dra' => "audio/vnd.dra",
763
+        'dts' => "audio/vnd.dts",
764
+        'dtshd' => "audio/vnd.dts.hd",
765
+        'lvp' => "audio/vnd.lucent.voice",
766
+        'pya' => "audio/vnd.ms-playready.media.pya",
767
+        'ecelp4800' => "audio/vnd.nuera.ecelp4800",
768
+        'ecelp7470' => "audio/vnd.nuera.ecelp7470",
769
+        'ecelp9600' => "audio/vnd.nuera.ecelp9600",
770
+        'rip' => "audio/vnd.rip",
771
+        'weba' => "audio/webm",
772
+        'aac' => "audio/x-aac",
773
+        'aif' => "audio/x-aiff",
774
+        'aiff' => "audio/x-aiff",
775
+        'aifc' => "audio/x-aiff",
776
+        'caf' => "audio/x-caf",
777
+        'flac' => "audio/x-flac",
778
+        'mka' => "audio/x-matroska",
779
+        'm3u' => "audio/x-mpegurl",
780
+        'wax' => "audio/x-ms-wax",
781
+        'wma' => "audio/x-ms-wma",
782
+        'ram' => "audio/x-pn-realaudio",
783
+        'ra' => "audio/x-pn-realaudio",
784
+        'rmp' => "audio/x-pn-realaudio-plugin",
785
+        'wav' => "audio/x-wav",
786
+        'xm' => "audio/xm",
787
+        'cdx' => "chemical/x-cdx",
788
+        'cif' => "chemical/x-cif",
789
+        'cmdf' => "chemical/x-cmdf",
790
+        'cml' => "chemical/x-cml",
791
+        'csml' => "chemical/x-csml",
792
+        'xyz' => "chemical/x-xyz",
793
+        'ttc' => "font/collection",
794
+        'otf' => "font/otf",
795
+        'ttf' => "font/ttf",
796
+        'woff' => "font/woff",
797
+        'woff2' => "font/woff2",
798
+        'bmp' => "image/bmp",
799
+        'cgm' => "image/cgm",
800
+        'g3' => "image/g3fax",
801
+        'gif' => "image/gif",
802
+        'ief' => "image/ief",
803
+        'jpeg' => "image/jpeg",
804
+        'jpg' => "image/jpeg",
805
+        'jpe' => "image/jpeg",
806
+        'ktx' => "image/ktx",
807
+        'png' => "image/png",
808
+        'btif' => "image/prs.btif",
809
+        'sgi' => "image/sgi",
810
+        'svg' => "image/svg+xml",
811
+        'svgz' => "image/svg+xml",
812
+        'tiff' => "image/tiff",
813
+        'tif' => "image/tiff",
814
+        'psd' => "image/vnd.adobe.photoshop",
815
+        'uvi' => "image/vnd.dece.graphic",
816
+        'uvvi' => "image/vnd.dece.graphic",
817
+        'uvg' => "image/vnd.dece.graphic",
818
+        'uvvg' => "image/vnd.dece.graphic",
819
+        'djvu' => "image/vnd.djvu",
820
+        'djv' => "image/vnd.djvu",
821
+        'sub' => "text/vnd.dvb.subtitle",
822
+        'dwg' => "image/vnd.dwg",
823
+        'dxf' => "image/vnd.dxf",
824
+        'fbs' => "image/vnd.fastbidsheet",
825
+        'fpx' => "image/vnd.fpx",
826
+        'fst' => "image/vnd.fst",
827
+        'mmr' => "image/vnd.fujixerox.edmics-mmr",
828
+        'rlc' => "image/vnd.fujixerox.edmics-rlc",
829
+        'mdi' => "image/vnd.ms-modi",
830
+        'wdp' => "image/vnd.ms-photo",
831
+        'npx' => "image/vnd.net-fpx",
832
+        'wbmp' => "image/vnd.wap.wbmp",
833
+        'xif' => "image/vnd.xiff",
834
+        'webp' => "image/webp",
835
+        '3ds' => "image/x-3ds",
836
+        'ras' => "image/x-cmu-raster",
837
+        'cmx' => "image/x-cmx",
838
+        'fh' => "image/x-freehand",
839
+        'fhc' => "image/x-freehand",
840
+        'fh4' => "image/x-freehand",
841
+        'fh5' => "image/x-freehand",
842
+        'fh7' => "image/x-freehand",
843
+        'ico' => "image/x-icon",
844
+        'sid' => "image/x-mrsid-image",
845
+        'pcx' => "image/x-pcx",
846
+        'pic' => "image/x-pict",
847
+        'pct' => "image/x-pict",
848
+        'pnm' => "image/x-portable-anymap",
849
+        'pbm' => "image/x-portable-bitmap",
850
+        'pgm' => "image/x-portable-graymap",
851
+        'ppm' => "image/x-portable-pixmap",
852
+        'rgb' => "image/x-rgb",
853
+        'tga' => "image/x-tga",
854
+        'xbm' => "image/x-xbitmap",
855
+        'xpm' => "image/x-xpixmap",
856
+        'xwd' => "image/x-xwindowdump",
857
+        'eml' => "message/rfc822",
858
+        'mime' => "message/rfc822",
859
+        'igs' => "model/iges",
860
+        'iges' => "model/iges",
861
+        'msh' => "model/mesh",
862
+        'mesh' => "model/mesh",
863
+        'silo' => "model/mesh",
864
+        'dae' => "model/vnd.collada+xml",
865
+        'dwf' => "model/vnd.dwf",
866
+        'gdl' => "model/vnd.gdl",
867
+        'gtw' => "model/vnd.gtw",
868
+        'mts' => "model/vnd.mts",
869
+        'vtu' => "model/vnd.vtu",
870
+        'wrl' => "model/vrml",
871
+        'vrml' => "model/vrml",
872
+        'x3db' => "model/x3d+binary",
873
+        'x3dbz' => "model/x3d+binary",
874
+        'x3dv' => "model/x3d+vrml",
875
+        'x3dvz' => "model/x3d+vrml",
876
+        'x3d' => "model/x3d+xml",
877
+        'x3dz' => "model/x3d+xml",
878
+        'appcache' => "text/cache-manifest",
879
+        'ics' => "text/calendar",
880
+        'ifb' => "text/calendar",
881
+        'css' => "text/css",
882
+        'csv' => "text/csv",
883
+        'html' => "text/html",
884
+        'htm' => "text/html",
885
+        'n3' => "text/n3",
886
+        'txt' => "text/plain",
887
+        'text' => "text/plain",
888
+        'conf' => "text/plain",
889
+        'def' => "text/plain",
890
+        'list' => "text/plain",
891
+        'log' => "text/plain",
892
+        'in' => "text/plain",
893
+        'dsc' => "text/prs.lines.tag",
894
+        'rtx' => "text/richtext",
895
+        'sgml' => "text/sgml",
896
+        'sgm' => "text/sgml",
897
+        'tsv' => "text/tab-separated-values",
898
+        't' => "text/troff",
899
+        'tr' => "text/troff",
900
+        'roff' => "text/troff",
901
+        'man' => "text/troff",
902
+        'me' => "text/troff",
903
+        'ms' => "text/troff",
904
+        'ttl' => "text/turtle",
905
+        'uri' => "text/uri-list",
906
+        'uris' => "text/uri-list",
907
+        'urls' => "text/uri-list",
908
+        'vcard' => "text/vcard",
909
+        'curl' => "text/vnd.curl",
910
+        'dcurl' => "text/vnd.curl.dcurl",
911
+        'mcurl' => "text/vnd.curl.mcurl",
912
+        'scurl' => "text/vnd.curl.scurl",
913
+        'fly' => "text/vnd.fly",
914
+        'flx' => "text/vnd.fmi.flexstor",
915
+        'gv' => "text/vnd.graphviz",
916
+        '3dml' => "text/vnd.in3d.3dml",
917
+        'spot' => "text/vnd.in3d.spot",
918
+        'jad' => "text/vnd.sun.j2me.app-descriptor",
919
+        'wml' => "text/vnd.wap.wml",
920
+        'wmls' => "text/vnd.wap.wmlscript",
921
+        's' => "text/x-asm",
922
+        'asm' => "text/x-asm",
923
+        'c' => "text/x-c",
924
+        'cc' => "text/x-c",
925
+        'cxx' => "text/x-c",
926
+        'cpp' => "text/x-c",
927
+        'h' => "text/x-c",
928
+        'hh' => "text/x-c",
929
+        'dic' => "text/x-c",
930
+        'f' => "text/x-fortran",
931
+        'for' => "text/x-fortran",
932
+        'f77' => "text/x-fortran",
933
+        'f90' => "text/x-fortran",
934
+        'java' => "text/x-java-source",
935
+        'nfo' => "text/x-nfo",
936
+        'opml' => "text/x-opml",
937
+        'p' => "text/x-pascal",
938
+        'pas' => "text/x-pascal",
939
+        'etx' => "text/x-setext",
940
+        'sfv' => "text/x-sfv",
941
+        'uu' => "text/x-uuencode",
942
+        'vcs' => "text/x-vcalendar",
943
+        'vcf' => "text/x-vcard",
944
+        '3gp' => "video/3gpp",
945
+        '3g2' => "video/3gpp2",
946
+        'h261' => "video/h261",
947
+        'h263' => "video/h263",
948
+        'h264' => "video/h264",
949
+        'jpgv' => "video/jpeg",
950
+        'jpm' => "video/jpm",
951
+        'jpgm' => "video/jpm",
952
+        'mj2' => "video/mj2",
953
+        'mjp2' => "video/mj2",
954
+        'mp4' => "video/mp4",
955
+        'mp4v' => "video/mp4",
956
+        'mpg4' => "video/mp4",
957
+        'mpeg' => "video/mpeg",
958
+        'mpg' => "video/mpeg",
959
+        'mpe' => "video/mpeg",
960
+        'm1v' => "video/mpeg",
961
+        'm2v' => "video/mpeg",
962
+        'ogv' => "video/ogg",
963
+        'qt' => "video/quicktime",
964
+        'mov' => "video/quicktime",
965
+        'uvh' => "video/vnd.dece.hd",
966
+        'uvvh' => "video/vnd.dece.hd",
967
+        'uvm' => "video/vnd.dece.mobile",
968
+        'uvvm' => "video/vnd.dece.mobile",
969
+        'uvp' => "video/vnd.dece.pd",
970
+        'uvvp' => "video/vnd.dece.pd",
971
+        'uvs' => "video/vnd.dece.sd",
972
+        'uvvs' => "video/vnd.dece.sd",
973
+        'uvv' => "video/vnd.dece.video",
974
+        'uvvv' => "video/vnd.dece.video",
975
+        'dvb' => "video/vnd.dvb.file",
976
+        'fvt' => "video/vnd.fvt",
977
+        'mxu' => "video/vnd.mpegurl",
978
+        'm4u' => "video/vnd.mpegurl",
979
+        'pyv' => "video/vnd.ms-playready.media.pyv",
980
+        'uvu' => "video/vnd.uvvu.mp4",
981
+        'uvvu' => "video/vnd.uvvu.mp4",
982
+        'viv' => "video/vnd.vivo",
983
+        'webm' => "video/webm",
984
+        'f4v' => "video/x-f4v",
985
+        'fli' => "video/x-fli",
986
+        'flv' => "video/x-flv",
987
+        'm4v' => "video/x-m4v",
988
+        'mkv' => "video/x-matroska",
989
+        'mk3d' => "video/x-matroska",
990
+        'mks' => "video/x-matroska",
991
+        'mng' => "video/x-mng",
992
+        'asf' => "video/x-ms-asf",
993
+        'asx' => "video/x-ms-asf",
994
+        'vob' => "video/x-ms-vob",
995
+        'wm' => "video/x-ms-wm",
996
+        'wmv' => "video/x-ms-wmv",
997
+        'wmx' => "video/x-ms-wmx",
998
+        'wvx' => "video/x-ms-wvx",
999
+        'avi' => "video/x-msvideo",
1000
+        'movie' => "video/x-sgi-movie",
1001
+        'smv' => "video/x-smv",
1002
+        'ice' => "x-conference/x-cooltalk"
1003
+    ];
1004 1004
 
1005 1005
 }
Please login to merge, or discard this patch.
src/Traits/ClientTrait.php 1 patch
Indentation   +82 added lines, -82 removed lines patch added patch discarded remove patch
@@ -15,93 +15,93 @@
 block discarded – undo
15 15
 trait ClientTrait
16 16
 {
17 17
 
18
-	/**
19
-	 * Create and send an HTTP request.
20
-	 *
21
-	 * @param string $method HTTP method.
22
-	 * @param string $uri URI object or string.
23
-	 * @param HttpOptions|array $options Request options to apply.
24
-	 *
25
-	 * @return HttpResponse
26
-	 */
27
-	abstract public function request(string $method, string $uri, HttpOptions|array $options = []): HttpResponse;
18
+    /**
19
+     * Create and send an HTTP request.
20
+     *
21
+     * @param string $method HTTP method.
22
+     * @param string $uri URI object or string.
23
+     * @param HttpOptions|array $options Request options to apply.
24
+     *
25
+     * @return HttpResponse
26
+     */
27
+    abstract public function request(string $method, string $uri, HttpOptions|array $options = []): HttpResponse;
28 28
 
29
-	/**
30
-	 * Create and send an HTTP GET request.
31
-	 *
32
-	 * @param string $uri URI object or string.
33
-	 * @param HttpOptions|array $options Request options to apply.
34
-	 *
35
-	 * @return HttpResponse
36
-	 */
37
-	public function get(string $uri, HttpOptions|array $options = []): HttpResponse
38
-	{
39
-		return $this->request('GET', $uri, $options);
40
-	}
29
+    /**
30
+     * Create and send an HTTP GET request.
31
+     *
32
+     * @param string $uri URI object or string.
33
+     * @param HttpOptions|array $options Request options to apply.
34
+     *
35
+     * @return HttpResponse
36
+     */
37
+    public function get(string $uri, HttpOptions|array $options = []): HttpResponse
38
+    {
39
+        return $this->request('GET', $uri, $options);
40
+    }
41 41
 
42
-	/**
43
-	 * Create and send an HTTP HEAD request.
44
-	 *
45
-	 * @param string $uri URI object or string.
46
-	 * @param HttpOptions|array $options Request options to apply.
47
-	 *
48
-	 * @return HttpResponse
49
-	 */
50
-	public function head(string $uri, HttpOptions|array $options = []): HttpResponse
51
-	{
52
-		return $this->request('HEAD', $uri, $options);
53
-	}
42
+    /**
43
+     * Create and send an HTTP HEAD request.
44
+     *
45
+     * @param string $uri URI object or string.
46
+     * @param HttpOptions|array $options Request options to apply.
47
+     *
48
+     * @return HttpResponse
49
+     */
50
+    public function head(string $uri, HttpOptions|array $options = []): HttpResponse
51
+    {
52
+        return $this->request('HEAD', $uri, $options);
53
+    }
54 54
 
55
-	/**
56
-	 * Create and send an HTTP PUT request.
57
-	 *
58
-	 * @param string $uri URI object or string.
59
-	 * @param HttpOptions|array $options Request options to apply.
60
-	 *
61
-	 * @return HttpResponse
62
-	 */
63
-	public function put(string $uri, HttpOptions|array $options = []): HttpResponse
64
-	{
65
-		return $this->request('PUT', $uri, $options);
66
-	}
55
+    /**
56
+     * Create and send an HTTP PUT request.
57
+     *
58
+     * @param string $uri URI object or string.
59
+     * @param HttpOptions|array $options Request options to apply.
60
+     *
61
+     * @return HttpResponse
62
+     */
63
+    public function put(string $uri, HttpOptions|array $options = []): HttpResponse
64
+    {
65
+        return $this->request('PUT', $uri, $options);
66
+    }
67 67
 
68
-	/**
69
-	 * Create and send an HTTP POST request.
70
-	 *
71
-	 * @param string $uri URI object or string.
72
-	 * @param HttpOptions|array $options Request options to apply.
73
-	 *
74
-	 * @return HttpResponse
75
-	 */
76
-	public function post(string $uri, HttpOptions|array $options = []): HttpResponse
77
-	{
78
-		return $this->request('POST', $uri, $options);
79
-	}
68
+    /**
69
+     * Create and send an HTTP POST request.
70
+     *
71
+     * @param string $uri URI object or string.
72
+     * @param HttpOptions|array $options Request options to apply.
73
+     *
74
+     * @return HttpResponse
75
+     */
76
+    public function post(string $uri, HttpOptions|array $options = []): HttpResponse
77
+    {
78
+        return $this->request('POST', $uri, $options);
79
+    }
80 80
 
81
-	/**
82
-	 * Create and send an HTTP PATCH request.
83
-	 *
84
-	 * @param string $uri URI object or string.
85
-	 * @param HttpOptions|array $options Request options to apply.
86
-	 *
87
-	 * @return HttpResponse
88
-	 */
89
-	public function patch(string $uri, HttpOptions|array $options = []): HttpResponse
90
-	{
91
-		return $this->request('PATCH', $uri, $options);
92
-	}
81
+    /**
82
+     * Create and send an HTTP PATCH request.
83
+     *
84
+     * @param string $uri URI object or string.
85
+     * @param HttpOptions|array $options Request options to apply.
86
+     *
87
+     * @return HttpResponse
88
+     */
89
+    public function patch(string $uri, HttpOptions|array $options = []): HttpResponse
90
+    {
91
+        return $this->request('PATCH', $uri, $options);
92
+    }
93 93
 
94
-	/**
95
-	 * Create and send an HTTP DELETE request.
96
-	 *
97
-	 * @param string $uri URI object or string.
98
-	 * @param HttpOptions|array $options Request options to apply.
99
-	 *
100
-	 * @return HttpResponse
101
-	 */
102
-	public function delete(string $uri, HttpOptions|array $options = []): HttpResponse
103
-	{
104
-		return $this->request('DELETE', $uri, $options);
105
-	}
94
+    /**
95
+     * Create and send an HTTP DELETE request.
96
+     *
97
+     * @param string $uri URI object or string.
98
+     * @param HttpOptions|array $options Request options to apply.
99
+     *
100
+     * @return HttpResponse
101
+     */
102
+    public function delete(string $uri, HttpOptions|array $options = []): HttpResponse
103
+    {
104
+        return $this->request('DELETE', $uri, $options);
105
+    }
106 106
 
107 107
 }
108 108
\ No newline at end of file
Please login to merge, or discard this patch.
src/Model/ProxyServer.php 1 patch
Indentation   +76 added lines, -76 removed lines patch added patch discarded remove patch
@@ -12,91 +12,91 @@
 block discarded – undo
12 12
 class ProxyServer
13 13
 {
14 14
 
15
-	/**
16
-	 * Proxy Server IP Address - IP or Domain
17
-	 *
18
-	 * @var ?string
19
-	 */
20
-	public ?string $ip = null;
15
+    /**
16
+     * Proxy Server IP Address - IP or Domain
17
+     *
18
+     * @var ?string
19
+     */
20
+    public ?string $ip = null;
21 21
 
22
-	/**
23
-	 * Proxy Server Port - 1-65535
24
-	 *
25
-	 * @var ?int
26
-	 */
27
-	public ?int $port = null;
22
+    /**
23
+     * Proxy Server Port - 1-65535
24
+     *
25
+     * @var ?int
26
+     */
27
+    public ?int $port = null;
28 28
 
29
-	/**
30
-	 * Proxy Server Username
31
-	 *
32
-	 * @var ?string
33
-	 */
34
-	public ?string $username = null;
29
+    /**
30
+     * Proxy Server Username
31
+     *
32
+     * @var ?string
33
+     */
34
+    public ?string $username = null;
35 35
 
36
-	/**
37
-	 * Proxy Server Password
38
-	 *
39
-	 * @var ?string
40
-	 */
41
-	public ?string $password = null;
36
+    /**
37
+     * Proxy Server Password
38
+     *
39
+     * @var ?string
40
+     */
41
+    public ?string $password = null;
42 42
 
43
-	/**
44
-	 * Proxy Server Type
45
-	 *
46
-	 * @var ?int [CURLPROXY_SOCKS5|CURLPROXY_SOCKS4|CURLPROXY_HTTP]
47
-	 */
48
-	public ?int $type = null;
43
+    /**
44
+     * Proxy Server Type
45
+     *
46
+     * @var ?int [CURLPROXY_SOCKS5|CURLPROXY_SOCKS4|CURLPROXY_HTTP]
47
+     */
48
+    public ?int $type = null;
49 49
 
50
-	/**
51
-	 * Setup Proxy Server
52
-	 *
53
-	 * @param array $proxy ["ip", "port", "user", "pass"]
54
-	 * @return ProxyServer
55
-	 */
56
-	public function setProxy(array $proxy): self
57
-	{
58
-		$this->ip = $proxy['ip'];
59
-		$this->port = $proxy['port'];
60
-		$this->username = $proxy['user'];
61
-		$this->password = $proxy['pass'];
50
+    /**
51
+     * Setup Proxy Server
52
+     *
53
+     * @param array $proxy ["ip", "port", "user", "pass"]
54
+     * @return ProxyServer
55
+     */
56
+    public function setProxy(array $proxy): self
57
+    {
58
+        $this->ip = $proxy['ip'];
59
+        $this->port = $proxy['port'];
60
+        $this->username = $proxy['user'];
61
+        $this->password = $proxy['pass'];
62 62
 
63
-		return $this;
64
-	}
63
+        return $this;
64
+    }
65 65
 
66
-	/**
67
-	 * Set Proxy Server Type
68
-	 *
69
-	 * @param int $type [CURLPROXY_SOCKS5|CURLPROXY_SOCKS4|CURLPROXY_HTTP]
70
-	 * @return ProxyServer
71
-	 */
72
-	public function setType(int $type): self
73
-	{
74
-		if (!in_array($type, [CURLPROXY_SOCKS5, CURLPROXY_SOCKS4, CURLPROXY_HTTP])) {
75
-			throw new \InvalidArgumentException('Invalid Proxy Type');
76
-		}
77
-		$this->type = $type;
66
+    /**
67
+     * Set Proxy Server Type
68
+     *
69
+     * @param int $type [CURLPROXY_SOCKS5|CURLPROXY_SOCKS4|CURLPROXY_HTTP]
70
+     * @return ProxyServer
71
+     */
72
+    public function setType(int $type): self
73
+    {
74
+        if (!in_array($type, [CURLPROXY_SOCKS5, CURLPROXY_SOCKS4, CURLPROXY_HTTP])) {
75
+            throw new \InvalidArgumentException('Invalid Proxy Type');
76
+        }
77
+        $this->type = $type;
78 78
 
79
-		return $this;
80
-	}
79
+        return $this;
80
+    }
81 81
 
82
-	/**
83
-	 * Get the IP:Port string
84
-	 *
85
-	 * @return ?string
86
-	 */
87
-	public function getHost(): ?string
88
-	{
89
-		return !empty($this->ip) && !empty($this->port) ? "$this->ip:$this->port" : null;
90
-	}
82
+    /**
83
+     * Get the IP:Port string
84
+     *
85
+     * @return ?string
86
+     */
87
+    public function getHost(): ?string
88
+    {
89
+        return !empty($this->ip) && !empty($this->port) ? "$this->ip:$this->port" : null;
90
+    }
91 91
 
92
-	/**
93
-	 * Get auth data
94
-	 *
95
-	 * @return ?string
96
-	 */
97
-	public function getAuth(): ?string
98
-	{
99
-		return !empty($this->username) && !empty($this->password) ? "$this->username:$this->password" : null;
100
-	}
92
+    /**
93
+     * Get auth data
94
+     *
95
+     * @return ?string
96
+     */
97
+    public function getAuth(): ?string
98
+    {
99
+        return !empty($this->username) && !empty($this->password) ? "$this->username:$this->password" : null;
100
+    }
101 101
 
102 102
 }
103 103
\ No newline at end of file
Please login to merge, or discard this patch.
src/Model/HttpOptions.php 1 patch
Indentation   +198 added lines, -198 removed lines patch added patch discarded remove patch
@@ -27,203 +27,203 @@
 block discarded – undo
27 27
 class HttpOptions
28 28
 {
29 29
 
30
-	/**
31
-	 * An array of HTTP header fields to set, in the format array('<em>Content-type: text/plain</em>', '<em>Content-length: 100</em>')
32
-	 *
33
-	 * @var array
34
-	 */
35
-	private array $headers = [];
36
-
37
-	/**
38
-	 * An array of cookies to set, in the format array('name' => 'value', 'name2' => 'value2')
39
-	 *
40
-	 * @var array
41
-	 */
42
-	private array $cookie = [];
43
-
44
-	/**
45
-	 * An array of query data (e.g., array('id' => '123', 'name' => 'John')) for use in the query string part of the URI (e.g., http://example.com/index.php?id=123&name=John)
46
-	 *
47
-	 * @var array
48
-	 */
49
-	private array $query = [];
50
-
51
-	/**
52
-	 * The body of the HTTP request
53
-	 *
54
-	 * @var ?string
55
-	 */
56
-	private ?string $body = null;
57
-
58
-	/**
59
-	 * The maximum number of seconds to allow cURL functions to execute
60
-	 *
61
-	 * @var int
62
-	 */
63
-	private int $timeout = 30;
64
-
65
-	/**
66
-	 * An array of multipart data (e.g., array('name', 'contents', 'size')), for use in the multipart/form-data part of the request body
67
-	 *
68
-	 * @var array
69
-	 */
70
-	private array $multipart = [];
71
-
72
-	/**
73
-	 * An array of cURL options
74
-	 *
75
-	 * @var array
76
-	 */
77
-	private array $curlOptions = [];
78
-
79
-	/**
80
-	 * The proxy server to use
81
-	 *
82
-	 * @var ?ProxyServer
83
-	 */
84
-	private ?ProxyServer $proxy = null;
85
-
86
-	/**
87
-	 * Http Options constructor.
88
-	 *
89
-	 * @param array $options
90
-	 */
91
-	public function __construct(array $options = [])
92
-	{
93
-		$this->setOptions($options);
94
-	}
95
-
96
-	/**
97
-	 * Returns the class as an array
98
-	 *
99
-	 * @return array
100
-	 */
101
-	public function toArray(): array
102
-	{
103
-		$result = [];
104
-		foreach (get_object_vars($this) as $key => $value) {
105
-			$result[$key] = $value;
106
-		}
107
-		return $result;
108
-	}
109
-
110
-	/**
111
-	 * Set Options
112
-	 *
113
-	 * @param array $options
114
-	 * @return void
115
-	 */
116
-	public function setOptions(array $options): void
117
-	{
118
-		foreach ($options as $key => $value) {
119
-			if (method_exists($this, 'set' . ucfirst($key))) {
120
-				if ($value !== null) {
121
-					$this->{'set' . ucfirst($key)}($value);
122
-				}
123
-			} else {
124
-				if (property_exists($this, $key)) {
125
-					$this->{$key} = $value;
126
-				} else {
127
-					throw new \InvalidArgumentException("Invalid option: $key");
128
-				}
129
-			}
130
-		}
131
-	}
132
-
133
-	/**
134
-	 * Set Body of Http request
135
-	 *
136
-	 * @param ?string|array $body The body of the request - On array it will be converted to json
137
-	 * @return void
138
-	 */
139
-	public function setBody(string|array|null $body): void
140
-	{
141
-		if (is_array($body)) {
142
-			$this->body = json_encode($body);
143
-			$this->headers['Content-Type'] = 'application/json';
144
-		} else {
145
-			$this->body = $body;
146
-		}
147
-	}
148
-
149
-	/**
150
-	 * Set proxy server
151
-	 *
152
-	 * @param array $proxy ["host", "port", "user", "pass"]
153
-	 * @return void
154
-	 */
155
-	public function setProxy(array $proxy): void
156
-	{
157
-		$this->proxy = (new ProxyServer())->setProxy($proxy);
158
-	}
159
-
160
-	/**
161
-	 * Generate URL-encoded query string.
162
-	 *
163
-	 * @return string
164
-	 */
165
-	public function getQueryString(): string
166
-	{
167
-		return http_build_query($this->query);
168
-	}
169
-
170
-	/**
171
-	 * Set Curl Options
172
-	 *
173
-	 * @param array $options [{"CURLOPT_*": "value"}, ...]
174
-	 * @return void
175
-	 */
176
-	public function setCurlOptions(array $options): void
177
-	{
178
-		if (count($options) > 0) {
179
-			foreach ($options as $option => $value) {
180
-				$this->curlOptions[$option] = $value;
181
-			}
182
-		}
183
-	}
184
-
185
-	/**
186
-	 * Add Multipart Data
187
-	 *
188
-	 * @param array $multipart [{"name", "path"}, ...]
189
-	 * @return void
190
-	 */
191
-	public function addMultiPart(array $multipart): void
192
-	{
193
-		$this->multipart[] = $multipart;
194
-	}
195
-
196
-	/**
197
-	 * @param string $name
198
-	 * @param array $arguments
199
-	 * @return mixed
200
-	 */
201
-	public function __call(string $name, array $arguments): mixed
202
-	{
203
-		if (method_exists($this, $name)) {
204
-			return $this->{$name}(...$arguments);
205
-		}
206
-
207
-		if (property_exists($this, $name)) {
208
-			return $this->{$name};
209
-		}
210
-
211
-		if (str_starts_with($name, 'set')) {
212
-			$property = lcfirst(substr($name, 3));
213
-			if (property_exists($this, $property)) {
214
-				$this->{$property} = $arguments[0];
215
-				return $this;
216
-			}
217
-		}
218
-
219
-		if (str_starts_with($name, 'get')) {
220
-			$property = lcfirst(substr($name, 3));
221
-			if (property_exists($this, $property)) {
222
-				return $this->{$property};
223
-			}
224
-		}
225
-
226
-		throw new \BadMethodCallException("Method $name does not exist");
227
-	}
30
+    /**
31
+     * An array of HTTP header fields to set, in the format array('<em>Content-type: text/plain</em>', '<em>Content-length: 100</em>')
32
+     *
33
+     * @var array
34
+     */
35
+    private array $headers = [];
36
+
37
+    /**
38
+     * An array of cookies to set, in the format array('name' => 'value', 'name2' => 'value2')
39
+     *
40
+     * @var array
41
+     */
42
+    private array $cookie = [];
43
+
44
+    /**
45
+     * An array of query data (e.g., array('id' => '123', 'name' => 'John')) for use in the query string part of the URI (e.g., http://example.com/index.php?id=123&name=John)
46
+     *
47
+     * @var array
48
+     */
49
+    private array $query = [];
50
+
51
+    /**
52
+     * The body of the HTTP request
53
+     *
54
+     * @var ?string
55
+     */
56
+    private ?string $body = null;
57
+
58
+    /**
59
+     * The maximum number of seconds to allow cURL functions to execute
60
+     *
61
+     * @var int
62
+     */
63
+    private int $timeout = 30;
64
+
65
+    /**
66
+     * An array of multipart data (e.g., array('name', 'contents', 'size')), for use in the multipart/form-data part of the request body
67
+     *
68
+     * @var array
69
+     */
70
+    private array $multipart = [];
71
+
72
+    /**
73
+     * An array of cURL options
74
+     *
75
+     * @var array
76
+     */
77
+    private array $curlOptions = [];
78
+
79
+    /**
80
+     * The proxy server to use
81
+     *
82
+     * @var ?ProxyServer
83
+     */
84
+    private ?ProxyServer $proxy = null;
85
+
86
+    /**
87
+     * Http Options constructor.
88
+     *
89
+     * @param array $options
90
+     */
91
+    public function __construct(array $options = [])
92
+    {
93
+        $this->setOptions($options);
94
+    }
95
+
96
+    /**
97
+     * Returns the class as an array
98
+     *
99
+     * @return array
100
+     */
101
+    public function toArray(): array
102
+    {
103
+        $result = [];
104
+        foreach (get_object_vars($this) as $key => $value) {
105
+            $result[$key] = $value;
106
+        }
107
+        return $result;
108
+    }
109
+
110
+    /**
111
+     * Set Options
112
+     *
113
+     * @param array $options
114
+     * @return void
115
+     */
116
+    public function setOptions(array $options): void
117
+    {
118
+        foreach ($options as $key => $value) {
119
+            if (method_exists($this, 'set' . ucfirst($key))) {
120
+                if ($value !== null) {
121
+                    $this->{'set' . ucfirst($key)}($value);
122
+                }
123
+            } else {
124
+                if (property_exists($this, $key)) {
125
+                    $this->{$key} = $value;
126
+                } else {
127
+                    throw new \InvalidArgumentException("Invalid option: $key");
128
+                }
129
+            }
130
+        }
131
+    }
132
+
133
+    /**
134
+     * Set Body of Http request
135
+     *
136
+     * @param ?string|array $body The body of the request - On array it will be converted to json
137
+     * @return void
138
+     */
139
+    public function setBody(string|array|null $body): void
140
+    {
141
+        if (is_array($body)) {
142
+            $this->body = json_encode($body);
143
+            $this->headers['Content-Type'] = 'application/json';
144
+        } else {
145
+            $this->body = $body;
146
+        }
147
+    }
148
+
149
+    /**
150
+     * Set proxy server
151
+     *
152
+     * @param array $proxy ["host", "port", "user", "pass"]
153
+     * @return void
154
+     */
155
+    public function setProxy(array $proxy): void
156
+    {
157
+        $this->proxy = (new ProxyServer())->setProxy($proxy);
158
+    }
159
+
160
+    /**
161
+     * Generate URL-encoded query string.
162
+     *
163
+     * @return string
164
+     */
165
+    public function getQueryString(): string
166
+    {
167
+        return http_build_query($this->query);
168
+    }
169
+
170
+    /**
171
+     * Set Curl Options
172
+     *
173
+     * @param array $options [{"CURLOPT_*": "value"}, ...]
174
+     * @return void
175
+     */
176
+    public function setCurlOptions(array $options): void
177
+    {
178
+        if (count($options) > 0) {
179
+            foreach ($options as $option => $value) {
180
+                $this->curlOptions[$option] = $value;
181
+            }
182
+        }
183
+    }
184
+
185
+    /**
186
+     * Add Multipart Data
187
+     *
188
+     * @param array $multipart [{"name", "path"}, ...]
189
+     * @return void
190
+     */
191
+    public function addMultiPart(array $multipart): void
192
+    {
193
+        $this->multipart[] = $multipart;
194
+    }
195
+
196
+    /**
197
+     * @param string $name
198
+     * @param array $arguments
199
+     * @return mixed
200
+     */
201
+    public function __call(string $name, array $arguments): mixed
202
+    {
203
+        if (method_exists($this, $name)) {
204
+            return $this->{$name}(...$arguments);
205
+        }
206
+
207
+        if (property_exists($this, $name)) {
208
+            return $this->{$name};
209
+        }
210
+
211
+        if (str_starts_with($name, 'set')) {
212
+            $property = lcfirst(substr($name, 3));
213
+            if (property_exists($this, $property)) {
214
+                $this->{$property} = $arguments[0];
215
+                return $this;
216
+            }
217
+        }
218
+
219
+        if (str_starts_with($name, 'get')) {
220
+            $property = lcfirst(substr($name, 3));
221
+            if (property_exists($this, $property)) {
222
+                return $this->{$property};
223
+            }
224
+        }
225
+
226
+        throw new \BadMethodCallException("Method $name does not exist");
227
+    }
228 228
 
229 229
 }
230 230
\ No newline at end of file
Please login to merge, or discard this patch.
src/Model/DownloadResult.php 2 patches
Indentation   +141 added lines, -141 removed lines patch added patch discarded remove patch
@@ -12,146 +12,146 @@
 block discarded – undo
12 12
 class DownloadResult
13 13
 {
14 14
 
15
-	/**
16
-	 * The unique identifier of the download
17
-	 *
18
-	 * @var string
19
-	 */
20
-	public string $id;
21
-
22
-	/**
23
-	 * The final size of the downloaded file
24
-	 *
25
-	 * @var int
26
-	 */
27
-	public int $fileSize;
28
-
29
-	/**
30
-	 * The path of the downloaded chunks
31
-	 *
32
-	 * @var string
33
-	 */
34
-	public string $chunksPath;
35
-
36
-	/**
37
-	 * The size of each chunk
38
-	 *
39
-	 * @var int
40
-	 */
41
-	public int $chunkSize;
42
-
43
-	/**
44
-	 * The count of chunks
45
-	 *
46
-	 * @var int
47
-	 */
48
-	public int $chunks;
49
-
50
-	/**
51
-	 * Start time of the download in timestamp.
52
-	 *
53
-	 * @var int
54
-	 */
55
-	public int $startTime;
56
-
57
-	/**
58
-	 * End time of the download in timestamp.
59
-	 *
60
-	 * @var int
61
-	 */
62
-	public int $endTime;
63
-
64
-	/**
65
-	 * The downloaded chunks
66
-	 *
67
-	 * @var array [{id, size, location, elapsedTime}, ...]
68
-	 */
69
-	public array $downloads;
70
-
71
-	/**
72
-	 * Add a chunk to the download result
73
-	 *
74
-	 * @param string $id The unique identifier of the chunk
75
-	 * @param ?string $body The chunk body
76
-	 * @param float $elapsedTime in microseconds
77
-	 * @return void
78
-	 */
79
-	public function addChunk(string $id, ?string $body, float $elapsedTime): void
80
-	{
81
-		$data = [
82
-			'id' => $id,
83
-			'location' => null,
84
-			'size' => 0,
85
-			'elapsed_time' => $elapsedTime,
86
-			'status' => 'failed',
87
-		];
88
-		if ($body !== null) {
89
-			$save = $this->saveChunk($id, $body);
90
-			$data = array_merge($data, [
91
-				'location' => $save ?? null,
92
-				'size' => strlen($body),
93
-				'status' => $save ? 'saved' : 'failed',
94
-			]);
95
-		}
96
-		$this->downloads[] = $data;
97
-	}
98
-
99
-	/**
100
-	 * Save the chunks to the temp directory
101
-	 *
102
-	 * @param string $id The unique identifier of the chunk
103
-	 * @param string $body The body of the chunk
104
-	 * @return string|bool
105
-	 */
106
-	private function saveChunk(string $id, string $body): string|bool
107
-	{
108
-		$path = $this->chunksPath . DIRECTORY_SEPARATOR . $id;
109
-		return file_put_contents($path, $body) ? $path : false;
110
-	}
111
-
112
-	/**
113
-	 * Merge the chunks into a single string
114
-	 *
115
-	 * @return string
116
-	 */
117
-	public function mergeChunks(): string
118
-	{
119
-		$result = '';
120
-		foreach ($this->downloads as $chunk) {
121
-			$result .= file_get_contents($chunk['location']);
122
-		}
123
-		return $result;
124
-	}
125
-
126
-	/**
127
-	 * Save the merged chunks to a file
128
-	 *
129
-	 * @param string $filePath The path/to/file.ext
130
-	 * @return bool
131
-	 */
132
-	public function save(string $filePath): bool
133
-	{
134
-		$pathInfo = pathinfo($filePath, PATHINFO_DIRNAME);
135
-		if (gettype($pathInfo) != "string") $pathInfo = $pathInfo['dirname'];
136
-		if (!file_exists($pathInfo)) {
137
-			throw new \InvalidArgumentException('The directory does not exist');
138
-		}
139
-		$result = $this->mergeChunks();
140
-		$this->cleanChunks();
141
-		return file_put_contents($filePath, $result) !== false;
142
-	}
143
-
144
-	/**
145
-	 * Clean the directory of the chunks
146
-	 *
147
-	 * @return void
148
-	 */
149
-	public function cleanChunks(): void
150
-	{
151
-		foreach (glob($this->chunksPath . DIRECTORY_SEPARATOR . '*') as $file) {
152
-			unlink($file);
153
-		}
154
-		rmdir($this->chunksPath);
155
-	}
15
+    /**
16
+     * The unique identifier of the download
17
+     *
18
+     * @var string
19
+     */
20
+    public string $id;
21
+
22
+    /**
23
+     * The final size of the downloaded file
24
+     *
25
+     * @var int
26
+     */
27
+    public int $fileSize;
28
+
29
+    /**
30
+     * The path of the downloaded chunks
31
+     *
32
+     * @var string
33
+     */
34
+    public string $chunksPath;
35
+
36
+    /**
37
+     * The size of each chunk
38
+     *
39
+     * @var int
40
+     */
41
+    public int $chunkSize;
42
+
43
+    /**
44
+     * The count of chunks
45
+     *
46
+     * @var int
47
+     */
48
+    public int $chunks;
49
+
50
+    /**
51
+     * Start time of the download in timestamp.
52
+     *
53
+     * @var int
54
+     */
55
+    public int $startTime;
56
+
57
+    /**
58
+     * End time of the download in timestamp.
59
+     *
60
+     * @var int
61
+     */
62
+    public int $endTime;
63
+
64
+    /**
65
+     * The downloaded chunks
66
+     *
67
+     * @var array [{id, size, location, elapsedTime}, ...]
68
+     */
69
+    public array $downloads;
70
+
71
+    /**
72
+     * Add a chunk to the download result
73
+     *
74
+     * @param string $id The unique identifier of the chunk
75
+     * @param ?string $body The chunk body
76
+     * @param float $elapsedTime in microseconds
77
+     * @return void
78
+     */
79
+    public function addChunk(string $id, ?string $body, float $elapsedTime): void
80
+    {
81
+        $data = [
82
+            'id' => $id,
83
+            'location' => null,
84
+            'size' => 0,
85
+            'elapsed_time' => $elapsedTime,
86
+            'status' => 'failed',
87
+        ];
88
+        if ($body !== null) {
89
+            $save = $this->saveChunk($id, $body);
90
+            $data = array_merge($data, [
91
+                'location' => $save ?? null,
92
+                'size' => strlen($body),
93
+                'status' => $save ? 'saved' : 'failed',
94
+            ]);
95
+        }
96
+        $this->downloads[] = $data;
97
+    }
98
+
99
+    /**
100
+     * Save the chunks to the temp directory
101
+     *
102
+     * @param string $id The unique identifier of the chunk
103
+     * @param string $body The body of the chunk
104
+     * @return string|bool
105
+     */
106
+    private function saveChunk(string $id, string $body): string|bool
107
+    {
108
+        $path = $this->chunksPath . DIRECTORY_SEPARATOR . $id;
109
+        return file_put_contents($path, $body) ? $path : false;
110
+    }
111
+
112
+    /**
113
+     * Merge the chunks into a single string
114
+     *
115
+     * @return string
116
+     */
117
+    public function mergeChunks(): string
118
+    {
119
+        $result = '';
120
+        foreach ($this->downloads as $chunk) {
121
+            $result .= file_get_contents($chunk['location']);
122
+        }
123
+        return $result;
124
+    }
125
+
126
+    /**
127
+     * Save the merged chunks to a file
128
+     *
129
+     * @param string $filePath The path/to/file.ext
130
+     * @return bool
131
+     */
132
+    public function save(string $filePath): bool
133
+    {
134
+        $pathInfo = pathinfo($filePath, PATHINFO_DIRNAME);
135
+        if (gettype($pathInfo) != "string") $pathInfo = $pathInfo['dirname'];
136
+        if (!file_exists($pathInfo)) {
137
+            throw new \InvalidArgumentException('The directory does not exist');
138
+        }
139
+        $result = $this->mergeChunks();
140
+        $this->cleanChunks();
141
+        return file_put_contents($filePath, $result) !== false;
142
+    }
143
+
144
+    /**
145
+     * Clean the directory of the chunks
146
+     *
147
+     * @return void
148
+     */
149
+    public function cleanChunks(): void
150
+    {
151
+        foreach (glob($this->chunksPath . DIRECTORY_SEPARATOR . '*') as $file) {
152
+            unlink($file);
153
+        }
154
+        rmdir($this->chunksPath);
155
+    }
156 156
 
157 157
 }
158 158
\ No newline at end of file
Please login to merge, or discard this patch.
Braces   +3 added lines, -1 removed lines patch added patch discarded remove patch
@@ -132,7 +132,9 @@
 block discarded – undo
132 132
 	public function save(string $filePath): bool
133 133
 	{
134 134
 		$pathInfo = pathinfo($filePath, PATHINFO_DIRNAME);
135
-		if (gettype($pathInfo) != "string") $pathInfo = $pathInfo['dirname'];
135
+		if (gettype($pathInfo) != "string") {
136
+		    $pathInfo = $pathInfo['dirname'];
137
+		}
136 138
 		if (!file_exists($pathInfo)) {
137 139
 			throw new \InvalidArgumentException('The directory does not exist');
138 140
 		}
Please login to merge, or discard this patch.
src/Model/HttpResponse.php 1 patch
Indentation   +76 added lines, -76 removed lines patch added patch discarded remove patch
@@ -35,90 +35,90 @@
 block discarded – undo
35 35
 class HttpResponse
36 36
 {
37 37
 
38
-	/**
39
-	 * Set the curl handle
40
-	 *
41
-	 * @param \CurlHandle $curlHandle
42
-	 * @return HttpResponse
43
-	 */
44
-	public function setCurlHandle(\CurlHandle $curlHandle): HttpResponse
45
-	{
46
-		$this->curlHandle = $curlHandle;
47
-		return $this;
48
-	}
38
+    /**
39
+     * Set the curl handle
40
+     *
41
+     * @param \CurlHandle $curlHandle
42
+     * @return HttpResponse
43
+     */
44
+    public function setCurlHandle(\CurlHandle $curlHandle): HttpResponse
45
+    {
46
+        $this->curlHandle = $curlHandle;
47
+        return $this;
48
+    }
49 49
 
50
-	/**
51
-	 * Get info from the curl handle
52
-	 *
53
-	 * @return CurlInfo|false
54
-	 */
55
-	public function getInfoFromCurl(): CurlInfo|false
56
-	{
57
-		if (empty($this->getCurlHandle())) {
58
-			return false;
59
-		}
50
+    /**
51
+     * Get info from the curl handle
52
+     *
53
+     * @return CurlInfo|false
54
+     */
55
+    public function getInfoFromCurl(): CurlInfo|false
56
+    {
57
+        if (empty($this->getCurlHandle())) {
58
+            return false;
59
+        }
60 60
 
61
-		return new CurlInfo(curl_getinfo($this->curlHandle));
62
-	}
61
+        return new CurlInfo(curl_getinfo($this->curlHandle));
62
+    }
63 63
 
64
-	/**
65
-	 * Set the headers of the response
66
-	 *
67
-	 * @param string $headers
68
-	 * @return HttpResponse
69
-	 */
70
-	public function setHeaders(string $headers): HttpResponse
71
-	{
72
-		$result = [];
73
-		$lines = explode("\r\n", $headers);
74
-		foreach ($lines as $line) {
75
-			if (str_contains($line, ':')) {
76
-				$parts = explode(':', $line);
77
-				$result[trim($parts[0])] = trim($parts[1]);
78
-			}
79
-		}
80
-		$this->headers = $result;
81
-		return $this;
82
-	}
64
+    /**
65
+     * Set the headers of the response
66
+     *
67
+     * @param string $headers
68
+     * @return HttpResponse
69
+     */
70
+    public function setHeaders(string $headers): HttpResponse
71
+    {
72
+        $result = [];
73
+        $lines = explode("\r\n", $headers);
74
+        foreach ($lines as $line) {
75
+            if (str_contains($line, ':')) {
76
+                $parts = explode(':', $line);
77
+                $result[trim($parts[0])] = trim($parts[1]);
78
+            }
79
+        }
80
+        $this->headers = $result;
81
+        return $this;
82
+    }
83 83
 
84
-	/**
85
-	 * Get a key from the response headers
86
-	 *
87
-	 * @param string $key
88
-	 * @return mixed
89
-	 */
90
-	public function getHeaderLine(string $key): mixed
91
-	{
92
-		return array_change_key_case($this->headers, CASE_LOWER)[strtolower($key)] ?? null;
93
-	}
84
+    /**
85
+     * Get a key from the response headers
86
+     *
87
+     * @param string $key
88
+     * @return mixed
89
+     */
90
+    public function getHeaderLine(string $key): mixed
91
+    {
92
+        return array_change_key_case($this->headers, CASE_LOWER)[strtolower($key)] ?? null;
93
+    }
94 94
 
95
-	/**
96
-	 * @param string $name
97
-	 * @param array $arguments
98
-	 * @return mixed
99
-	 */
100
-	public function __call(string $name, array $arguments): mixed
101
-	{
102
-		if (property_exists($this, $name)) {
103
-			return $this->{$name};
104
-		}
95
+    /**
96
+     * @param string $name
97
+     * @param array $arguments
98
+     * @return mixed
99
+     */
100
+    public function __call(string $name, array $arguments): mixed
101
+    {
102
+        if (property_exists($this, $name)) {
103
+            return $this->{$name};
104
+        }
105 105
 
106
-		if (method_exists($this, $name)) {
107
-			return $this->{$name}();
108
-		}
106
+        if (method_exists($this, $name)) {
107
+            return $this->{$name}();
108
+        }
109 109
 
110
-		if (str_starts_with($name, 'get')) {
111
-			$property = lcfirst(substr($name, 3));
112
-			return $this->{$property} ?? null;
113
-		}
110
+        if (str_starts_with($name, 'get')) {
111
+            $property = lcfirst(substr($name, 3));
112
+            return $this->{$property} ?? null;
113
+        }
114 114
 
115
-		if (str_starts_with($name, 'set')) {
116
-			$property = lcfirst(substr($name, 3));
117
-			$this->{$property} = $arguments[0] ?? null;
118
-			return $this;
119
-		}
115
+        if (str_starts_with($name, 'set')) {
116
+            $property = lcfirst(substr($name, 3));
117
+            $this->{$property} = $arguments[0] ?? null;
118
+            return $this;
119
+        }
120 120
 
121
-		throw new \BadMethodCallException("Method $name does not exist");
122
-	}
121
+        throw new \BadMethodCallException("Method $name does not exist");
122
+    }
123 123
 
124 124
 }
125 125
\ No newline at end of file
Please login to merge, or discard this patch.