def __init__(self, session): MailClient.__init__(self, session) self._count = 0 self._client = Facebook(API_KEY, SECRET_KEY, oauth2=True, app_id=API_KEY) self._session = session
class FacebookMail(MailClient): def __init__(self, session): MailClient.__init__(self, session) self._count = 0 self._client = Facebook(API_KEY, SECRET_KEY, oauth2 = True, app_id = API_KEY) self._session = session def on_run(self): self.get_token() old_count, new_count = self.update_counter() if old_count < new_count: mail = self.new_mails() self._handlers["mailnew"](mail) self._handlers["mailcount"](new_count) def on_initialize(self): self.get_token() if self._client.oauth2_token == None: conn_url = self._client.login(REDIRECT_URL, required_permissions="read_mailbox, offline_access") self._handlers["socialreq"](conn_url) old_count, new_count = self.update_counter() self._handlers["mailcount"](new_count) def on_end(self): pass def get_token(self): self._client.oauth2_token = self._session.config.facebook_token def update_counter(self): if self._client.oauth2_token == None: return (0, 0) old_count = self._count query = self._client.fql.query("SELECT folder_id, name, unread_count, viewer_id FROM mailbox_folder WHERE viewer_id=me() and folder_id = 0") self._count = query[0]['unread_count'] return (old_count, self._count) def new_mails(self): #What you're going to see is not suitable for programmers.. #I didn't get mad, it's just seems like Fql is not supporting tables join. #I made this fast workaround, hope to find a better solution. Thank you! query_thread = self._client.fql.query("SELECT thread_id, subject, recipients FROM thread WHERE folder_id = 0 and unread = 1") orclause = "WHERE " for thread in query_thread: orclause = "%s thread_id = %s OR " % (orclause, thread['thread_id']) orclause = orclause[0:len(orclause)-3] orclause = "%s ORDER BY created_time DESC" % orclause query_message = self._client.fql.query("SELECT body, author_id, created_time FROM message %s" % orclause) query_user = self._client.fql.query("SELECT name FROM user WHERE uid = %s" % query_message[0]['author_id']) return MailMessage("", query_user[0]['name'], query_message[0]['body'], "", "")
class FacebookMail(MailClient): def __init__(self, session): MailClient.__init__(self, session) self._count = 0 self._client = Facebook(API_KEY, SECRET_KEY, oauth2 = True, app_id = API_KEY) self._session = session def on_run(self): self.get_token() old_count, new_count = self.update_counter() if old_count < new_count: self._handlers["mailcount"](new_count) def on_initialize(self): self.get_token() if self._client.oauth2_token == None: conn_url = self._client.login(REDIRECT_URL, required_permissions="read_mailbox, offline_access") self._handlers["socialreq"](conn_url) old_count, new_count = self.update_counter() self._handlers["mailcount"](new_count) def on_end(self): pass def get_token(self): self._client.oauth2_token = self._session.config.facebook_token def update_counter(self): if self._client.oauth2_token == None: return (0, 0) old_count = self._count query = self._client.fql.query("SELECT folder_id, name, unread_count, viewer_id FROM mailbox_folder WHERE viewer_id=me() and folder_id = 0") self._count = query[0]['unread_count'] return (old_count, self._count) def new_mails(self): pass
def __init__(self, session): MailClient.__init__(self, session) self._count = 0 self._client = Facebook(API_KEY, SECRET_KEY, oauth2 = True, app_id = API_KEY) self._session = session
class FacebookMail(MailClient): def __init__(self, session): MailClient.__init__(self, session) self._count = 0 self._client = Facebook(API_KEY, SECRET_KEY, oauth2=True, app_id=API_KEY) self._session = session def on_run(self): self.get_token() old_count, new_count = self.update_counter() if old_count < new_count: mail = self.new_mails() self._handlers["mailnew"](mail) self._handlers["mailcount"](new_count) def on_initialize(self): self.get_token() if self._client.oauth2_token == None: conn_url = self._client.login( REDIRECT_URL, required_permissions="read_mailbox, offline_access") self._handlers["socialreq"](conn_url) old_count, new_count = self.update_counter() self._handlers["mailcount"](new_count) def on_end(self): pass def get_token(self): self._client.oauth2_token = self._session.config.facebook_token def update_counter(self): if self._client.oauth2_token == None: return (0, 0) old_count = self._count query = self._client.fql.query( "SELECT folder_id, name, unread_count, viewer_id FROM mailbox_folder WHERE viewer_id=me() and folder_id = 0" ) self._count = query[0]['unread_count'] return (old_count, self._count) def new_mails(self): #What you're going to see is not suitable for programmers.. #I didn't get mad, it's just seems like Fql is not supporting tables join. #I made this fast workaround, hope to find a better solution. Thank you! query_thread = self._client.fql.query( "SELECT thread_id, subject, recipients FROM thread WHERE folder_id = 0 and unread = 1" ) orclause = "WHERE " for thread in query_thread: orclause = "%s thread_id = %s OR " % (orclause, thread['thread_id']) orclause = orclause[0:len(orclause) - 3] orclause = "%s ORDER BY created_time DESC" % orclause query_message = self._client.fql.query( "SELECT body, author_id, created_time FROM message %s" % orclause) query_user = self._client.fql.query( "SELECT name FROM user WHERE uid = %s" % query_message[0]['author_id']) return MailMessage("", query_user[0]['name'], query_message[0]['body'], "", "")