"""HTTP Client with retries and delays.""" import time import requests from typing import Dict from google_play_scraper.config.settings import SETTINGS from google_play_scraper.exceptions import RateLimitError, RequestError session = requests.Session() def get(url: str, retries: int = 3, delay: float = 1.0) -> Dict: """Make GET request with retries.""" for attempt in range(retries): try: response = session.get(url, timeout=SETTINGS["timeout"]) response.raise_for_status() return response.json() except requests.exceptions.HTTPError as e: if response.status_code == 429: raise RateLimitError("Rate limit exceeded") raise RequestError(f"HTTP error: {e}") except requests.exceptions.RequestException as e: if attempt == retries - 1: raise RequestError(f"Request failed: {e}") time.sleep(delay) return {}