Spaces:
Runtime error
Runtime error
from flask import Flask, request, jsonify | |
import hmac | |
import hashlib | |
import requests | |
import time | |
from datetime import datetime | |
app = Flask(__name__) | |
# Configuration (to be moved to environment variables in production) | |
API_BASE_URL = "https://open-api.bingx.com" | |
API_KEY = "" # Replace with environment variable or secure storage | |
API_SECRET = "" # Replace with environment variable or secure storage | |
# Generate Signature | |
def generate_signature(api_secret, params_str): | |
return hmac.new(api_secret.encode("utf-8"), params_str.encode("utf-8"), hashlib.sha256).hexdigest() | |
# Parse Parameters | |
def parse_params(params): | |
sorted_keys = sorted(params.keys()) | |
param_pairs = [f"{key}={params[key]}" for key in sorted_keys] | |
params_str = "&".join(param_pairs) | |
return params_str + "×tamp=" + str(int(time.time() * 1000)) if params_str else "timestamp=" + str(int(time.time() * 1000)) | |
# Proxy Endpoint for API Requests | |
def proxy_api(): | |
try: | |
endpoint = request.args.get('endpoint') | |
params = {key: value for key, value in request.args.items() if key != 'endpoint'} | |
params['recvWindow'] = params.get('recvWindow', '5000') | |
params_str = parse_params(params) | |
signature = generate_signature(API_SECRET, params_str) | |
url = f"{API_BASE_URL}{endpoint}?{params_str}&signature={signature}" | |
headers = { | |
'X-BX-APIKEY': API_KEY, | |
'Content-Type': 'application/json' | |
} | |
response = requests.get(url, headers=headers) | |
response.raise_for_status() | |
return jsonify(response.json()) | |
except requests.exceptions.RequestException as e: | |
return jsonify({"error": str(e), "status_code": e.response.status_code if e.response else 500}), 500 | |
except Exception as e: | |
return jsonify({"error": str(e)}), 500 | |
if __name__ == '__main__': | |
app.run(host='0.0.0.0', port=7860, debug=True) |