from flask import Flask, request, jsonify import requests import os app = Flask(__name__) # Base URL for the proxied API BASE_URL = "https://api.chatanywhere.org/" # API Key from environment variables API_KEY = os.getenv("openaikey") if not API_KEY: raise ValueError("API key not found in environment variables") @app.route('/', defaults={'path': ''}, methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH']) @app.route('/', methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH']) def proxy(path): proxied_url = BASE_URL + path params = request.args.to_dict() data = request.get_data() if request.method in ['POST', 'PUT', 'PATCH'] else None headers = {key: value for key, value in request.headers if key.lower() != 'host'} headers['Authorization'] = f"Bearer {API_KEY}" app.logger.info(f"Forwarding request to {proxied_url} with headers: {headers} and data: {data}") try: response = requests.request( method=request.method, url=proxied_url, params=params, data=data, headers=headers ) app.logger.info(f"Received response: {response.status_code}, {response.content.decode('latin1')}") return (response.content, response.status_code, response.headers.items()) except requests.exceptions.RequestException as e: app.logger.error(f"Error during request: {str(e)}") return jsonify({ "error": { "proxy_note": "Server unavailable", "details": str(e) } }), 500 if __name__ == '__main__': app.run(host='0.0.0.0', port=7860, debug=True)