sdoc_question / tianshu.py
aimaswx's picture
Upload 4 files
e28d550 verified
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