12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- import ujson
- import requests
- class CtmsApi(object):
- def __init__(self, user, password, url):
- self.user = user
- self.password = password
- self.url = url
- def __call__(self, path, params=None, body=None):
- token = self.generate_token()
- print('获取Token:', token)
- if not params:
- params = {'access_token': token}
- else:
- params['access_token'] = token
- resp = requests.post('%s%s' % (self.url, path), params=params, json=body, timeout=30)
- if resp.status_code == 200:
- result = resp.text
- if result:
- return ujson.loads(result)
- elif resp.status_code == 401:
- print('ctms token invalidate')
- return {'code': resp.status_code, 'message': '401 Forbidden'}
- else:
- print('ctms error with unknown code: %d' % resp.status_code)
- return {'code': resp.status_code, 'message': None}
- def generate_token(self):
- """
- 生成token,token一般只需生成一次即可,有效期一年,
- 之后每次获取到的token值均相同,除非使用刷新token接口,
- 此处为方便,每次调用接口时都获取token,实际不建议这么做,
- 如果对安全性要求比较高,可以每隔几小时刷新一次token,
- 否则获取一次以后设置为常量即可
- """
- body = {
- 'userName': self.user,
- 'password': self.password
- }
- response = requests.post(url=self.url + '/user/generate_access_token/v2', json=body, timeout=30)
- if response.status_code != 200:
- return ''
- result = response.text
- if not result:
- return ''
- json_result = ujson.loads(result)
- data = json_result.get('data')
- if not data:
- return ''
- return data.get('accessToken')
|