Spaces:
Sleeping
Sleeping
File size: 1,923 Bytes
e28d550 |
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 54 55 56 57 58 59 60 61 62 63 64 |
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 |