From 8322e8defd400d80ba2451e0180afd9adf19616e Mon Sep 17 00:00:00 2001 From: Philipp Kunz Date: Mon, 29 Jan 2024 21:14:05 +0100 Subject: [PATCH] fix(core): update --- readme.md | 12 ++++++++++-- ts/00_commitinfo_data.ts | 2 +- ts/classes.account.ts | 5 +++-- ts/classes.server.ts | 15 ++++++++++++++- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/readme.md b/readme.md index d914270..439e636 100644 --- a/readme.md +++ b/readme.md @@ -23,8 +23,16 @@ PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/ BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@apiclient.xyz/hetznercloud)](https://lossless.cloud) ## Usage -Use TypeScript for best in class intellisense -For further information read the linked docs at the top of this readme. +A modern approach to talking to the hetzner API. + +```typescript +import hetznerCloud from '@apiclient.xyz/hetznercloud' +const myhetznerAccount = new hetznerCloud.HetznerAccount('myToken'); +const servers = const myhetznerAccount.getServers(); +for (const server of servers) { + await server.delete(); +} +``` ## Legal > MIT licensed | **©** [Task Venture Capital GmbH](https://task.vc) diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index a33265a..0222bab 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@apiclient.xyz/hetznercloud', - version: '1.0.2', + version: '1.0.3', description: 'an unofficial api client for the hetzner cloud api' } diff --git a/ts/classes.account.ts b/ts/classes.account.ts index e24a67c..fad4049 100644 --- a/ts/classes.account.ts +++ b/ts/classes.account.ts @@ -1,3 +1,4 @@ +import { HetznerServer } from './classes.server.js'; import * as plugins from './hetznercloud.plugins.js'; export class HetznerAccount { @@ -6,8 +7,8 @@ export class HetznerAccount { this.token = tokenArg; } - getServers() { - + public async getServers() { + return HetznerServer.getServers(this); } /** diff --git a/ts/classes.server.ts b/ts/classes.server.ts index cb7317e..0cad1a6 100644 --- a/ts/classes.server.ts +++ b/ts/classes.server.ts @@ -4,7 +4,7 @@ import * as types from './types.js'; export class HetznerServer { // STATIC - static async create(hetznerAccountRefArg: HetznerAccount, optionsArg: { + public static async create(hetznerAccountRefArg: HetznerAccount, optionsArg: { name: string, datacenter: 'nbg1-dc3', }) { @@ -26,6 +26,19 @@ export class HetznerServer { return server; } + public static async getServers(hetznerAccountRefArg: HetznerAccount) { + const serversGetUrl = '/servers'; + const response = await hetznerAccountRefArg.request('GET', serversGetUrl, {}); + const serversDataArray = (response.body as types.TServersGetResponseBody).servers; + const servers: HetznerServer[] = []; + for (const serverData of serversDataArray) { + const server = new HetznerServer(hetznerAccountRefArg); + server.data = serverData; + servers.push(server); + } + return servers; + } + // INSTANCE public hetznerAccountRef: HetznerAccount; public data: types.IServer;