1212from tigeropen .common .consts import OPEN_API_SERVICE_VERSION , THREAD_LOCAL
1313from tigeropen .common .consts .params import P_TIMESTAMP , P_TIGER_ID , P_METHOD , P_CHARSET , P_VERSION , P_SIGN_TYPE , \
1414 P_DEVICE_ID , P_NOTIFY_URL , COMMON_PARAM_KEYS , P_SIGN
15+ from tigeropen .common .consts .service_types import USER_LICENSE
1516from tigeropen .common .exceptions import ResponseException , RequestException
17+ from tigeropen .common .request import OpenApiRequest
18+ from tigeropen .common .response import TigerResponse
1619from tigeropen .common .util .common_utils import has_value
1720from tigeropen .common .util .signature_utils import get_sign_content , sign_with_rsa , verify_with_rsa
1821from tigeropen .common .util .web_utils import do_post
@@ -40,6 +43,16 @@ def __init__(self, client_config, logger=None):
4043 "User-Agent" : 'openapi-python-sdk-' + __VERSION__
4144 }
4245 self .__device_id = self .__get_device_id ()
46+ self .__init_license ()
47+ self .__refresh_server_info ()
48+
49+ def __init_license (self ):
50+ if self .__config .license is None and self .__config .enable_dynamic_domain :
51+ self .__config .license = self .query_license ()
52+
53+ def __refresh_server_info (self ):
54+ self .__config .refresh_server_info ()
55+
4356
4457 """
4558 内部方法,从params中抽取公共参数
@@ -82,7 +95,7 @@ def __remove_common_params(self, params):
8295 """
8396 内部方法,通过请求request对象构造请求查询字符串和业务参数
8497 """
85- def __prepare_request (self , request ):
98+ def __prepare_request (self , request , url = None ):
8699 THREAD_LOCAL .logger = self .__logger
87100 params = request .get_params ()
88101 params [P_TIMESTAMP ] = datetime .datetime .now ().strftime ("%Y-%m-%d %H:%M:%S" )
@@ -97,7 +110,7 @@ def __prepare_request(self, request):
97110 raise RequestException ('[' + THREAD_LOCAL .uuid + ']request sign failed. ' + str (e ))
98111 all_params [P_SIGN ] = sign
99112
100- log_url = self . __config . server_url + '?' + sign_content + "&sign=" + sign
113+ log_url = url + '?' + sign_content + "&sign=" + sign
101114 if THREAD_LOCAL .logger :
102115 THREAD_LOCAL .logger .debug ('[' + THREAD_LOCAL .uuid + ']request:' + log_url )
103116
@@ -134,12 +147,29 @@ def __parse_response(self, response_str, timestamp=None):
134147 执行接口请求
135148 """
136149
137- def execute (self , request ):
150+ def execute (self , request , url = None ):
151+ if url is None :
152+ url = self .__config .server_url
138153 THREAD_LOCAL .uuid = str (uuid .uuid1 ())
139154 query_string = None
140- params = self .__prepare_request (request )
155+ params = self .__prepare_request (request , url )
141156
142- response = do_post (self . __config . server_url , query_string , self .__headers , params , self .__config .timeout ,
157+ response = do_post (url , query_string , self .__headers , params , self .__config .timeout ,
143158 self .__config .charset )
144159
145160 return self .__parse_response (response , params .get ('timestamp' ))
161+
162+ def query_license (self ):
163+ request = OpenApiRequest (method = USER_LICENSE )
164+
165+ response_content = None
166+ try :
167+ response_content = self .execute (request )
168+ except Exception as e :
169+ self .__logger .error (e , exc_info = True )
170+ if response_content :
171+ response = TigerResponse ()
172+ response .parse_response_content (response_content )
173+ if response .is_success ():
174+ return json .loads (response .data ).get ('license' )
175+ self .__logger .error (f"failed to query license, response: { response_content } " )
0 commit comments