diff --git a/discord/client.py b/discord/client.py
index 157b29862..0f8df2d5d 100644
--- a/discord/client.py
+++ b/discord/client.py
@@ -1738,6 +1738,22 @@ class Client:
 
     # Invite management
 
+    def _fill_invite_data(self, data):
+        server = None
+        if self.connection is not None:
+            server = self.connection._get_server(data['guild']['id'])
+        if server is not None:
+            ch_id = data['channel']['id']
+            channels = getattr(server, 'channels', [])
+            channel = utils.find(lambda c: c.id == ch_id, channels)
+        else:
+            server = Object(id=data['guild']['id'])
+            server.name = data['guild']['name']
+            channel = Object(id=data['channel']['id'])
+            channel.name = data['channel']['name']
+        data['server'] = server
+        data['channel'] = channel
+
     @asyncio.coroutine
     def create_invite(self, destination, **options):
         """|coro|
@@ -1786,10 +1802,7 @@ class Client:
         yield from utils._verify_successful_response(response)
         data = yield from response.json()
         log.debug(request_success_log.format(json=payload, response=response, data=data))
-
-        data['server'] = self.connection._get_server(data['guild']['id'])
-        channel_id = data['channel']['id']
-        data['channel'] = utils.find(lambda ch: ch.id == channel_id, data['server'].channels)
+        self._fill_invite_data(data)
         return Invite(**data)
 
     @asyncio.coroutine
@@ -1828,20 +1841,7 @@ class Client:
         log.debug(request_logging_format.format(method='GET', response=response))
         yield from utils._verify_successful_response(response)
         data = yield from response.json()
-        server = None
-        if self.connection is not None:
-            server = self.connection._get_server(data['guild']['id'])
-        if server is not None:
-            ch_id = data['channel']['id']
-            channels = getattr(server, 'channels', [])
-            channel = utils.find(lambda c: c.id == ch_id, channels)
-        else:
-            server = Object(id=data['guild']['id'])
-            server.name = data['guild']['name']
-            channel = Object(id=data['channel']['id'])
-            channel.name = data['channel']['name']
-        data['server'] = server
-        data['channel'] = channel
+        self._fill_invite_data(data)
         return Invite(**data)
 
     @asyncio.coroutine