import os import sys import requests from dotenv import load_dotenv def test_api_keys(): # Load environment variables from .env file load_dotenv() errors = [] # Test Google Custom Search API google_api_key = os.getenv('GOOGLE_API_KEY') google_cx = os.getenv('GOOGLE_CX') if not google_api_key or google_api_key == 'None': errors.append("GOOGLE_API_KEY is missing or set to 'None'") if not google_cx or google_cx == 'None': errors.append("GOOGLE_CX is missing or set to 'None'") if google_api_key and google_api_key != 'None' and google_cx and google_cx != 'None': try: google_url = f"https://www.googleapis.com/customsearch/v1?q=test&key={google_api_key}&cx={google_cx}&num=1" response = requests.get(google_url, timeout=10) if response.status_code != 200: errors.append(f"Google Custom Search API test failed: {response.status_code} - {response.text}") else: print("✅ Google Custom Search API key is valid") except Exception as e: errors.append(f"Google Custom Search API test error: {str(e)}") # Test NewsAPI news_api_key = os.getenv('NEWS_API_KEY') if not news_api_key or news_api_key == 'None': errors.append("NEWS_API_KEY is missing or set to 'None'") elif news_api_key != 'None': try: news_url = f"https://newsapi.org/v2/everything?q=test&apiKey={news_api_key}&pageSize=1" response = requests.get(news_url, timeout=10) if response.status_code != 200: errors.append(f"NewsAPI test failed: {response.status_code} - {response.text}") else: print("✅ NewsAPI key is valid") except Exception as e: errors.append(f"NewsAPI test error: {str(e)}") # Test FinHub API finhub_api_key = os.getenv('FINHUB_API_KEY') if not finhub_api_key or finhub_api_key == 'None': errors.append("FINHUB_API_KEY is missing or set to 'None'") elif finhub_api_key != 'None': try: finhub_url = f"https://finnhub.io/api/v1/news?category=general&token={finhub_api_key}" response = requests.get(finhub_url, timeout=10) if response.status_code != 200: errors.append(f"FinHub API test failed: {response.status_code} - {response.text}") else: print("✅ FinHub API key is valid") except Exception as e: errors.append(f"FinHub API test error: {str(e)}") # Report errors if any if errors: print("\n❌ API Key Tests Failed:") for error in errors: print(f" - {error}") print("\nPlease check your .env file and ensure all API keys are properly set.") sys.exit(1) else: print("\n✅ All API keys are valid and working!") return True if __name__ == "__main__": print("Testing API keys from .env file...") test_api_keys()