mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-14 01:02:59 -07:00
Initial Commit
This commit is contained in:
commit
88daa3fb91
1311 changed files with 256240 additions and 0 deletions
107
lib/pygazelle/inbox.py
Normal file
107
lib/pygazelle/inbox.py
Normal file
|
@ -0,0 +1,107 @@
|
|||
class MailboxMessage(object):
|
||||
def __init__(self, api, message):
|
||||
self.id = message['convId']
|
||||
self.conv = Conversation(api, self.id)
|
||||
self.subject = message['subject']
|
||||
self.unread = message['unread']
|
||||
self.sticky = message['sticky']
|
||||
self.fwd_id = message['forwardedId']
|
||||
self.fwd_name = message['forwardedName']
|
||||
self.sender_id = message['senderId']
|
||||
self.username = message['username']
|
||||
self.donor = message['donor']
|
||||
self.warned = message['warned']
|
||||
self.enabled = message['enabled']
|
||||
self.date = message['date']
|
||||
|
||||
def __repr__(self):
|
||||
return "MailboxMessage ID %s - %s %s %s" % (self.id, self.subject, self.sender_id, self.username)
|
||||
|
||||
|
||||
class ConversationMessage(object):
|
||||
def __init__(self, msg_resp):
|
||||
self.id = msg_resp['messageId']
|
||||
self.sender_id = msg_resp['senderId']
|
||||
self.sender_name = msg_resp['senderName']
|
||||
self.sent_date = msg_resp['sentDate']
|
||||
self.bb_body = msg_resp['bbBody']
|
||||
self.body = msg_resp['body']
|
||||
|
||||
def __repr__(self):
|
||||
return "ConversationMessage ID %s - %s %s" % (self.id, self.sender_name, self.sent_date)
|
||||
|
||||
|
||||
class Conversation(object):
|
||||
def __init__(self, api, conv_id):
|
||||
self.id = conv_id
|
||||
self.parent_api = api
|
||||
self.subject = None
|
||||
self.sticky = None
|
||||
self.messages = []
|
||||
|
||||
def __repr__(self):
|
||||
return "Conversation ID %s - %s" % (self.id, self.subject)
|
||||
|
||||
def set_conv_data(self, conv_resp):
|
||||
assert self.id == conv_resp['convId']
|
||||
self.subject = conv_resp['subject']
|
||||
self.sticky = conv_resp['sticky']
|
||||
self.messages = [ConversationMessage(m) for m in conv_resp['messages']]
|
||||
|
||||
def update_conv_data(self):
|
||||
response = self.parent_api.request(action='inbox',
|
||||
type='viewconv', id=self.id)
|
||||
self.set_conv_data(response)
|
||||
|
||||
|
||||
class Mailbox(object):
|
||||
"""
|
||||
This class represents the logged in user's inbox/sentbox
|
||||
"""
|
||||
def __init__(self, parent_api, boxtype='inbox', page='1', sort='unread'):
|
||||
self.parent_api = parent_api
|
||||
self.boxtype = boxtype
|
||||
self.current_page = page
|
||||
self.total_pages = None
|
||||
self.sort = sort
|
||||
self.messages = None
|
||||
|
||||
def set_mbox_data(self, mbox_resp):
|
||||
"""
|
||||
Takes parsed JSON response from 'inbox' action on api
|
||||
and updates the available subset of mailbox information.
|
||||
"""
|
||||
self.current_page = mbox_resp['currentPage']
|
||||
self.total_pages = mbox_resp['pages']
|
||||
self.messages = \
|
||||
[MailboxMessage(self.parent_api, m) for m in mbox_resp['messages']]
|
||||
|
||||
def update_mbox_data(self):
|
||||
response = self.parent_api.request(action='inbox',
|
||||
type=self.boxtype, page=self.current_page, sort=self.sort)
|
||||
self.set_mbox_data(response)
|
||||
|
||||
def next_page(self):
|
||||
if not self.total_pages:
|
||||
raise ValueError("call update_mbox_data() first")
|
||||
total_pages = int(self.total_pages)
|
||||
cur_page = int(self.current_page)
|
||||
if cur_page < total_pages:
|
||||
return Mailbox(self.parent_api, self.boxtype,
|
||||
str(cur_page + 1), self.sort)
|
||||
raise ValueError("Already at page %d/%d" % (cur_page, total_pages))
|
||||
|
||||
def prev_page(self):
|
||||
if not self.total_pages:
|
||||
raise ValueError("call update_mbox_data() first")
|
||||
total_pages = int(self.total_pages)
|
||||
cur_page = int(self.current_page)
|
||||
if cur_page > 1:
|
||||
return Mailbox(self.parent_api, self.boxtype,
|
||||
str(cur_page - 1), self.sort)
|
||||
raise ValueError("Already at page %d/%d" % (cur_page, total_pages))
|
||||
|
||||
def __repr__(self):
|
||||
return "Mailbox: %s %s Page %s/%s" \
|
||||
% (self.boxtype, self.sort,
|
||||
self.current_page, self.total_pages)
|
Loading…
Add table
Add a link
Reference in a new issue