Spaces:
Sleeping
Sleeping
import requests | |
import hashlib | |
import hmac | |
import base64 | |
import time | |
import uuid | |
import random | |
# ηζζ΅ζ°΄ε· | |
def generate_serial_number(): | |
uid = uuid.uuid4() | |
serial_number = uid.hex[:32] | |
return serial_number | |
# θ·ειζΊη | |
def generate_random_code(length=5): | |
characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" | |
code = "" | |
for _ in range(length): | |
code += random.choice(characters) | |
return code | |
# ηζηΎεεζΆι΄ζ³ | |
def generate_signature(scene_id, request_path, app_secret, random_key): | |
timestamp = str(int(time.time() * 1000)) | |
sign_string = f"{scene_id}&{timestamp}&{request_path}" | |
secret_key = app_secret + random_key | |
hmac_sha256 = hmac.new( | |
secret_key.encode(), | |
sign_string.encode(), | |
hashlib.sha256 | |
).hexdigest().encode() | |
signature = random_key + base64.b64encode(hmac_sha256).decode() | |
return signature, timestamp | |
class AiHelperClient: | |
def __init__(self, base_url, app_secret, scene_id): | |
self.base_url = base_url | |
self.app_secret = app_secret | |
self.random_key = generate_random_code() | |
self.scene_id = scene_id | |
self.session = requests.Session() | |
def post(self, endpoint, data): | |
signature, timestamp = generate_signature( | |
self.scene_id, | |
endpoint, | |
self.app_secret, | |
self.random_key | |
) | |
url = f"{self.base_url}{endpoint}" | |
headers = { | |
'Content-Type': 'application/json', | |
'x-signature': signature, | |
'x-timestamp': timestamp | |
} | |
try: | |
response = self.session.post(url, json=data, headers=headers) | |
response.raise_for_status() | |
return response.json() | |
except requests.RequestException as e: | |
return None |