def _valid_timeout_value(timeout, name): if isinstance(timeout, int) or isinstance(timeout, float): if timeout > 0: return timeout raise ParamTypeInvalidException(param=name, param_type='positive integer') elif isinstance(timeout, str) and timeout.isdigit(): if float(timeout) > 0: return float(timeout) raise ParamTypeInvalidException(param=name, param_type='positive integer') raise ParamTypeInvalidException(param=name, param_type='float or int or str')
def _modify_user_agent(client_user_agent): base = _user_agent_header() default_agent = _default_user_agent() # merge default UA and client_UA user_agent = _merge_user_agent(default_agent, None) for key, value in user_agent.items(): base += ' %s/%s' % (key, value) if client_user_agent is not None: if not isinstance(client_user_agent, str): raise ParamTypeInvalidException(param='client_user_agent', param_type='str') return ' '.join([base, client_user_agent]) return base
def _init_retry(self, custom_retry_policy): # TODO initialize # retry if custom_retry_policy is not None: self.retry_policy = custom_retry_policy elif self.config.enable_retry: try: max_retry_times = int(self.config.max_retry_times) except ValueError: raise ParamTypeInvalidException(param='max_retry_times', param_type='int') else: self.retry_policy = retry_policy.get_default_retry_policy( max_retry_times=max_retry_times) else: self.retry_policy = retry_policy.NO_RETRY_POLICY
def _filter_params(params): # handle params new_params = {} def handle_params(params, prefix=''): if isinstance(params, list): for i in range(len(params)): handle_params(params[i], prefix=prefix + '.' + str(i + 1)) elif isinstance(params, dict): for item in params.keys(): handle_params(params.get(item), prefix=prefix + '.' + item) else: new_params[prefix.rstrip('.')] = params # TODO None and [] are filer if params is not None: if not isinstance(params, dict): raise ParamTypeInvalidException(params=params, param_type='dict') for key, value in params.items(): if params[key] is not None: handle_params(params=value, prefix=key) return new_params
def assert_integer_positive(integer, name): if isinstance(integer, int) and integer > 0: return raise ParamTypeInvalidException(param=name, param_type='positive integer')