|
- #coding=utf8
- TRANSLATE = 'Chinese'
-
- class ReturnValue(dict):
- ''' turn return value of itchat into a boolean value
- for requests:
- ..code::python
-
- import requests
- r = requests.get('http://httpbin.org/get')
- print(ReturnValue(rawResponse=r)
-
- for normal dict:
- ..code::python
-
- returnDict = {
- 'BaseResponse': {
- 'Ret': 0,
- 'ErrMsg': 'My error msg', }, }
- print(ReturnValue(returnDict))
- '''
- def __init__(self, returnValueDict={}, rawResponse=None):
- if rawResponse:
- try:
- returnValueDict = rawResponse.json()
- except ValueError:
- returnValueDict = {
- 'BaseResponse': {
- 'Ret': -1004,
- 'ErrMsg': 'Unexpected return value', },
- 'Data': rawResponse.content, }
- for k, v in returnValueDict.items():
- self[k] = v
- if not 'BaseResponse' in self:
- self['BaseResponse'] = {
- 'ErrMsg': 'no BaseResponse in raw response',
- 'Ret': -1000, }
- if TRANSLATE:
- self['BaseResponse']['RawMsg'] = self['BaseResponse'].get('ErrMsg', '')
- self['BaseResponse']['ErrMsg'] = \
- TRANSLATION[TRANSLATE].get(
- self['BaseResponse'].get('Ret', '')) \
- or self['BaseResponse'].get('ErrMsg', u'No ErrMsg')
- self['BaseResponse']['RawMsg'] = \
- self['BaseResponse']['RawMsg'] or self['BaseResponse']['ErrMsg']
- def __nonzero__(self):
- return self['BaseResponse'].get('Ret') == 0
- def __bool__(self):
- return self.__nonzero__()
- def __str__(self):
- return '{%s}' % ', '.join(
- ['%s: %s' % (repr(k),repr(v)) for k,v in self.items()])
- def __repr__(self):
- return '<ItchatReturnValue: %s>' % self.__str__()
-
- TRANSLATION = {
- 'Chinese': {
- -1000: u'返回值不带BaseResponse',
- -1001: u'无法找到对应的成员',
- -1002: u'文件位置错误',
- -1003: u'服务器拒绝连接',
- -1004: u'服务器返回异常值',
- -1005: u'参数错误',
- -1006: u'无效操作',
- 0: u'请求成功',
- },
- }
|