WIP retry failed requests

This commit is contained in:
Noam Meltzer 2016-07-20 00:04:14 +03:00
parent 8e5cb58f46
commit 8abdfdd5e7

View file

@ -115,8 +115,7 @@ class Bot(TelegramObject):
return decorator return decorator
@staticmethod def _post_message(self, url, data, msg_cls=Message, expect_list=False, timeout=None, **kwargs):
def _post_message(url, data, msg_cls=Message, expect_list=False, timeout=None, **kwargs):
reply_to_message_id = kwargs.get('reply_to_message_id') reply_to_message_id = kwargs.get('reply_to_message_id')
if reply_to_message_id: if reply_to_message_id:
data['reply_to_message_id'] = reply_to_message_id data['reply_to_message_id'] = reply_to_message_id
@ -131,7 +130,7 @@ class Bot(TelegramObject):
reply_markup = reply_markup.to_json() reply_markup = reply_markup.to_json()
data['reply_markup'] = reply_markup data['reply_markup'] = reply_markup
result = request.post(url, data, timeout=timeout) result = self._request_wrapper(request.post, url, data, timeout=timeout)
if isinstance(result, int): if isinstance(result, int):
# int covers both boolean & integer results # int covers both boolean & integer results
@ -142,6 +141,11 @@ class Bot(TelegramObject):
return msg_cls.de_json(result) return msg_cls.de_json(result)
def _request_wrapper(self, method, url, *args, **kwargs):
# classes inheriting from Bot, can wrap this method in order to perform retries
# this is intended to be used only with request.post() & request.get()
return method(url, *args, **kwargs)
@log @log
def getMe(self, **kwargs): def getMe(self, **kwargs):
"""A simple method for testing your bot's auth token. """A simple method for testing your bot's auth token.
@ -158,7 +162,7 @@ class Bot(TelegramObject):
url = '{0}/getMe'.format(self.base_url) url = '{0}/getMe'.format(self.base_url)
result = request.get(url) result = self._request_wrapper(request.get, url)
self._bot = User.de_json(result) self._bot = User.de_json(result)