import http from '@/api/http'; export interface Allocation { ip: string; alias: string | null; port: number; default: boolean; } export interface Server { id: string; uuid: string; name: string; node: string; sftpDetails: { ip: string; port: number; }; description: string; allocations: Allocation[]; limits: { memory: number; swap: number; disk: number; io: number; cpu: number; threads: string; }; featureLimits: { databases: number; allocations: number; backups: number; }; isSuspended: boolean; isInstalling: boolean; } export const rawDataToServerObject = (data: any): Server => ({ id: data.identifier, uuid: data.uuid, name: data.name, node: data.node, sftpDetails: { ip: data.sftp_details.ip, port: data.sftp_details.port, }, description: data.description ? ((data.description.length > 0) ? data.description : null) : null, allocations: [ { ip: data.allocation.ip, alias: null, port: data.allocation.port, default: true, } ], limits: { ...data.limits }, featureLimits: { ...data.feature_limits }, isSuspended: data.is_suspended, isInstalling: data.is_installing, }); export default (uuid: string): Promise<[ Server, string[] ]> => { return new Promise((resolve, reject) => { http.get(`/api/client/servers/${uuid}`) .then(({ data }) => resolve([ rawDataToServerObject(data.attributes), data.meta?.is_server_owner ? ['*'] : (data.meta?.user_permissions || []), ])) .catch(reject); }); };