feat: add workhoster gateway API
This commit is contained in:
@@ -10,6 +10,7 @@ import { ConfigManager } from './classes.config.js';
|
||||
import { LogManager } from './classes.logs.js';
|
||||
import { EmailManager } from './classes.email.js';
|
||||
import { RadiusManager } from './classes.radius.js';
|
||||
import { WorkHosterManager } from './classes.workhoster.js';
|
||||
|
||||
export interface IDcRouterApiClientOptions {
|
||||
baseUrl: string;
|
||||
@@ -31,6 +32,7 @@ export class DcRouterApiClient {
|
||||
public logs: LogManager;
|
||||
public emails: EmailManager;
|
||||
public radius: RadiusManager;
|
||||
public workHosters: WorkHosterManager;
|
||||
|
||||
constructor(options: IDcRouterApiClientOptions) {
|
||||
this.baseUrl = options.baseUrl.replace(/\/+$/, '');
|
||||
@@ -45,6 +47,7 @@ export class DcRouterApiClient {
|
||||
this.logs = new LogManager(this);
|
||||
this.emails = new EmailManager(this);
|
||||
this.radius = new RadiusManager(this);
|
||||
this.workHosters = new WorkHosterManager(this);
|
||||
}
|
||||
|
||||
// =====================
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
import * as interfaces from '../ts_interfaces/index.js';
|
||||
import type { DcRouterApiClient } from './classes.dcrouterapiclient.js';
|
||||
|
||||
export class WorkHosterManager {
|
||||
constructor(private clientRef: DcRouterApiClient) {}
|
||||
|
||||
public async getCapabilities(): Promise<interfaces.data.IGatewayCapabilities> {
|
||||
const response = await this.clientRef.request<interfaces.requests.IReq_GetGatewayCapabilities>(
|
||||
'getGatewayCapabilities',
|
||||
this.clientRef.buildRequestPayload() as any,
|
||||
);
|
||||
return response.capabilities;
|
||||
}
|
||||
|
||||
public async getDomains(): Promise<interfaces.data.IWorkHosterDomain[]> {
|
||||
const response = await this.clientRef.request<interfaces.requests.IReq_GetWorkHosterDomains>(
|
||||
'getWorkHosterDomains',
|
||||
this.clientRef.buildRequestPayload() as any,
|
||||
);
|
||||
return response.domains;
|
||||
}
|
||||
|
||||
public async syncRoute(options: {
|
||||
ownership: interfaces.data.IWorkAppRouteOwnership;
|
||||
route: interfaces.data.IDcRouterRouteConfig;
|
||||
enabled?: boolean;
|
||||
}): Promise<interfaces.data.IWorkAppRouteSyncResult> {
|
||||
return this.clientRef.request<interfaces.requests.IReq_SyncWorkAppRoute>(
|
||||
'syncWorkAppRoute',
|
||||
this.clientRef.buildRequestPayload({
|
||||
ownership: options.ownership,
|
||||
route: options.route,
|
||||
enabled: options.enabled,
|
||||
}) as any,
|
||||
);
|
||||
}
|
||||
|
||||
public async deleteRoute(
|
||||
ownership: interfaces.data.IWorkAppRouteOwnership,
|
||||
): Promise<interfaces.data.IWorkAppRouteSyncResult> {
|
||||
return this.clientRef.request<interfaces.requests.IReq_SyncWorkAppRoute>(
|
||||
'syncWorkAppRoute',
|
||||
this.clientRef.buildRequestPayload({
|
||||
ownership,
|
||||
delete: true,
|
||||
}) as any,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ export { Certificate, CertificateManager, type ICertificateSummary } from './cla
|
||||
export { ApiToken, ApiTokenBuilder, ApiTokenManager } from './classes.apitoken.js';
|
||||
export { RemoteIngress, RemoteIngressBuilder, RemoteIngressManager } from './classes.remoteingress.js';
|
||||
export { Email, EmailManager } from './classes.email.js';
|
||||
export { WorkHosterManager } from './classes.workhoster.js';
|
||||
|
||||
// Read-only managers
|
||||
export { StatsManager } from './classes.stats.js';
|
||||
|
||||
Reference in New Issue
Block a user