forked from sch/Slixfeed
Standardize modules client and component
This commit is contained in:
parent
00a8ed180a
commit
51e48c8389
2 changed files with 52 additions and 31 deletions
|
@ -64,8 +64,8 @@ import slixfeed.config as config
|
||||||
import slixfeed.sqlite as sqlite
|
import slixfeed.sqlite as sqlite
|
||||||
from slixfeed.xmpp.bookmark import XmppBookmark
|
from slixfeed.xmpp.bookmark import XmppBookmark
|
||||||
from slixfeed.xmpp.connect import XmppConnect
|
from slixfeed.xmpp.connect import XmppConnect
|
||||||
from slixfeed.xmpp.message import XmppMessage
|
|
||||||
from slixfeed.xmpp.muc import XmppGroupchat
|
from slixfeed.xmpp.muc import XmppGroupchat
|
||||||
|
from slixfeed.xmpp.message import XmppMessage
|
||||||
import slixfeed.xmpp.process as process
|
import slixfeed.xmpp.process as process
|
||||||
import slixfeed.xmpp.profile as profile
|
import slixfeed.xmpp.profile as profile
|
||||||
from slixfeed.xmpp.roster import XmppRoster
|
from slixfeed.xmpp.roster import XmppRoster
|
||||||
|
@ -146,8 +146,8 @@ class Slixfeed(slixmpp.ClientXMPP):
|
||||||
|
|
||||||
self.add_event_handler("reactions",
|
self.add_event_handler("reactions",
|
||||||
self.on_reactions)
|
self.on_reactions)
|
||||||
# self.add_event_handler("presence_error",
|
self.add_event_handler("presence_error",
|
||||||
# self.on_presence_error)
|
self.on_presence_error)
|
||||||
self.add_event_handler("presence_subscribe",
|
self.add_event_handler("presence_subscribe",
|
||||||
self.on_presence_subscribe)
|
self.on_presence_subscribe)
|
||||||
self.add_event_handler("presence_subscribed",
|
self.add_event_handler("presence_subscribed",
|
||||||
|
|
|
@ -63,16 +63,16 @@ from slixmpp.plugins.xep_0048.stanza import Bookmarks
|
||||||
import slixfeed.config as config
|
import slixfeed.config as config
|
||||||
import slixfeed.sqlite as sqlite
|
import slixfeed.sqlite as sqlite
|
||||||
from slixfeed.xmpp.bookmark import XmppBookmark
|
from slixfeed.xmpp.bookmark import XmppBookmark
|
||||||
import slixfeed.xmpp.connect as connect
|
from slixfeed.xmpp.connect import XmppConnect
|
||||||
# NOTE MUC is possible for component
|
# NOTE MUC is possible for component
|
||||||
# import slixfeed.xmpp.muc as muc
|
from slixfeed.xmpp.muc import XmppGroupchat
|
||||||
from slixfeed.xmpp.message import XmppMessage
|
from slixfeed.xmpp.message import XmppMessage
|
||||||
import slixfeed.xmpp.process as process
|
import slixfeed.xmpp.process as process
|
||||||
import slixfeed.xmpp.profile as profile
|
import slixfeed.xmpp.profile as profile
|
||||||
# import slixfeed.xmpp.roster as roster
|
from slixfeed.xmpp.roster import XmppRoster
|
||||||
# import slixfeed.xmpp.service as service
|
# import slixfeed.xmpp.service as service
|
||||||
from slixfeed.xmpp.presence import XmppPresence
|
from slixfeed.xmpp.presence import XmppPresence
|
||||||
from slixfeed.xmpp.utility import XmppUtility
|
from slixfeed.xmpp.utility import get_chat_type
|
||||||
from slixmpp.xmlstream import ET
|
from slixmpp.xmlstream import ET
|
||||||
# from slixmpp.xmlstream.handler import Callback
|
# from slixmpp.xmlstream.handler import Callback
|
||||||
# from slixmpp.xmlstream.matcher import MatchXPath
|
# from slixmpp.xmlstream.matcher import MatchXPath
|
||||||
|
@ -181,18 +181,18 @@ class SlixfeedComponent(slixmpp.ComponentXMPP):
|
||||||
|
|
||||||
async def on_session_end(self, event):
|
async def on_session_end(self, event):
|
||||||
message = 'Session has ended.'
|
message = 'Session has ended.'
|
||||||
await connect.recover_connection(self, message)
|
await XmppConnect.recover(self, message)
|
||||||
|
|
||||||
|
|
||||||
async def on_connection_failed(self, event):
|
async def on_connection_failed(self, event):
|
||||||
message = 'Connection has failed. Reason: {}'.format(event)
|
message = 'Connection has failed. Reason: {}'.format(event)
|
||||||
await connect.recover_connection(self, message)
|
await XmppConnect.recover(self, message)
|
||||||
|
|
||||||
|
|
||||||
async def on_session_start(self, event):
|
async def on_session_start(self, event):
|
||||||
self.send_presence()
|
self.send_presence()
|
||||||
await self['xep_0115'].update_caps()
|
await self['xep_0115'].update_caps()
|
||||||
# await muc.autojoin(self)
|
# await XmppGroupchat.autojoin(self)
|
||||||
profile.set_identity(self, 'service')
|
profile.set_identity(self, 'service')
|
||||||
await profile.update(self)
|
await profile.update(self)
|
||||||
task.ping_task(self)
|
task.ping_task(self)
|
||||||
|
@ -207,7 +207,7 @@ class SlixfeedComponent(slixmpp.ComponentXMPP):
|
||||||
async def on_session_resumed(self, event):
|
async def on_session_resumed(self, event):
|
||||||
self.send_presence()
|
self.send_presence()
|
||||||
self['xep_0115'].update_caps()
|
self['xep_0115'].update_caps()
|
||||||
# await muc.autojoin(self)
|
# await XmppGroupchat.autojoin(self)
|
||||||
profile.set_identity(self, 'service')
|
profile.set_identity(self, 'service')
|
||||||
|
|
||||||
# Service.commands(self)
|
# Service.commands(self)
|
||||||
|
@ -232,8 +232,8 @@ class SlixfeedComponent(slixmpp.ComponentXMPP):
|
||||||
|
|
||||||
await process.message(self, message)
|
await process.message(self, message)
|
||||||
|
|
||||||
# chat_type = message['type']
|
# chat_type = message["type"]
|
||||||
# message_body = message['body']
|
# message_body = message["body"]
|
||||||
# message_reply = message.reply
|
# message_reply = message.reply
|
||||||
|
|
||||||
|
|
||||||
|
@ -253,16 +253,15 @@ class SlixfeedComponent(slixmpp.ComponentXMPP):
|
||||||
|
|
||||||
async def on_presence_subscribed(self, presence):
|
async def on_presence_subscribed(self, presence):
|
||||||
jid = presence['from'].bare
|
jid = presence['from'].bare
|
||||||
if await XmppUtility.get_chat_type(self, jid) == 'chat':
|
message_subject = 'RSS News Bot'
|
||||||
message_subject = 'RSS News Bot'
|
message_body = ('Greetings!\n'
|
||||||
message_body = ('Greetings!\n'
|
'I am {}, the news anchor.\n'
|
||||||
'I am {}, the news anchor.\n'
|
'My job is to bring you the latest '
|
||||||
'My job is to bring you the latest '
|
'news from sources you provide me with.\n'
|
||||||
'news from sources you provide me with.\n'
|
'You may always reach me via xmpp:{}?message'
|
||||||
'You may always reach me via xmpp:{}?message'
|
.format(self.alias, self.boundjid.bare))
|
||||||
.format(self.alias, self.boundjid.bare))
|
XmppMessage.send_headline(self, jid, message_subject, message_body,
|
||||||
XmppMessage.send_headline(self, jid, message_subject, message_body,
|
'chat')
|
||||||
'chat')
|
|
||||||
|
|
||||||
|
|
||||||
async def on_presence_available(self, presence):
|
async def on_presence_available(self, presence):
|
||||||
|
@ -270,20 +269,23 @@ class SlixfeedComponent(slixmpp.ComponentXMPP):
|
||||||
# await task.start_tasks(self, presence)
|
# await task.start_tasks(self, presence)
|
||||||
# NOTE Already done inside the start-task function
|
# NOTE Already done inside the start-task function
|
||||||
jid = presence['from'].bare
|
jid = presence['from'].bare
|
||||||
|
# FIXME TODO Find out what is the source responsible for a couple presences with empty message
|
||||||
|
# NOTE This is a temporary solution
|
||||||
|
await asyncio.sleep(10)
|
||||||
await task.start_tasks_xmpp(self, jid)
|
await task.start_tasks_xmpp(self, jid)
|
||||||
|
|
||||||
|
|
||||||
async def on_presence_unsubscribed(self, presence):
|
async def on_presence_unsubscribed(self, presence):
|
||||||
jid = presence['from'].bare
|
jid = presence['from'].bare
|
||||||
message = 'You have been unsubscribed.'
|
message_body = 'You have been unsubscribed.'
|
||||||
status_message = '🖋️ Subscribe to receive updates'
|
status_message = '🖋️ Subscribe to receive updates'
|
||||||
chat_type = await XmppUtility.get_chat_type(self, jid)
|
XmppMessage.send(self, jid, message_body, 'chat')
|
||||||
XmppMessage.send(self, jid, message, chat_type)
|
XmppPresence.send(self, jid, status_message,
|
||||||
XmppPresence.send(self, jid, status_message, chat_type)
|
presence_type='unsubscribed')
|
||||||
|
|
||||||
|
|
||||||
async def on_presence_unavailable(self, presence):
|
async def on_presence_unavailable(self, presence):
|
||||||
jid = presence["from"].bare
|
jid = presence['from'].bare
|
||||||
# await task.stop_tasks(self, jid)
|
# await task.stop_tasks(self, jid)
|
||||||
await task.clean_tasks_xmpp(jid)
|
await task.clean_tasks_xmpp(jid)
|
||||||
|
|
||||||
|
@ -317,8 +319,7 @@ class SlixfeedComponent(slixmpp.ComponentXMPP):
|
||||||
jid = message['from'].bare
|
jid = message['from'].bare
|
||||||
# await task.clean_tasks_xmpp(jid, ['status'])
|
# await task.clean_tasks_xmpp(jid, ['status'])
|
||||||
status_message='Press "help" for manual, or "info" for information.'
|
status_message='Press "help" for manual, or "info" for information.'
|
||||||
chat_type = await XmppUtility.get_chat_type(self, jid)
|
XmppPresence.send(self, jid, status_message)
|
||||||
XmppPresence.send(self, jid, status_message, chat_type)
|
|
||||||
|
|
||||||
|
|
||||||
async def on_chatstate_gone(self, message):
|
async def on_chatstate_gone(self, message):
|
||||||
|
@ -342,6 +343,25 @@ class SlixfeedComponent(slixmpp.ComponentXMPP):
|
||||||
await task.start_tasks_xmpp(self, jid, ['status'])
|
await task.start_tasks_xmpp(self, jid, ['status'])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# NOTE Failed attempt
|
||||||
|
# Need to use Super or Inheritance or both
|
||||||
|
# self['xep_0050'].add_command(node='settings',
|
||||||
|
# name='Settings',
|
||||||
|
# handler=self._handle_settings)
|
||||||
|
# self['xep_0050'].add_command(node='subscriptions',
|
||||||
|
# name='Subscriptions',
|
||||||
|
# handler=self._handle_subscriptions)
|
||||||
|
|
||||||
|
|
||||||
|
# async def _handle_settings(self, iq, session):
|
||||||
|
# await XmppCommand._handle_settings(self, iq, session)
|
||||||
|
|
||||||
|
|
||||||
|
# async def _handle_subscriptions(self, iq, session):
|
||||||
|
# await XmppCommand._handle_subscriptions(self, iq, session)
|
||||||
|
|
||||||
|
|
||||||
# TODO Move class Service to a separate file
|
# TODO Move class Service to a separate file
|
||||||
# class Service(Slixfeed):
|
# class Service(Slixfeed):
|
||||||
# def __init__(self):
|
# def __init__(self):
|
||||||
|
@ -552,7 +572,8 @@ class SlixfeedComponent(slixmpp.ComponentXMPP):
|
||||||
value = True
|
value = True
|
||||||
form.add_field(var='old',
|
form.add_field(var='old',
|
||||||
ftype='boolean',
|
ftype='boolean',
|
||||||
desc='Mark items of newly added subscriptions as read.',
|
desc='Do not mark items of newly added subscriptions '
|
||||||
|
'as read.',
|
||||||
# label='Send only new items',
|
# label='Send only new items',
|
||||||
label='Include old news',
|
label='Include old news',
|
||||||
value=value)
|
value=value)
|
||||||
|
|
Loading…
Reference in a new issue