Skip to content

Commit 3ee80ea

Browse files
committed
Merge branch 'release/0.3.6'
2 parents 5aada96 + d36c47f commit 3ee80ea

File tree

2 files changed

+19
-16
lines changed

2 files changed

+19
-16
lines changed

wechat/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#encoding=utf-8
2-
VERSION = "0.3.5"
2+
VERSION = "0.3.6"
33

wechat/official.py

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -246,30 +246,32 @@ class WxApi(object):
246246

247247
API_PREFIX = 'https://api.weixin.qq.com/cgi-bin/'
248248

249-
def __init__(self, appid, appsecret):
249+
def __init__(self, appid, appsecret, api_entry=None):
250250
self.appid = appid
251251
self.appsecret = appsecret
252252
self._access_token = None
253-
self.expires_in = time.time()
253+
self.api_entry = api_entry or self.API_PREFIX
254254

255255
@property
256256
def access_token(self):
257-
if (not self._access_token) or (
258-
self._access_token and time.time() > self.expires_in):
259-
self._access_token = None
257+
if not self._access_token:
260258
token, err = self.get_access_token()
261259
if not err:
262260
self._access_token = token['access_token']
263-
self.expires_in = time.time() + token['expires_in']
264261
return self._access_token
265262
else:
266263
return None
267264
return self._access_token
268265

266+
def set_access_token(self, token):
267+
self._access_token = token
268+
269269
def get_access_token(self):
270270
params = {'grant_type': 'client_credential', 'appid': self.appid,
271271
'secret': self.appsecret}
272-
return self._get('token', params)
272+
rsp = requests.get(self.api_entry + 'token', params=params,
273+
verify=False)
274+
return self._process_response(rsp)
273275

274276
def _process_response(self, rsp):
275277
if rsp.status_code != 200:
@@ -285,14 +287,14 @@ def _process_response(self, rsp):
285287
def _get(self, path, params=None):
286288
if not params:
287289
params = {}
288-
if self._access_token:
289-
params['access_token'] = self._access_token
290-
rsp = requests.get(self.API_PREFIX + path, params=params, verify=False)
290+
params['access_token'] = self.access_token
291+
rsp = requests.get(self.api_entry + path, params=params,
292+
verify=False)
291293
return self._process_response(rsp)
292294

293295
def _post(self, path, data, ctype='json'):
294296
headers = {'Content-type': 'application/json', 'Accept': 'text/json'}
295-
path = self.API_PREFIX + path + '?access_token=' + self.access_token
297+
path = self.api_entry + path + '?access_token=' + self.access_token
296298
if ctype == 'json':
297299
data = json.dumps(data, ensure_ascii=False).encode('utf-8')
298300
rsp = requests.post(path, data=data, headers=headers, verify=False)
@@ -305,16 +307,17 @@ def followers(self, next_id=''):
305307
return self._get('user/get', {'next_openid': next_id})
306308

307309
def upload_media(self, mtype, filepath):
308-
# TODO, 对各种类型的文件作合法性校验
309-
path = self.API_PREFIX + 'media/upload?access_token=' \
310+
path = self.api_entry + 'media/upload?access_token=' \
310311
+ self._access_token + '&type=' + mtype
311312
rsp = requests.post(path, files={'media': open(filepath, 'rb')},
312313
verify=False)
313314
return self._process_response(rsp)
314315

315316
def download_media(self, media_id, to_path):
316-
rsp = requests.get(self.API_PREFIX + 'media/get',
317-
{'media_ia': media_id}, verify=False)
317+
rsp = requests.get(self.api_entry + 'media/get',
318+
params={'media_id': media_id,
319+
'access_token': self._access_token},
320+
verify=False)
318321
if rsp.status_code == 200:
319322
save_file = open(to_path, 'wb')
320323
save_file.write(rsp.content)

0 commit comments

Comments
 (0)