| import httpx | |
| from colorama import Fore, Style # type: ignore[import] | |
| from langchain_core.tools import tool | |
| HTTP_HEADERS = { | |
| "User-Agent": ( | |
| "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " | |
| "AppleWebKit/537.36 (KHTML, like Gecko) " | |
| "Chrome/120.0.0.0 Safari/537.36" | |
| ) | |
| } | |
| def http_get(url: str) -> str: | |
| """Send an HTTP GET request to the given URL and return the response text. | |
| Useful for fetching web pages, API responses, or any text-based content | |
| from the internet. | |
| Args: | |
| url: The URL to send the GET request to. | |
| Returns: | |
| The response body as text, or an error message on failure. | |
| """ | |
| try: | |
| print(f"{Fore.CYAN}[HTTP GET] {url}{Style.RESET_ALL}") | |
| resp = httpx.get(url, headers=HTTP_HEADERS, follow_redirects=True, timeout=60) | |
| resp.raise_for_status() | |
| print(f"{Fore.CYAN}[HTTP GET] Status: {resp.status_code} | " | |
| f"Length: {len(resp.text)} chars{Style.RESET_ALL}") | |
| return resp.text | |
| except Exception as e: | |
| return f"Error fetching URL: {e}" | |