main-site/pages/api/containers.tsx
2023-03-14 22:32:53 +01:00

34 lines
1,023 B
TypeScript

import Docker from 'dockerode'
import ApiSecret from '../../private/portainer_api_secret.json'
import { DockerInfo } from '../../interfaces/DockerStatus';
import { ServiceLocation } from '../../interfaces/CardTypes';
export default async function ContainersAPI(req: any, res: any) {
const token = JSON.parse(JSON.stringify(ApiSecret.token));
try {
const res1 = await fetch('https://portainer.neshweb.net/api/endpoints/2/docker/containers/json', {
method: "GET",
headers: {"X-API-Key": token}
});
const unparsed = await res1.json();
let list: DockerInfo[] = [];
unparsed.forEach((entry: any) => {
let newEntry = {} as DockerInfo;
newEntry.name = entry.Names[0].substring(1);
newEntry.status = entry.State;
newEntry.id = entry.Id;
newEntry.location = ServiceLocation.tower_0;
list.push(newEntry);
});
res.status(200).json(list);
}
catch (error) {
console.log(error);
res.status(500).json({ error: 'Error reading data' });
}
}