Spaces:
Runtime error
Runtime error
File size: 1,949 Bytes
1fadf37 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
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
@app.route('/api/proxy', methods=['GET'])
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) |