UNPKG

@serve.zone/api

Version:

The `@serve.zone/api` module is a robust and versatile API client, designed to facilitate seamless communication with various cloud resources managed by the Cloudly platform. This API client extends a rich set of functionalities, offering developers a com

166 lines 14.2 kB
import * as plugins from './plugins.js'; import { Image } from './classes.image.js'; import { Service } from './classes.service.js'; import { Cluster } from './classes.cluster.js'; import { SecretBundle } from './classes.secretbundle.js'; import { SecretGroup } from './classes.secretgroup.js'; import { ExternalRegistry } from './classes.externalregistry.js'; export class CloudlyApiClient { constructor(optionsArg) { this.typedrouter = new plugins.typedrequest.TypedRouter(); // Subjects this.configUpdateSubject = new plugins.smartrx.rxjs.Subject(); this.serverActionSubject = new plugins.smartrx.rxjs.Subject(); this.externalRegistry = { // ExternalRegistry getRegistryById: async (registryNameArg) => { return ExternalRegistry.getExternalRegistryById(this, registryNameArg); }, getRegistries: async () => { return ExternalRegistry.getExternalRegistries(this); }, createRegistry: async (optionsArg) => { return ExternalRegistry.createExternalRegistry(this, optionsArg); } }; this.image = { // Images getImageById: async (imageIdArg) => { return Image.getImageById(this, imageIdArg); }, getImages: async () => { return Image.getImages(this); }, createImage: async (optionsArg) => { return Image.createImage(this, optionsArg); } }; this.services = { // Services getServiceById: async (serviceIdArg) => { return Service.getServiceById(this, serviceIdArg); }, getServices: async () => { return Service.getServices(this); }, createService: async (optionsArg) => { return Service.createService(this, optionsArg); } }; this.cluster = { // Clusters getClusterById: async (clusterIdArg) => { return Cluster.getClusterById(this, clusterIdArg); }, getClusters: async () => { return Cluster.getClusters(this); }, createCluster: async (optionsArg) => { return Cluster.createCluster(this, optionsArg); } }; this.secretbundle = { // SecretBundles getSecretBundleById: async (secretBundleIdArg) => { return SecretBundle.getSecretBundleById(this, secretBundleIdArg); }, getSecretBundles: async () => { return SecretBundle.getSecretBundles(this); }, createSecretBundle: async (optionsArg) => { return SecretBundle.createSecretBundle(this, optionsArg); } }; this.secretgroup = { // SecretGroups getSecretGroupById: async (secretGroupIdArg) => { return SecretGroup.getSecretGroupById(this, secretGroupIdArg); }, getSecretGroups: async () => { return SecretGroup.getSecretGroups(this); }, createSecretGroup: async (optionsArg) => { return SecretGroup.createSecretGroup(this, optionsArg); } }; this.registerAs = optionsArg.registerAs; this.cloudlyUrl = optionsArg?.cloudlyUrl || process.env.CLOUDLY_URL || 'https://cloudly.layer.io:443'; console.log(`creating LoleCloudlyClient: registering as ${this.registerAs} and target url ${this.cloudlyUrl}`); this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('pushClusterConfig', async (dataArg) => { this.configUpdateSubject.next(dataArg); return {}; })); this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('triggerServerAction', async (dataArg) => { this.serverActionSubject.next(dataArg); return { actionConfirmed: true, }; })); } async start() { this.typedsocketClient = await plugins.typedsocket.TypedSocket.createClient(this.typedrouter, this.cloudlyUrl); console.log(`CloudlyClient connected to cloudly at ${this.cloudlyUrl}. Remember to get an identity.`); } async stop() { await this.typedsocketClient.stop(); } async getIdentityByToken(token, optionsArg) { optionsArg = Object.assign({}, { tagConnection: false, statefullIdentity: true, }, optionsArg); const identityRequest = this.typedsocketClient.createTypedRequest('getIdentityByToken'); console.log(`trying to get identity from cloudly with supplied jumpCodeArg: ${token}`); const response = await identityRequest.fire({ token: token, }); console.log('got identity response'); const identity = response.identity; if (optionsArg.tagConnection) { this.typedsocketClient.addTag('identity', identity); } if (optionsArg.statefullIdentity) { this.identity = identity; } return identity; } /** * will use statefull identity by default */ async getClusterConfigFromCloudlyByIdentity(identityArg = this.identity) { const clusterConfigRequest = this.typedsocketClient.createTypedRequest('getClusterConfig'); const response = await clusterConfigRequest.fire({ identity: identityArg, }); return response.configData; } /** * will use statefull identity by default */ async getServerConfigFromCloudlyByIdentity(identityArg = this.identity) { const serverConfigRequest = this.typedsocketClient.createTypedRequest('getServerConfig'); const response = await serverConfigRequest.fire({ identity: identityArg, serverId: '', // TODO: get server id here }); return response.configData; } /** * gets a certificate for a domain used by a service */ async getCertificateForDomain(optionsArg) { optionsArg.identity = optionsArg.identity || this.identity; if (!optionsArg.identity) { throw new Error('identity is required. Either provide one or login first.'); } const typedCertificateRequest = this.typedsocketClient.createTypedRequest('getCertificateForDomain'); const typedResponse = await typedCertificateRequest.fire({ identity: this.identity, // do proper auth here domainName: optionsArg.domainName, type: optionsArg.type, }); return typedResponse.certificate; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jbG91ZGx5YXBpY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfYXBpY2xpZW50L2NsYXNzZXMuY2xvdWRseWFwaWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUl4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWpFLE1BQU0sT0FBTyxnQkFBZ0I7SUFnQjNCLFlBQVksVUFHWDtRQWZNLGdCQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRzVELFdBQVc7UUFDSix3QkFBbUIsR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFFMUQsQ0FBQztRQUVHLHdCQUFtQixHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUUxRCxDQUFDO1FBeUlHLHFCQUFnQixHQUFHO1lBQ3hCLG1CQUFtQjtZQUNuQixlQUFlLEVBQUUsS0FBSyxFQUFFLGVBQXVCLEVBQUUsRUFBRTtnQkFDakQsT0FBTyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDekUsQ0FBQztZQUNELGFBQWEsRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDeEIsT0FBTyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJ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