From 6aa83659840c6b1f68d940df39c7fcc6144cd111 Mon Sep 17 00:00:00 2001 From: Oleh Kuchuk Date: Thu, 4 Oct 2018 22:12:06 +0300 Subject: [PATCH 1/5] Added session sharing --- aioslacker/__init__.py | 43 +++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/aioslacker/__init__.py b/aioslacker/__init__.py index 890ce47..b331d7d 100644 --- a/aioslacker/__init__.py +++ b/aioslacker/__init__.py @@ -21,6 +21,7 @@ def __init__( self, token=None, timeout=slacker.DEFAULT_TIMEOUT, + session=None, *, loop=None ): @@ -29,12 +30,15 @@ def __init__( self.loop = loop - self.session = aiohttp.ClientSession( - connector=aiohttp.TCPConnector( - use_dns_cache=False, - loop=self.loop, - ), - ) + if not isinstance(session, aiohttp.ClientSession): + session = aiohttp.ClientSession( + connector=aiohttp.TCPConnector( + use_dns_cache=False, + loop=self.loop, + ), + ) + + self.session = session self.methods = { requests.get: 'GET', @@ -286,11 +290,12 @@ def __init__( self, url=None, timeout=slacker.DEFAULT_TIMEOUT, + session=None, *, loop=None ): self.url = url - super().__init__(token=None, timeout=timeout, loop=loop) + super().__init__(token=None, timeout=timeout, session=session, loop=loop) @asyncio.coroutine def post(self, data): @@ -327,6 +332,7 @@ def __init__( token, incoming_webhook_url=None, timeout=slacker.DEFAULT_TIMEOUT, + session=None, *, loop=None ): if loop is None: @@ -337,116 +343,139 @@ def __init__( self.im = IM( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.api = API( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.dnd = DND( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.rtm = RTM( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.auth = Auth( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.bots = Bots( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.chat = Chat( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.team = Team( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.pins = Pins( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.mpim = MPIM( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.users = Users( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.files = Files( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.stars = Stars( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.emoji = Emoji( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.search = Search( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.groups = Groups( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.channels = Channels( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.presence = Presence( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.reminders = Reminders( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.reactions = Reactions( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.idpgroups = IDPGroups( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.usergroups = UserGroups( token=token, timeout=timeout, + session=session, loop=self.loop, ) self.incomingwebhook = IncomingWebhook( url=incoming_webhook_url, timeout=timeout, + session=session, loop=self.loop, ) From cbd1d304068c49ebd674ebf9c07bf1ae56d43a06 Mon Sep 17 00:00:00 2001 From: Oleh Kuchuk Date: Thu, 4 Oct 2018 22:23:57 +0300 Subject: [PATCH 2/5] fix lint --- aioslacker/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/aioslacker/__init__.py b/aioslacker/__init__.py index b331d7d..79684d7 100644 --- a/aioslacker/__init__.py +++ b/aioslacker/__init__.py @@ -295,7 +295,9 @@ def __init__( ): self.url = url - super().__init__(token=None, timeout=timeout, session=session, loop=loop) + super().__init__( + token=None, timeout=timeout, session=session, loop=loop + ) @asyncio.coroutine def post(self, data): From e75da3b18ed19c0fb6a77f7d2ca697976295b717 Mon Sep 17 00:00:00 2001 From: Oleh Kuchuk Date: Mon, 8 Oct 2018 17:12:26 +0300 Subject: [PATCH 3/5] review fixes --- aioslacker/__init__.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/aioslacker/__init__.py b/aioslacker/__init__.py index 79684d7..f8ecd03 100644 --- a/aioslacker/__init__.py +++ b/aioslacker/__init__.py @@ -30,13 +30,11 @@ def __init__( self.loop = loop - if not isinstance(session, aiohttp.ClientSession): - session = aiohttp.ClientSession( - connector=aiohttp.TCPConnector( - use_dns_cache=False, - loop=self.loop, - ), - ) + self._close_session = False + + if session is None: + session = aiohttp.ClientSession(loop=self.loop) + self._close_session = True self.session = session @@ -122,7 +120,8 @@ def close(self): return_exceptions=True ) - yield from self.session.close() + if self._close_session: + yield from self.session.close() class IM(BaseAPI, slacker.IM): @@ -158,6 +157,7 @@ class TeamProfile(BaseAPI, slacker.TeamProfile): class Team(BaseAPI, slacker.Team): + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._profile = TeamProfile(*args, **kwargs) @@ -296,7 +296,10 @@ def __init__( self.url = url super().__init__( - token=None, timeout=timeout, session=session, loop=loop + token=None, + timeout=timeout, + session=session, + loop=loop, ) @asyncio.coroutine From 69a137dbfb0d6239aeea94624ccfb6d2a90de98f Mon Sep 17 00:00:00 2001 From: Oleh Kuchuk Date: Thu, 18 Oct 2018 23:48:07 +0300 Subject: [PATCH 4/5] Fixed compat --- aioslacker/__init__.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/aioslacker/__init__.py b/aioslacker/__init__.py index f8ecd03..0466053 100644 --- a/aioslacker/__init__.py +++ b/aioslacker/__init__.py @@ -36,7 +36,7 @@ def __init__( session = aiohttp.ClientSession(loop=self.loop) self._close_session = True - self.session = session + self._session = session self.methods = { requests.get: 'GET', @@ -59,6 +59,12 @@ def __request(self, method, api, **kwargs): kwargs['params'] = urlencode(kwargs['params'], doseq=True) + kwargs['data'] = { + key: value + for key, value in kwargs.get('data', {}).items() + if value is not None + } + if method == 'POST': files = kwargs.pop('files', None) @@ -78,7 +84,7 @@ def __request(self, method, api, **kwargs): _url = slacker.API_BASE_URL.format(api=api) - _request = self.session.request(method, _url, **kwargs) + _request = self._session.request(method, _url, **kwargs) _response = None @@ -121,7 +127,7 @@ def close(self): ) if self._close_session: - yield from self.session.close() + yield from self._session.close() class IM(BaseAPI, slacker.IM): @@ -307,7 +313,7 @@ def post(self, data): if not self.url: raise slacker.Error('URL for incoming webhook is undefined') - _request = self.session.request( + _request = self._session.request( 'POST', self.url, data=data, From c29c2781f3ab3cc7b1a9ffe8b3cf45eeb8af2f01 Mon Sep 17 00:00:00 2001 From: Oleh Kuchuk Date: Thu, 18 Oct 2018 23:48:19 +0300 Subject: [PATCH 5/5] Unpin slacker --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f51900a..6ed96e9 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,7 @@ def read(*parts): install_requires=[ 'aiohttp>=1.3.0', 'async_timeout>=2.0.0', - 'slacker<=0.9.42', + 'slacker', ], packages=['aioslacker'], include_package_data=True,