diff --git a/app/api/server/route.ts b/app/api/server/route.ts index b4c58bd..a3d9935 100644 --- a/app/api/server/route.ts +++ b/app/api/server/route.ts @@ -1,4 +1,6 @@ +import { NezhaAPI, NezhaAPISafe } from "@/app/types/nezha-api"; +import { MakeOptional } from "@/app/types/utils"; import { NextResponse } from "next/server"; export async function GET(_: Request) { @@ -22,19 +24,38 @@ export async function GET(_: Request) { revalidate:1 } }); - const data = await response.json(); + const nezhaData = (await response.json()).result as NezhaAPI[]; + const data: { + live_servers: number; + offline_servers: number; + total_bandwidth: number; + result: NezhaAPISafe[] + } = { + live_servers: 0, + offline_servers: 0, + total_bandwidth: 0, + result: [] + } + data.live_servers = 0; data.offline_servers = 0; data.total_bandwidth = 0; - data.result.forEach((element: { status: { Uptime: number; NetOutTransfer: any; }; }) => { + data.result = nezhaData.map((element: MakeOptional) => { if (element.status.Uptime !== 0) { data.live_servers += 1; } else { data.offline_servers += 1; } data.total_bandwidth += element.status.NetOutTransfer; + + delete element.ipv4; + delete element.ipv6; + delete element.valid_ip; + + return element; }); + return NextResponse.json(data, { status: 200 }) } catch (error) { return NextResponse.json({ error: error }, { status: 200 }) diff --git a/app/types/nezha-api.ts b/app/types/nezha-api.ts new file mode 100644 index 0000000..a3ea59b --- /dev/null +++ b/app/types/nezha-api.ts @@ -0,0 +1,55 @@ +export type serverApi = { + live_servers: number; + offline_servers: number; + total_bandwidth: number; + result: NezhaAPISafe[]; +}; + +export type NezhaAPISafe = Omit; + +export interface NezhaAPI { + id: number; + name: string; + tag: string; + last_active: number; + ipv4: string; + ipv6: string; + valid_ip: string; + host: NezhaAPIHost; + status: NezhaAPIStatus; +} + +export interface NezhaAPIHost { + Platform: string; + PlatformVersion: string; + CPU: string[]; + MemTotal: number; + DiskTotal: number; + SwapTotal: number; + Arch: string; + Virtualization: string; + BootTime: number; + CountryCode: string; + Version: string; + GPU: null; +} + +export interface NezhaAPIStatus { + CPU: number; + MemUsed: number; + SwapUsed: number; + DiskUsed: number; + NetInTransfer: number; + NetOutTransfer: number; + NetInSpeed: number; + NetOutSpeed: number; + Uptime: number; + Load1: number; + Load5: number; + Load15: number; + TcpConnCount: number; + UdpConnCount: number; + ProcessCount: number; + Temperatures: number; + GPU: number; +} diff --git a/app/types/utils.ts b/app/types/utils.ts new file mode 100644 index 0000000..488df36 --- /dev/null +++ b/app/types/utils.ts @@ -0,0 +1 @@ +export type MakeOptional = Omit & Partial>;