fix(core): update

This commit is contained in:
2024-02-17 21:55:25 +01:00
parent 332a4a4195
commit 929404fadd
8 changed files with 100 additions and 31 deletions

View File

@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@apiclient.xyz/hetznercloud',
version: '1.0.7',
version: '1.0.8',
description: 'an unofficial api client for the hetzner cloud api'
}

View File

@ -11,6 +11,10 @@ export class HetznerAccount {
return HetznerServer.getServers(this);
}
public async createServer(optionsArg: plugins.tsclass.typeFestOwn.SecondArgument<typeof HetznerServer.create>) {
return HetznerServer.create(this, optionsArg);
}
/**
* request things from the hetzner API
* @param methodArg
@ -19,6 +23,9 @@ export class HetznerAccount {
*/
public request = async (methodArg: string, pathArg: string, payloadArg: any) => {
const url = `https://api.hetzner.cloud/v1${pathArg}`;
console.log(`Url: ${url}`);
console.log(`Method: ${methodArg}`);
console.log(`Payload: ${JSON.stringify(payloadArg, null, 2)}`);
const response = await plugins.smartrequest.request(url, {
method: methodArg,
headers: {
@ -26,6 +33,8 @@ export class HetznerAccount {
},
requestBody: payloadArg,
});
console.log(response.statusCode);
console.log(response.body);
return response;
}
}

View File

@ -4,24 +4,33 @@ import * as types from './types.js';
export class HetznerServer {
// STATIC
public static async create(hetznerAccountRefArg: HetznerAccount, optionsArg: {
name: string,
datacenter: 'nbg1-dc3',
}) {
public static async create(
hetznerAccountRefArg: HetznerAccount,
optionsArg: {
name: string;
location: 'nbg1';
}
) {
const server = new HetznerServer(hetznerAccountRefArg);
const createServerUrl = '/servers';
const createServerPayload: types.TServerCreateRequestBody =
{
name: optionsArg.name,
datacenter: optionsArg.datacenter,
image: '',
server_type: '',
start_after_create: true,
user_data: '',
};
const response = await server.hetznerAccountRef.request('POST', createServerUrl, createServerPayload);
const createServerPayload: types.TServerCreateRequestBody = {
name: optionsArg.name,
image: 'ubuntu-22.04',
server_type: 'cx11',
start_after_create: true,
labels: {},
location: optionsArg.location,
public_net: {
enable_ipv4: true,
enable_ipv6: true,
},
};
const response = await server.hetznerAccountRef.request(
'POST',
createServerUrl,
createServerPayload
);
server.data = (response.body as types.TServerCreateResponseBody).server;
return server;
}
@ -29,7 +38,7 @@ export class HetznerServer {
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 serversDataArray = (response.body as types.TServersGetResponseBody).servers;
const servers: HetznerServer[] = [];
for (const serverData of serversDataArray) {
const server = new HetznerServer(hetznerAccountRefArg);

View File

@ -10,3 +10,10 @@ import * as smartrequest from '@push.rocks/smartrequest';
export {
smartrequest,
}
// @tsclass scope
import * as tsclass from '@tsclass/tsclass';
export {
tsclass,
}