def send_api_request(self, request, captcha_response=None): """ Modified method with immunity to timeout and bad internet :param request: VK API method :param captcha_response: captcha dictionary """ url = self.API_URL + request._method_name method_args = request._api._method_default_args.copy() method_args.update(stringify_values(request._method_args)) access_token = self.access_token if access_token: method_args['access_token'] = access_token if captcha_response: method_args['captcha_sid'] = captcha_response['sid'] method_args['captcha_key'] = captcha_response['key'] timeout = request._api._timeout try: response = self.requests_session.post(url, method_args, timeout=timeout) except (requests.exceptions.ReadTimeout, requests.exceptions.ConnectionError): response = self.send_api_request(request, captcha_response=captcha_response) return response
def send_api_request(self, request): url = self.API_URL + request._method_name method_args = request._api._method_default_args.copy() method_args.update(stringify_values(request._method_args)) if self.access_token: method_args["access_token"] = self.access_token timeout = request._api._timeout response = self.requests_session.post(url, method_args, timeout=timeout) return response
def send_api_request(self, request): url = self.API_URL + request._method_name method_args = request._api._method_default_args.copy() method_args.update(stringify_values(request._method_args)) if self.access_token: method_args['access_token'] = self.access_token timeout = request._api._timeout response = self.requests_session.post(url, method_args, timeout=timeout) return response
def method_request(self, method_name, timeout=None, **method_kwargs): params = {"timestamp": int(time.time()), "v": self.api_version} if self.access_token: params["access_token"] = self.access_token method_kwargs = stringify_values(method_kwargs) params.update(method_kwargs) url = "https://api.vk.com/method/" + method_name self.logger.info("Make request %s, %s", url, params) response = self.session.post(url, params, timeout=timeout or self.default_timeout) return response
def send_api_request(self, request, captcha_response=None): url = self.API_URL + request._method_name method_args = request._api._method_default_args.copy() method_args.update(stringify_values(request._method_args)) access_token = self.access_token if access_token: method_args['access_token'] = access_token if captcha_response: method_args['captcha_sid'] = captcha_response['sid'] method_args['captcha_key'] = captcha_response['key'] timeout = request._api._timeout response = self.requests_session.post(url, method_args, timeout=timeout) return response
def method_request(self, method_name, timeout=None, **method_kwargs): params = { 'timestamp': int(time.time()), 'v': self.api_version, } if self.access_token: params['access_token'] = self.access_token method_kwargs = stringify_values(method_kwargs) params.update(method_kwargs) url = 'https://api.vk.com/method/' + method_name logger.info('Make request %s, %s', url, params) response = self.requests_session.post(url, params, timeout=timeout or self.default_timeout) return response
def send_api_request(self, request, captcha_response=None): """ Modified method with immunity to timeout and bad internet :param request: VK API method :param captcha_response: captcha dictionary """ url = self.API_URL + request._method_name method_args = request._api._method_default_args.copy() method_args.update(stringify_values(request._method_args)) access_token = self.access_token if access_token: method_args['access_token'] = access_token if captcha_response: method_args['captcha_sid'] = captcha_response['sid'] method_args['captcha_key'] = captcha_response['key'] timeout = request._api._timeout try: response = self.requests_session.post(url, method_args, timeout=timeout) except (requests.exceptions.ReadTimeout, requests.exceptions.ConnectionError): Logger.warning(NAME + _("Операция прервана по тайм-ауту")) time.sleep(5) response = self.send_api_request(request, captcha_response=captcha_response) return response
def __call__(self, **method_params): request_method_params = self._method_common_params.copy() request_method_params.update(stringify_values(method_params)) return self._api.send(APIRequest(self._method, request_method_params))
def test_stringify(): assert stringify_values({1: ['str', 'str2']}) == {1: 'str,str2'} assert stringify_values({1: ['str', u'стр2']}) == {1: u'str,стр2'} assert stringify_values({1: [u'стр', u'стр2']}) == {1: u'стр,стр2'}