Path: blob/1.0-develop/resources/scripts/api/transformers.ts
7460 views
import { Allocation } from '@/api/server/getServer';1import { FractalResponseData } from '@/api/http';2import { FileObject } from '@/api/server/files/loadDirectory';3import { ServerBackup, ServerEggVariable } from '@/api/server/types';45export const rawDataToServerAllocation = (data: FractalResponseData): Allocation => ({6id: data.attributes.id,7ip: data.attributes.ip,8alias: data.attributes.ip_alias,9port: data.attributes.port,10notes: data.attributes.notes,11isDefault: data.attributes.is_default,12});1314export const rawDataToFileObject = (data: FractalResponseData): FileObject => ({15key: `${data.attributes.is_file ? 'file' : 'dir'}_${data.attributes.name}`,16name: data.attributes.name,17mode: data.attributes.mode,18modeBits: data.attributes.mode_bits,19size: Number(data.attributes.size),20isFile: data.attributes.is_file,21isSymlink: data.attributes.is_symlink,22mimetype: data.attributes.mimetype,23createdAt: new Date(data.attributes.created_at),24modifiedAt: new Date(data.attributes.modified_at),2526isArchiveType: function () {27return (28this.isFile &&29[30'application/vnd.rar', // .rar31'application/x-rar-compressed', // .rar (2)32'application/x-tar', // .tar33'application/x-br', // .tar.br34'application/x-bzip2', // .tar.bz2, .bz235'application/gzip', // .tar.gz, .gz36'application/x-gzip',37'application/x-lzip', // .tar.lz4, .lz4 (not sure if this mime type is correct)38'application/x-sz', // .tar.sz, .sz (not sure if this mime type is correct)39'application/x-xz', // .tar.xz, .xz40'application/zstd', // .tar.zst, .zst41'application/zip', // .zip42'application/x-7z-compressed', // .7z43].indexOf(this.mimetype) >= 044);45},4647isEditable: function () {48if (this.isArchiveType() || !this.isFile) return false;4950const matches = ['application/jar', 'application/octet-stream', 'inode/directory', /^image\/(?!svg\+xml)/];5152return matches.every((m) => !this.mimetype.match(m));53},54});5556export const rawDataToServerBackup = ({ attributes }: FractalResponseData): ServerBackup => ({57uuid: attributes.uuid,58isSuccessful: attributes.is_successful,59isLocked: attributes.is_locked,60name: attributes.name,61ignoredFiles: attributes.ignored_files,62checksum: attributes.checksum,63bytes: attributes.bytes,64createdAt: new Date(attributes.created_at),65completedAt: attributes.completed_at ? new Date(attributes.completed_at) : null,66});6768export const rawDataToServerEggVariable = ({ attributes }: FractalResponseData): ServerEggVariable => ({69name: attributes.name,70description: attributes.description,71envVariable: attributes.env_variable,72defaultValue: attributes.default_value,73serverValue: attributes.server_value,74isEditable: attributes.is_editable,75rules: attributes.rules.split('|'),76});777879