diff --git a/examples/browser_routing.py b/examples/browser_routing.py index 68627ab..ff5ffcb 100644 --- a/examples/browser_routing.py +++ b/examples/browser_routing.py @@ -1,6 +1,4 @@ -"""Example: direct-to-VM browser routing for process exec and raw HTTP.""" - -from typing import Any, cast +"""Example: direct-to-VM browser routing for raw HTTP.""" import httpx @@ -8,17 +6,20 @@ def main() -> None: - with Kernel() as client: - browsers = cast(Any, client.browsers) - browser = browsers.create(headless=True) - try: - response = cast(httpx.Response, browsers.request(browser.session_id, "GET", "https://example.com")) - print("status", response.status_code) - - with browsers.stream(browser.session_id, "GET", "https://example.com") as streamed: - print("streamed-bytes", len(streamed.read())) - finally: - browsers.delete_by_id(browser.session_id) + client = Kernel() + + browser = client.browsers.create() + + # Raw browser curl: streams the response. Use for large responses, when you want to stream, + # or when you want httpx.Response semantics. + response: httpx.Response = client.browsers.request(browser.session_id, "GET", "https://example.com") + print("status", response.status_code) + + # Buffered browser curl: returns the full response in a JSON envelope. Use for small responses. + buffered = client.browsers.curl(browser.session_id, url="https://example.com", method="GET") + print("body", buffered.body) + + client.browsers.delete_by_id(browser.session_id) if __name__ == "__main__":