@@ -246,33 +246,30 @@ class WxApi(object):
246
246
247
247
API_PREFIX = 'https://api.weixin.qq.com/cgi-bin/'
248
248
249
- def __init__ (self , appid , appsecret ):
249
+ def __init__ (self , appid , appsecret , api_entry = None ):
250
250
self .appid = appid
251
251
self .appsecret = appsecret
252
252
self ._access_token = None
253
- self .expires_in = time . time ()
253
+ self .api_entry = api_entry or self . API_PREFIX
254
254
255
255
@property
256
256
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 :
260
258
token , err = self .get_access_token ()
261
259
if not err :
262
260
self ._access_token = token ['access_token' ]
263
- self .expires_in = time .time () + token ['expires_in' ]
264
261
return self ._access_token
265
262
else :
266
263
return None
267
264
return self ._access_token
268
265
269
- def flush_token (self ):
270
- self ._access_token = None
266
+ def set_access_token (self , token ):
267
+ self ._access_token = token
271
268
272
269
def get_access_token (self ):
273
270
params = {'grant_type' : 'client_credential' , 'appid' : self .appid ,
274
271
'secret' : self .appsecret }
275
- rsp = requests .get (self .API_PREFIX + 'token' , params = params ,
272
+ rsp = requests .get (self .api_entry + 'token' , params = params ,
276
273
verify = False )
277
274
return self ._process_response (rsp )
278
275
@@ -291,13 +288,13 @@ def _get(self, path, params=None):
291
288
if not params :
292
289
params = {}
293
290
params ['access_token' ] = self .access_token
294
- rsp = requests .get (self .API_PREFIX + path , params = params ,
291
+ rsp = requests .get (self .api_entry + path , params = params ,
295
292
verify = False )
296
293
return self ._process_response (rsp )
297
294
298
295
def _post (self , path , data , ctype = 'json' ):
299
296
headers = {'Content-type' : 'application/json' , 'Accept' : 'text/json' }
300
- path = self .API_PREFIX + path + '?access_token=' + self .access_token
297
+ path = self .api_entry + path + '?access_token=' + self .access_token
301
298
if ctype == 'json' :
302
299
data = json .dumps (data , ensure_ascii = False ).encode ('utf-8' )
303
300
rsp = requests .post (path , data = data , headers = headers , verify = False )
@@ -311,14 +308,14 @@ def followers(self, next_id=''):
311
308
312
309
def upload_media (self , mtype , filepath ):
313
310
# TODO, 对各种类型的文件作合法性校验
314
- path = self .API_PREFIX + 'media/upload?access_token=' \
311
+ path = self .api_entry + 'media/upload?access_token=' \
315
312
+ self ._access_token + '&type=' + mtype
316
313
rsp = requests .post (path , files = {'media' : open (filepath , 'rb' )},
317
314
verify = False )
318
315
return self ._process_response (rsp )
319
316
320
317
def download_media (self , media_id , to_path ):
321
- rsp = requests .get (self .API_PREFIX + 'media/get' ,
318
+ rsp = requests .get (self .api_entry + 'media/get' ,
322
319
{'media_ia' : media_id }, verify = False )
323
320
if rsp .status_code == 200 :
324
321
save_file = open (to_path , 'wb' )
0 commit comments