一些有用的代码

 nadia     2020-05-13     3179     1   

欢迎来到银盒子的世界~

1.从a-zA-Z0-9生成指定数量的随机字符:(用于一些请求头里,需要拼接一个多少位的随机字符串)

ran_str = ''.join(random.sample(string.ascii_letters + string.digits, 8))
print ran_str

2.一般请求url的签名算法

sid = settings.cloopen_sub_sid if sub else settings.cloopen_sid  # 配置信息
auth_token = settings.cloopen_sub_auth_token if sub else \
    settings.cloopen_auth_token  # 配置信息
url = '/'.join((
    settings.cloopen_base_url, settings.cloopen_version,
    ('Sub' if sub else '') + 'Accounts', sid, uri))  参数拼接成字符串
timestamp = datetime.utcnow().strftime('%Y%m%d%H%M%S')
params = {'sig': hashlib.md5((sid + auth_token + timestamp)
                             .encode('utf-8')).hexdigest().upper()}
data = json.dumps(data).replace(' ', '')
headers = {
    aiohttp.hdrs.ACCEPT: 'application/json',
    aiohttp.hdrs.CONTENT_TYPE: 'application/json;charset=utf-8',
    aiohttp.hdrs.AUTHORIZATION: base64.b64encode(
        (sid + ':' + timestamp).encode('utf-8')).decode('utf-8'),
}
args = dict(params=params, data=data, headers=headers)
async with aiohttp.ClientSession() as session:
    async with session.post(url, **args) as resp:
        if resp.status == 200:
            return await resp.json()
        else:
            raise RuntimeError(resp.status)

文章评论

发表评论