diff --git a/discord/client.py b/discord/client.py index 06e8c6f97..09bd0120a 100644 --- a/discord/client.py +++ b/discord/client.py @@ -53,15 +53,6 @@ log = logging.getLogger(__name__) request_logging_format = '{response.request.method} {response.url} has returned {response.status_code}' request_success_log = '{response.url} with {json} received {data}' -def _null_event(*args, **kwargs): - pass - -def _verify_successful_response(response): - code = response.status_code - success = code >= 200 and code < 300 - if not success: - raise HTTPException(response) - class KeepAliveHandler(threading.Thread): def __init__(self, seconds, socket, **kwargs): threading.Thread.__init__(self, **kwargs) @@ -567,9 +558,9 @@ class Client(object): log.debug("Dispatching event {}".format(event)) handle_method = '_'.join(('handle', event)) event_method = '_'.join(('on', event)) - getattr(self, handle_method, _null_event)(*args, **kwargs) + getattr(self, handle_method, utils._null_event)(*args, **kwargs) try: - getattr(self, event_method, _null_event)(*args, **kwargs) + getattr(self, event_method, utils._null_event)(*args, **kwargs) except Exception as e: getattr(self, 'on_error')(event_method, *args, **kwargs) @@ -626,7 +617,7 @@ class Client(object): r = requests.post('{}/{}/channels'.format(endpoints.USERS, self.user.id), json=payload, headers=self.headers) log.debug(request_logging_format.format(response=r)) - _verify_successful_response(r) + utils._verify_successful_response(r) data = r.json() log.debug(request_success_log.format(response=r, json=payload, data=data)) self.private_channels.append(PrivateChannel(id=data['id'], user=user)) @@ -674,7 +665,7 @@ class Client(object): response = requests.post(url, json=payload, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) data = response.json() log.debug(request_success_log.format(response=response, json=payload, data=data)) channel = self.get_channel(data.get('channel_id')) @@ -697,7 +688,7 @@ class Client(object): response = requests.post(url, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) def send_file(self, destination, fp, filename=None): """Sends a message to the destination given with the file given. @@ -753,7 +744,7 @@ class Client(object): response = requests.post(url, files=files, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) data = response.json() log.debug(request_success_log.format(response=response, json=response.text, data=filename)) channel = self.get_channel(data.get('channel_id')) @@ -774,7 +765,7 @@ class Client(object): url = '{}/{}/messages/{}'.format(endpoints.CHANNELS, message.channel.id, message.id) response = requests.delete(url, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) def edit_message(self, message, new_content, mentions=True): """Edits a :class:`Message` with the new message content. @@ -802,7 +793,7 @@ class Client(object): response = requests.patch(url, headers=self.headers, json=payload) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) data = response.json() log.debug(request_success_log.format(response=response, json=payload, data=data)) return Message(channel=channel, **data) @@ -829,7 +820,7 @@ class Client(object): r = requests.post(endpoints.LOGIN, json=payload) log.debug(request_logging_format.format(response=r)) - _verify_successful_response(r) + utils._verify_successful_response(r) log.info('logging in returned status code {}'.format(r.status_code)) self.email = email @@ -867,7 +858,7 @@ class Client(object): r = requests.post(endpoints.REGISTER, json=payload) log.debug(request_logging_format.format(response=r)) - _verify_successful_response(r) + utils._verify_successful_response(r) log.info('register returned a successful status code') self.email = '' @@ -955,7 +946,7 @@ class Client(object): response = requests.get(url, params=params, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) messages = response.json() for message in messages: yield Message(channel=channel, **message) @@ -990,7 +981,7 @@ class Client(object): url = '{}/{}'.format(endpoints.CHANNELS, channel.id) response = requests.delete(url, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) def kick(self, server, user): """Kicks a :class:`User` from their respective :class:`Server`. @@ -1006,7 +997,7 @@ class Client(object): url = '{base}/{server}/members/{user}'.format(base=endpoints.SERVERS, server=server.id, user=user.id) response = requests.delete(url, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) def ban(self, server, user): """Bans a :class:`User` from their respective :class:`Server`. @@ -1022,7 +1013,7 @@ class Client(object): url = '{base}/{server}/bans/{user}'.format(base=endpoints.SERVERS, server=server.id, user=user.id) response = requests.put(url, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) def unban(self, server, user): """Unbans a :class:`User` from their respective :class:`Server`. @@ -1039,7 +1030,7 @@ class Client(object): url = '{base}/{server}/bans/{user}'.format(base=endpoints.SERVERS, server=server.id, user=user.id) response = requests.delete(url, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) def edit_profile(self, password, **fields): """Edits the current profile of the client. @@ -1065,7 +1056,7 @@ class Client(object): url = '{0}/@me'.format(endpoints.USERS) response = requests.patch(url, headers=self.headers, json=payload) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) data = response.json() log.debug(request_success_log.format(response=response, json=payload, data=data)) @@ -1098,7 +1089,7 @@ class Client(object): response = requests.patch(url, headers=self.headers, json=payload) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) data = response.json() log.debug(request_success_log.format(response=response, json=payload, data=data)) @@ -1125,7 +1116,7 @@ class Client(object): url = '{0}/{1.id}/channels'.format(endpoints.SERVERS, server) response = requests.post(url, headers=self.headers, json=payload) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) data = response.json() log.debug(request_success_log.format(response=response, data=data, json=payload)) @@ -1144,7 +1135,7 @@ class Client(object): url = '{0}/{1.id}'.format(endpoints.SERVERS, server) response = requests.delete(url, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) def create_invite(self, destination, **options): """Creates an invite for the destination which could be either a :class:`Server` or :class:`Channel`. @@ -1172,7 +1163,7 @@ class Client(object): response = requests.post(url, headers=self.headers, json=payload) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) data = response.json() log.debug(request_success_log.format(json=payload, response=response, data=data)) data['server'] = self.connection._get_server(data['guild']['id']) @@ -1194,7 +1185,7 @@ class Client(object): rurl = '{0}/invite/{1}'.format(endpoints.API_BASE, destination) response = requests.get(rurl, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) data = response.json() server = self.connection._get_server(data['guild']['id']) data['server'] = server @@ -1223,7 +1214,7 @@ class Client(object): url = '{0}/invite/{1}'.format(endpoints.API_BASE, destination) response = requests.post(url, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) def edit_role(self, server, role, **fields): """Edits the specified :class:`Role` for the entire :class:`Server`. @@ -1262,7 +1253,7 @@ class Client(object): response = requests.patch(url, json=payload, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) data = response.json() log.debug(request_success_log.format(json=payload, response=response, data=data)) @@ -1281,7 +1272,7 @@ class Client(object): url = '{0}/{1.id}/roles/{2.id}'.format(endpoints.SERVERS, server, role) response = requests.delete(url, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) def add_roles(self, member, *roles): """Gives the specified :class:`Member` a number of :class:`Role` s. @@ -1303,7 +1294,7 @@ class Client(object): response = requests.patch(url, headers=self.headers, json=payload) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) def remove_roles(self, member, *roles): """Removes the :class:`Role` s from the :class:`Member`. @@ -1328,7 +1319,7 @@ class Client(object): response = requests.patch(url, headers=self.headers, json=payload) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) def replace_roles(self, member, *roles): """Replaces the :class:`Member`'s roles. @@ -1354,7 +1345,7 @@ class Client(object): response = requests.patch(url, headers=self.headers, json=payload) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) member.roles = list(roles) @@ -1371,7 +1362,7 @@ class Client(object): url = '{0}/{1.id}/roles'.format(endpoints.SERVERS, server) response = requests.post(url, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) data = response.json() everyone = server.id == data.get('id') @@ -1435,7 +1426,7 @@ class Client(object): response = requests.put(url, json=payload, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) def delete_channel_permissions(self, channel, target): """Removes a channel specific permission overwrites for a target @@ -1453,7 +1444,7 @@ class Client(object): url = '{0}/{1.id}/permissions/{2.id}'.format(endpoints.CHANNELS, channel, target) response = requests.delete(url, headers=self.headers) log.debug(request_logging_format.format(response=response)) - _verify_successful_response(response) + utils._verify_successful_response(response) def change_status(self, game_id=None, idle=False): """Changes the client's status. diff --git a/discord/utils.py b/discord/utils.py index 8e328bfa2..38a00bdca 100644 --- a/discord/utils.py +++ b/discord/utils.py @@ -25,6 +25,7 @@ DEALINGS IN THE SOFTWARE. """ from re import split as re_split +from .errors import HTTPException import datetime @@ -55,3 +56,12 @@ def find(predicate, seq): if predicate(element): return element return None + +def _null_event(*args, **kwargs): + pass + +def _verify_successful_response(response): + code = response.status_code + success = code >= 200 and code < 300 + if not success: + raise HTTPException(response)