mirror of
https://github.com/kennethreitz-archive/python-convore.git
synced 2026-06-05 23:40:18 +00:00
moved the Group,Topics and Messages lists core module
the api module will only contain low level api stuff i.e. fetching from convore and deserializing the json.
This commit is contained in:
-128
@@ -9,16 +9,8 @@
|
||||
:license: ISC, see LICENSE for more details.
|
||||
"""
|
||||
|
||||
from convore.packages.anyjson import deserialize
|
||||
|
||||
import requests
|
||||
|
||||
from types import SyncedList
|
||||
import models
|
||||
import groups
|
||||
|
||||
|
||||
|
||||
API_URL = 'https://convore.com/api/'
|
||||
AUTH = None
|
||||
|
||||
@@ -85,123 +77,3 @@ def login(username, password):
|
||||
# ==========
|
||||
# End Points
|
||||
# ==========
|
||||
|
||||
|
||||
class Groups(SyncedList):
|
||||
|
||||
__data_keys__ = ['id', 'slug']
|
||||
|
||||
def __init__(self):
|
||||
super(Groups, self).__init__()
|
||||
|
||||
self.discover = groups.GroupsDiscover()
|
||||
self.discover.parent = self
|
||||
|
||||
def joined(self):
|
||||
"""Returns list of Joined groups."""
|
||||
|
||||
return [g for g in self.data if g.joined]
|
||||
|
||||
def get(self, key):
|
||||
r = get('groups', key)
|
||||
group = self._create_group_from_api(deserialize(r.content)['group'])
|
||||
return group
|
||||
|
||||
def sync(self):
|
||||
self.data = []
|
||||
|
||||
r = get('groups')
|
||||
for _group in deserialize(r.content)['groups']:
|
||||
group = self._create_group_from_api(_group)
|
||||
self.data.append(group)
|
||||
self._synced = True
|
||||
|
||||
def _create_group_from_api(self, _group):
|
||||
group = models.Group()
|
||||
group.import_from_api(_group)
|
||||
group.joined = True
|
||||
group.topics = Topics(group)
|
||||
return group
|
||||
|
||||
|
||||
class Topics(SyncedList):
|
||||
|
||||
__data_keys__ = ['id', 'slug']
|
||||
|
||||
def __init__(self, group):
|
||||
super(Topics, self).__init__()
|
||||
self.group = group
|
||||
|
||||
def list(self):
|
||||
return self.data
|
||||
|
||||
def insert(self, index, object):
|
||||
return self.data.insert(index, object)
|
||||
|
||||
def append(self, object):
|
||||
return self.data.append(object)
|
||||
|
||||
def get(self, key):
|
||||
r = get('topics', key)
|
||||
topic = self._create_topic_from_api(deserialize(r.content)['topic'])
|
||||
return topic
|
||||
|
||||
def sync(self):
|
||||
self.data = []
|
||||
|
||||
r = get('groups', self.group.id, 'topics')
|
||||
for _topic in deserialize(r.content)['topics']:
|
||||
topic = self._create_topic_from_api(_topic)
|
||||
self.data.append(topic)
|
||||
self._synced = True
|
||||
|
||||
def _create_topic_from_api(self, _topic):
|
||||
topic = models.Topic()
|
||||
topic.import_from_api(_topic)
|
||||
topic.messages = Messages(topic)
|
||||
topic.group = self.group
|
||||
return topic
|
||||
|
||||
def create(self, name):
|
||||
params = {'topic_id': self.group.id, 'name': name}
|
||||
r = post(params ,'groups', self.group.id, 'topics', 'create')
|
||||
topic = self._create_topic_from_api(deserialize(r.content)['topic'])
|
||||
self.data.insert(0,topic)
|
||||
return True
|
||||
|
||||
|
||||
class Messages(SyncedList):
|
||||
|
||||
__data_keys__ = ['id']
|
||||
|
||||
def __init__(self, topic):
|
||||
super(Messages, self).__init__()
|
||||
self.topic = topic
|
||||
|
||||
def list(self):
|
||||
return self.data
|
||||
|
||||
def sync(self):
|
||||
self.data = []
|
||||
|
||||
r = get('topics', self.topic.id, 'messages')
|
||||
messages = deserialize(r.content)['messages']
|
||||
idx = 0
|
||||
msg_count = len(messages)
|
||||
unread_count = self.topic.unread
|
||||
for message_data in messages:
|
||||
idx = idx + 1
|
||||
message = models.Message()
|
||||
message.import_from_api(message_data)
|
||||
message.topic = self.topic
|
||||
message.unread = idx > msg_count - unread_count
|
||||
self.data.append(message)
|
||||
self._synced = True
|
||||
|
||||
def create(self, message):
|
||||
params = {'topic_id': self.topic.id, 'message': message}
|
||||
r = post(params ,'topics', self.topic.id, 'messages', 'create')
|
||||
message = models.Message()
|
||||
message.import_from_api(deserialize(r.content)['message'])
|
||||
self.data.append(message)
|
||||
return True
|
||||
|
||||
+125
-1
@@ -11,8 +11,10 @@
|
||||
|
||||
from convore.packages.anyjson import deserialize
|
||||
|
||||
from types import SyncedList
|
||||
import api
|
||||
import models
|
||||
import groups
|
||||
|
||||
|
||||
__title__ = 'convore'
|
||||
@@ -41,7 +43,7 @@ class Convore(object):
|
||||
self.username = username
|
||||
api.login(username, password)
|
||||
|
||||
self.groups = api.Groups()
|
||||
self.groups = Groups()
|
||||
|
||||
def account_verify(self):
|
||||
r = api.get('account', 'verify')
|
||||
@@ -90,3 +92,125 @@ class Convore(object):
|
||||
next_cursor = data['_id']
|
||||
|
||||
return (live_messages, next_cursor)
|
||||
|
||||
|
||||
|
||||
class Groups(SyncedList):
|
||||
|
||||
__data_keys__ = ['id', 'slug']
|
||||
|
||||
def __init__(self):
|
||||
super(Groups, self).__init__()
|
||||
|
||||
self.discover = groups.GroupsDiscover()
|
||||
self.discover.parent = self
|
||||
|
||||
def joined(self):
|
||||
"""Returns list of Joined groups."""
|
||||
|
||||
return [g for g in self.data if g.joined]
|
||||
|
||||
def get(self, key):
|
||||
r = api.get('groups', key)
|
||||
group = self._create_group_from_api(deserialize(r.content)['group'])
|
||||
return group
|
||||
|
||||
def sync(self):
|
||||
self.data = []
|
||||
|
||||
r = api.get('groups')
|
||||
for _group in deserialize(r.content)['groups']:
|
||||
group = self._create_group_from_api(_group)
|
||||
self.data.append(group)
|
||||
self._synced = True
|
||||
|
||||
def _create_group_from_api(self, _group):
|
||||
group = models.Group()
|
||||
group.import_from_api(_group)
|
||||
group.joined = True
|
||||
group.topics = Topics(group)
|
||||
return group
|
||||
|
||||
|
||||
class Topics(SyncedList):
|
||||
|
||||
__data_keys__ = ['id', 'slug']
|
||||
|
||||
def __init__(self, group):
|
||||
super(Topics, self).__init__()
|
||||
self.group = group
|
||||
|
||||
def list(self):
|
||||
return self.data
|
||||
|
||||
def insert(self, index, object):
|
||||
return self.data.insert(index, object)
|
||||
|
||||
def append(self, object):
|
||||
return self.data.append(object)
|
||||
|
||||
def get(self, key):
|
||||
r = api.get('topics', key)
|
||||
topic = self._create_topic_from_api(deserialize(r.content)['topic'])
|
||||
return topic
|
||||
|
||||
def sync(self):
|
||||
self.data = []
|
||||
|
||||
r = api.get('groups', self.group.id, 'topics')
|
||||
for _topic in deserialize(r.content)['topics']:
|
||||
topic = self._create_topic_from_api(_topic)
|
||||
self.data.append(topic)
|
||||
self._synced = True
|
||||
|
||||
def _create_topic_from_api(self, _topic):
|
||||
topic = models.Topic()
|
||||
topic.import_from_api(_topic)
|
||||
topic.messages = Messages(topic)
|
||||
topic.group = self.group
|
||||
return topic
|
||||
|
||||
def create(self, name):
|
||||
params = {'topic_id': self.group.id, 'name': name}
|
||||
r = post(params ,'groups', self.group.id, 'topics', 'create')
|
||||
topic = self._create_topic_from_api(deserialize(r.content)['topic'])
|
||||
self.data.insert(0,topic)
|
||||
return True
|
||||
|
||||
|
||||
class Messages(SyncedList):
|
||||
|
||||
__data_keys__ = ['id']
|
||||
|
||||
def __init__(self, topic):
|
||||
super(Messages, self).__init__()
|
||||
self.topic = topic
|
||||
|
||||
def list(self):
|
||||
return self.data
|
||||
|
||||
def sync(self):
|
||||
self.data = []
|
||||
|
||||
r = api.get('topics', self.topic.id, 'messages')
|
||||
messages = deserialize(r.content)['messages']
|
||||
idx = 0
|
||||
msg_count = len(messages)
|
||||
unread_count = self.topic.unread
|
||||
for message_data in messages:
|
||||
idx = idx + 1
|
||||
message = models.Message()
|
||||
message.import_from_api(message_data)
|
||||
message.topic = self.topic
|
||||
message.unread = idx > msg_count - unread_count
|
||||
self.data.append(message)
|
||||
self._synced = True
|
||||
|
||||
def create(self, message):
|
||||
params = {'topic_id': self.topic.id, 'message': message}
|
||||
r = post(params ,'topics', self.topic.id, 'messages', 'create')
|
||||
message = models.Message()
|
||||
message.import_from_api(deserialize(r.content)['message'])
|
||||
self.data.append(message)
|
||||
return True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user