cloudflare/ts/cloudflare.classes.workermanager.ts

39 lines
1.3 KiB
TypeScript
Raw Permalink Normal View History

2022-09-27 17:23:20 +00:00
import * as plugins from './cloudflare.plugins.js';
import { CloudflareAccount } from './cloudflare.classes.account.js';
import { CloudflareWorker } from './cloudflare.classes.worker.js';
2019-07-18 09:51:56 +00:00
export class WorkerManager {
2019-07-18 12:44:45 +00:00
public cfAccount: CloudflareAccount;
2019-07-18 09:51:56 +00:00
constructor(cfAccountArg: CloudflareAccount) {
this.cfAccount = cfAccountArg;
}
2019-07-18 12:25:10 +00:00
public async createWorker(workerName: string, workerScript: string): Promise<plugins.ICloudflareTypes['Script']> {
if (!this.cfAccount.preselectedAccountId) {
throw new Error('No account selected. Please select it first on the account.');
}
const worker = await this.cfAccount.apiAccount.workers.scripts.content.update(workerName, {
account_id: this.cfAccount.preselectedAccountId,
"CF-WORKER-BODY-PART": workerScript,
2019-07-18 12:25:10 +00:00
});
return worker;
2019-07-18 12:25:10 +00:00
}
/**
* lists workers
*/
public async listWorkerScripts() {
if (!this.cfAccount.preselectedAccountId) {
throw new Error('No account selected. Please select it first on the account.');
}
const workerScripts: plugins.ICloudflareTypes['Script'][] = [];
for await (const scriptArg of this.cfAccount.apiAccount.workers.scripts.list({
account_id: this.cfAccount.preselectedAccountId,
})) {
workerScripts.push(scriptArg);
2020-02-09 17:36:29 +00:00
}
return workerScripts;
2019-07-18 12:25:10 +00:00
}
2019-07-18 09:51:56 +00:00
}