stock_pred / backend /test_api_keys.py
Fahad10inb's picture
Update backend/test_api_keys.py
6892171 verified
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()