Browse Source

Change the login cache check call to be the gateway retrieval.

pull/60/head
Rapptz 9 years ago
parent
commit
3dc2177ce8
  1. 16
      discord/client.py

16
discord/client.py

@ -302,7 +302,6 @@ class Client:
if not self.is_logged_in: if not self.is_logged_in:
raise ClientException('You must be logged in to connect') raise ClientException('You must be logged in to connect')
self.gateway = yield from self._get_gateway()
self.ws = yield from websockets.connect(self.gateway, loop=self.loop) self.ws = yield from websockets.connect(self.gateway, loop=self.loop)
self.ws.max_size = None self.ws.max_size = None
log.info('Created websocket connected to {0.gateway}'.format(self)) log.info('Created websocket connected to {0.gateway}'.format(self))
@ -513,6 +512,8 @@ class Client:
An unknown HTTP related error occurred, An unknown HTTP related error occurred,
usually when it isn't 200 or the known incorrect credentials usually when it isn't 200 or the known incorrect credentials
passing status code. passing status code.
GatewayNotFound
The gateway to connect to discord was not found.
""" """
# attempt to read the token from cache # attempt to read the token from cache
@ -525,12 +526,20 @@ class Client:
self.token = f.read() self.token = f.read()
self.headers['authorization'] = self.token self.headers['authorization'] = self.token
check = yield from aiohttp.get(endpoints.ME, headers=self.headers, loop=self.loop) check = yield from aiohttp.get(endpoints.GATEWAY, headers=self.headers, loop=self.loop)
if check.status == 200: if check.status == 200:
log.info('login cache token check succeeded') log.info('login cache token check succeeded')
yield from check.release() data = yield from check.json()
self.gateway = data.get('url')
self._is_logged_in = True self._is_logged_in = True
return return
else:
# failed auth check
yield from check.release()
if check.status != 401:
# This is unrelated to the auth check so it's
# an error on discord's end
raise GatewayNotFound()
# at this point our check failed # at this point our check failed
# so we have to login and get the proper token and then # so we have to login and get the proper token and then
@ -559,6 +568,7 @@ class Client:
self.token = body['token'] self.token = body['token']
self.headers['authorization'] = self.token self.headers['authorization'] = self.token
self._is_logged_in = True self._is_logged_in = True
self.gateway = yield from self._get_gateway()
# since we went through all this trouble # since we went through all this trouble
# let's make sure we don't have to do it again # let's make sure we don't have to do it again

Loading…
Cancel
Save