browse
Version:
Unified Browserbase CLI for browser automation and cloud APIs.
54 lines (53 loc) • 2.18 kB
JavaScript
import { Args, Flags } from "@oclif/core";
import { createBrowserbaseClient, outputJson, withBrowserbaseApi, writeOutputFile, } from "../../lib/cloud/api.js";
import { apiCommonFlags, toApiOptions } from "../../lib/cloud/flags.js";
import { BrowseCommand } from "../../base.js";
export default class Fetch extends BrowseCommand {
static description = "Retrieve webpage content using the lightweight Browserbase Fetch API.";
static examples = [
"browse cloud fetch https://www.google.com",
"browse cloud fetch https://example.com --allow-insecure-ssl --output page.html",
"browse cloud fetch https://example.com --allow-redirects --proxies",
];
static args = {
url: Args.string({ required: true, description: "URL to fetch." }),
};
static flags = {
...apiCommonFlags,
"allow-insecure-ssl": Flags.boolean({
description: "Bypass TLS certificate verification.",
}),
"allow-redirects": Flags.boolean({
description: "Follow HTTP redirects.",
}),
proxies: Flags.boolean({
description: "Enable Browserbase proxy support.",
}),
output: Flags.string({
description: "Write the fetched content to a file.",
helpValue: "<output>",
}),
};
async run() {
const { args, flags } = await this.parse(Fetch);
const client = createBrowserbaseClient(toApiOptions(flags));
const result = await withBrowserbaseApi("fetch", async () => await client.fetchAPI.create({
url: args.url,
allowInsecureSsl: flags["allow-insecure-ssl"],
allowRedirects: flags["allow-redirects"],
proxies: flags.proxies,
}));
if (flags.output) {
await writeOutputFile(flags.output, result.content);
outputJson({
ok: true,
outputPath: flags.output,
contentType: result.contentType,
statusCode: result.statusCode,
sizeBytes: Buffer.byteLength(result.content, "utf8"),
});
return;
}
outputJson(result);
}
}