import base64 import hashlib import hmac import os import shutil from datetime import datetime from time import mktime from urllib.parse import urlencode from wsgiref.handlers import format_date_time from sample.exception import FileNotFoundException, AssembleHeaderException from urllib import parse def get_file_bytes(fd): """ 根据文件路径(一般相对)获取二进制数据 :param fd: 文件路径 :return: 二进制数据,不存在时为 None供后续判断 """ if os.path.exists(fd): with open(fd, "rb") as f: wav_maker = f.read(4) if b'RIFF' == wav_maker: f.seek(44, 0) else: f.seek(0, 0) f_data = f.read() f.close() else: raise FileNotFoundException("{}:文件不存在".format(fd)) return f_data def del_file(filepath): """ 删除某一目录下的所有文件或文件夹 :param filepath: 路径 :return: """ if not os.path.exists(filepath): return del_list = os.listdir(filepath) for f in del_list: file_path = os.path.join(filepath, f) if os.path.isfile(file_path): os.remove(file_path) elif os.path.isdir(file_path): shutil.rmtree(file_path) # 生成鉴权的url def build_auth_request_url(request_url, method="POST", api_key="", api_secret=""): url_result = parse.urlparse(request_url) date = format_date_time(mktime(datetime.now().timetuple())) signature_origin = "host: {}\ndate: {}\n{} {} HTTP/1.1".format(url_result.hostname, date, method, url_result.path) signature_sha = hmac.new(api_secret.encode('utf-8'), signature_origin.encode('utf-8'), digestmod=hashlib.sha256).digest() signature_sha = base64.b64encode(signature_sha).decode(encoding='utf-8') authorization_origin = "api_key=\"%s\", algorithm=\"%s\", headers=\"%s\", signature=\"%s\"" % ( api_key, "hmac-sha256", "host date request-line", signature_sha) authorization = base64.b64encode(authorization_origin.encode('utf-8')).decode(encoding='utf-8') values = { "host": url_result.hostname, "date": date, "authorization": authorization } return request_url + "?" + urlencode(values)