Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/resources/scripts/api/transformers.ts
7460 views
1
import { Allocation } from '@/api/server/getServer';
2
import { FractalResponseData } from '@/api/http';
3
import { FileObject } from '@/api/server/files/loadDirectory';
4
import { ServerBackup, ServerEggVariable } from '@/api/server/types';
5
6
export const rawDataToServerAllocation = (data: FractalResponseData): Allocation => ({
7
id: data.attributes.id,
8
ip: data.attributes.ip,
9
alias: data.attributes.ip_alias,
10
port: data.attributes.port,
11
notes: data.attributes.notes,
12
isDefault: data.attributes.is_default,
13
});
14
15
export const rawDataToFileObject = (data: FractalResponseData): FileObject => ({
16
key: `${data.attributes.is_file ? 'file' : 'dir'}_${data.attributes.name}`,
17
name: data.attributes.name,
18
mode: data.attributes.mode,
19
modeBits: data.attributes.mode_bits,
20
size: Number(data.attributes.size),
21
isFile: data.attributes.is_file,
22
isSymlink: data.attributes.is_symlink,
23
mimetype: data.attributes.mimetype,
24
createdAt: new Date(data.attributes.created_at),
25
modifiedAt: new Date(data.attributes.modified_at),
26
27
isArchiveType: function () {
28
return (
29
this.isFile &&
30
[
31
'application/vnd.rar', // .rar
32
'application/x-rar-compressed', // .rar (2)
33
'application/x-tar', // .tar
34
'application/x-br', // .tar.br
35
'application/x-bzip2', // .tar.bz2, .bz2
36
'application/gzip', // .tar.gz, .gz
37
'application/x-gzip',
38
'application/x-lzip', // .tar.lz4, .lz4 (not sure if this mime type is correct)
39
'application/x-sz', // .tar.sz, .sz (not sure if this mime type is correct)
40
'application/x-xz', // .tar.xz, .xz
41
'application/zstd', // .tar.zst, .zst
42
'application/zip', // .zip
43
'application/x-7z-compressed', // .7z
44
].indexOf(this.mimetype) >= 0
45
);
46
},
47
48
isEditable: function () {
49
if (this.isArchiveType() || !this.isFile) return false;
50
51
const matches = ['application/jar', 'application/octet-stream', 'inode/directory', /^image\/(?!svg\+xml)/];
52
53
return matches.every((m) => !this.mimetype.match(m));
54
},
55
});
56
57
export const rawDataToServerBackup = ({ attributes }: FractalResponseData): ServerBackup => ({
58
uuid: attributes.uuid,
59
isSuccessful: attributes.is_successful,
60
isLocked: attributes.is_locked,
61
name: attributes.name,
62
ignoredFiles: attributes.ignored_files,
63
checksum: attributes.checksum,
64
bytes: attributes.bytes,
65
createdAt: new Date(attributes.created_at),
66
completedAt: attributes.completed_at ? new Date(attributes.completed_at) : null,
67
});
68
69
export const rawDataToServerEggVariable = ({ attributes }: FractalResponseData): ServerEggVariable => ({
70
name: attributes.name,
71
description: attributes.description,
72
envVariable: attributes.env_variable,
73
defaultValue: attributes.default_value,
74
serverValue: attributes.server_value,
75
isEditable: attributes.is_editable,
76
rules: attributes.rules.split('|'),
77
});
78
79