From 077817c126e0f381e7c15c510977f603e8232f41 Mon Sep 17 00:00:00 2001
From: Rapptz <rapptz@gmail.com>
Date: Thu, 26 Nov 2015 21:09:02 -0500
Subject: [PATCH] Move _null_event and _verify_successful_response to utils

They might be used in other files in the future.
---
 discord/client.py | 69 +++++++++++++++++++++--------------------------
 discord/utils.py  | 10 +++++++
 2 files changed, 40 insertions(+), 39 deletions(-)

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)