@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
JavaScript
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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