Skip to content

Commit

Permalink
Add proxy option
Browse files Browse the repository at this point in the history
  • Loading branch information
szastupov committed Apr 13, 2018
1 parent eeb80b0 commit d894603
Showing 1 changed file with 26 additions and 12 deletions.
38 changes: 26 additions & 12 deletions aiotg/bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,23 @@

# Message types to be handled by bot.handle(...)
MESSAGE_TYPES = [
"location", "photo", "document", "audio", "voice", "sticker", "contact",
"venue", "video", "game", "delete_chat_photo", "new_chat_photo",
"delete_chat_photo", "new_chat_member", "left_chat_member",
"new_chat_title", "group_chat_created",
"location",
"photo",
"document",
"audio",
"voice",
"sticker",
"contact",
"venue",
"video",
"game",
"delete_chat_photo",
"new_chat_photo",
"delete_chat_photo",
"new_chat_member",
"left_chat_member",
"new_chat_title",
"group_chat_created",
]

# Update types for
Expand All @@ -54,6 +67,7 @@ class Bot:
:param callable json_serialize: JSON serializer function. (json.dumps by default)
:param callable json_deserialize: JSON deserializer function. (json.loads by default)
:param bool default_in_groups: Enables default callback in groups
:param str proxy: Proxy URL to use for HTTP requests
"""

_running = False
Expand All @@ -67,7 +81,8 @@ def __init__(
name=None,
json_serialize=json.dumps,
json_deserialize=json.loads,
default_in_groups=False
default_in_groups=False,
proxy=None
):
self.api_token = api_token
self.api_timeout = api_timeout
Expand All @@ -78,6 +93,7 @@ def __init__(
self.default_in_groups = default_in_groups
self.webhook_url = None
self._session = None
self.proxy = proxy

def no_handle(mt):
return lambda chat, msg: logger.debug("no handle for %s", mt)
Expand Down Expand Up @@ -359,7 +375,7 @@ async def _api_call(self, method, **params):
url = "{0}/bot{1}/{2}".format(API_URL, self.api_token, method)
logger.debug("api_call %s, %s", method, params)

response = await self.session.post(url, data=params)
response = await self.session.post(url, data=params, proxy=self.proxy)

if response.status == 200:
return await response.json(loads=self.json_deserialize)
Expand Down Expand Up @@ -465,7 +481,7 @@ def download_file(self, file_path, range=None):
"""
headers = {"range": range} if range else None
url = "{0}/file/bot{1}/{2}".format(API_URL, self.api_token, file_path)
return self.session.get(url, headers=headers)
return self.session.get(url, headers=headers, proxy=self.proxy)

def get_user_profile_photos(self, user_id, **options):
"""
Expand Down Expand Up @@ -534,8 +550,7 @@ def session(self):
connector = None

self._session = aiohttp.ClientSession(
connector=connector,
json_serialize=self.json_serialize
connector=connector, json_serialize=self.json_serialize
)
return self._session

Expand All @@ -555,9 +570,8 @@ async def _track(self, message, name):
"name": name
},
data=self.json_serialize(message),
headers={
'content-type': 'application/json'
}
headers={'content-type': 'application/json'},
proxy=self.proxy
)
if response.status != 200:
logger.info("error submiting stats %d", response.status)
Expand Down

0 comments on commit d894603

Please sign in to comment.