feat: improve error returning and parsing logic

This commit is contained in:
Aarnav Tale
2025-04-03 03:00:38 -04:00
parent 234020eec5
commit 6a94e815f2
7 changed files with 56 additions and 38 deletions
+1 -14
View File
@@ -1,6 +1,7 @@
import { readFile } from 'node:fs/promises';
import { Agent, Dispatcher, request } from 'undici';
import log from '~/utils/log';
import ResponseError from './api-error';
export async function createApiClient(base: string, certPath?: string) {
if (!certPath) {
@@ -20,20 +21,6 @@ export async function createApiClient(base: string, certPath?: string) {
}
}
// Represents an error that occurred during a response
// Thrown when status codes are >= 400
export class ResponseError extends Error {
status: number;
response: string;
constructor(status: number, response: string) {
super(`Response Error (${status}): ${response}`);
this.name = 'ResponseError';
this.status = status;
this.response = response;
}
}
export class ApiClient {
private agent: Agent;
private base: string;
+8 -8
View File
@@ -3,10 +3,10 @@ export const Capabilities = {
// Can access the admin console
ui_access: 1 << 0,
// Read tailnet policy file
// Read tailnet policy file (unimplemented)
read_policy: 1 << 1,
// Write tailnet policy file
// Write tailnet policy file (unimplemented)
write_policy: 1 << 2,
// Read network configurations
@@ -16,13 +16,13 @@ export const Capabilities = {
// make subnet, or allow a node to be an exit node, enable HTTPS
write_network: 1 << 4,
// Read feature configuration
// Read feature configuration (unimplemented)
read_feature: 1 << 5,
// Write feature configuration, for example, enable Taildrop
// Write feature configuration, for example, enable Taildrop (unimplemented)
write_feature: 1 << 6,
// Configure user & group provisioning
// Configure user & group provisioning (unimplemented)
configure_iam: 1 << 7,
// Read machines, for example, see machine names and status
@@ -38,13 +38,13 @@ export const Capabilities = {
// approve users, make Admin
write_users: 1 << 11,
// Can generate authkeys
// Can generate authkeys (unimplemented)
generate_authkeys: 1 << 12,
// Can use any tag (without being tag owner)
// Can use any tag (without being tag owner) (unimplemented)
use_tags: 1 << 13,
// Write tailnet name
// Write tailnet name (unimplemented)
write_tailnet: 1 << 14,
// Owner flag