Spaces:
Build error
Build error
| from pathlib import Path | |
| from agno.utils.log import log_info | |
| from httpx import URL, Client, HTTPStatusError, RequestError | |
| from pydantic import HttpUrl, ValidationError | |
| VALID_STATUS_CODE = 200 | |
| def is_url(value: str | None) -> bool: | |
| """ | |
| Check if a string is a valid URL. | |
| Args: | |
| value: The string to check. Can be None. | |
| Returns: | |
| bool: True if the string is a valid URL, False otherwise. | |
| """ | |
| if value is None: | |
| return False | |
| try: | |
| _ = HttpUrl(value) | |
| except ValidationError: | |
| return False | |
| return True | |
| def is_alive(url: HttpUrl) -> bool: | |
| """ | |
| Check if a given URL is accessible and returns its availability status. | |
| Args: | |
| url (HttpUrl): The URL to check for accessibility. | |
| Returns: | |
| bool: True if the URL is accessible with a valid status code, otherwise False. | |
| """ | |
| try: | |
| with Client() as client: | |
| response = client.get(str(url)) | |
| return response.status_code == VALID_STATUS_CODE | |
| except (RequestError, HTTPStatusError): | |
| return False | |
| def download_file(url: URL, path: Path) -> None: | |
| """ | |
| Download a file from a URL and save it to a local path. | |
| Args: | |
| url (URL): The URL to download the file from. | |
| path (Path): The local file path where the downloaded file will be saved. | |
| Returns: | |
| None | |
| """ | |
| log_info(f"Downloading {url} to {path}") | |
| with Client() as client: | |
| response = client.get(url) | |
| response.raise_for_status() | |
| path.write_bytes(response.content) | |
| log_info(f"Downloaded {url} to {path}") | |