import { WorkflowEntrypoint, WorkflowStep } from "cloudflare:workers";
import type { WorkflowEvent } from "cloudflare:workers";
type Params = { name: string };
type IPResponse = { result: { ipv4_cidrs: string[] } };
export class MyWorkflow extends WorkflowEntrypoint<Env, Params> {
async run(event: WorkflowEvent, step: WorkflowStep) {
const data = await step.do("fetch data", async () => {
const response = await fetch("https://api.cloudflare.com/client/v4/ips");
return await response.json();
});
await step.sleep("pause", "20 seconds");
const result = await step.do(
"process data",
{ retries: { limit: 3, delay: "5 seconds", backoff: "linear" } },
async () => {
return {
name: event.payload.name,
ipCount: data.result.ipv4_cidrs.length,
};
},
);
return result;
}
}
Originally posted by @flynnjustin24 in flynnjustin24/skills-hello-github-action#6 (comment)