UNPKG

browse

Version:

Unified Browserbase CLI for browser automation and cloud APIs.

54 lines (53 loc) 2.18 kB
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); } }