# HG changeset patch # User Goffi # Date 1457530434 -3600 # Node ID 085f29c20f7ee7831fa52ff99a7e6bc72c7e2e49 # Parent faa8427dd032cbacd7ab86552d2a20f780a7b82a plugin XEP-0277: removed mbGetAtom which has not reason to be in the backend, as it is highly dependant of (web) frontend elements. The code will be moved to Libervia: /!\ this break Libervia static blog temporarily, the time to commit the changes diff -r faa8427dd032 -r 085f29c20f7e src/plugins/plugin_xep_0277.py --- a/src/plugins/plugin_xep_0277.py Wed Mar 09 12:54:26 2016 +0100 +++ b/src/plugins/plugin_xep_0277.py Wed Mar 09 14:33:54 2016 +0100 @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from sat.core.i18n import _, D_ +from sat.core.i18n import _ from sat.core.constants import Const as C from sat.core.log import getLogger log = getLogger(__name__) @@ -39,7 +39,6 @@ import uuid import time import urlparse -import urllib NS_MICROBLOG = 'urn:xmpp:microblog:0' NS_ATOM = 'http://www.w3.org/2005/Atom' @@ -102,8 +101,6 @@ method=self._mbGetFromManyWithCommentsRTResult, async=True) host.bridge.addMethod("mbGetFromManyWithComments", ".plugin", in_sign='sasiia{ss}a{ss}s', out_sign='s', method=self._mbGetFromManyWithComments) - host.bridge.addMethod("mbGetAtom", ".plugin", in_sign='ssiasa{ss}s', out_sign='s', - method=self._mbGetAtom, async=True) def _checkFeaturesCb(self, available): return {'available': C.BOOL_TRUE} @@ -913,63 +910,3 @@ d.addErrback(lambda failure: (unicode(failure.value), ([],{}))) return self.rt_sessions.newSession(deferreds, client.profile) - - # atom feed - - def _mbGetAtom(self, service_jid_s, node="", max_items=10, item_ids=None, extra_dict=None, profile_key=C.PROF_KEY_NONE): - """Get the atom feed of the last published microblogs - - @param service_jid(jid.JID): jid of the publisher - @param node(unicode, None): node to get (or microblog node if None) - @param max_items(int): maximum number of item to get, C.NO_LIMIT for no limit - @param item_ids (list[unicode]): list of item IDs - @param rsm_request (rsm.RSMRequest): RSM request data - @param extra (dict): extra data - @param profile_key: %(doc_profile_key)s - @return: a deferred unicode (atom XML feed) - """ - max_items = None if max_items == C.NO_LIMIT else max_items - extra = self._p.parseExtra(extra_dict) - return self.mbGetAtom(jid.JID(service_jid_s), node or None, max_items or None, item_ids, extra.rsm_request, extra.extra, profile_key) - - @defer.inlineCallbacks - def mbGetAtom(self, service_jid, node=None, max_items=None, item_ids=None, rsm_request=None, extra=None, profile_key=C.PROF_KEY_NONE): - """Get the atom feed of the last published microblogs - - @param service_jid(jid.JID): jid of the publisher - @param node(unicode, None): node to get (or microblog node if None) - @param max_items(int): maximum number of item to get, C.NO_LIMIT for no limit - @param item_ids (list[unicode]): list of item IDs - @param rsm_request (rsm.RSMRequest): RSM request data - @param extra (dict): extra data - @param profile_key: %(doc_profile_key)s - - @return: a deferred couple with the list of items and metadatas. - """ - if node is None: - node = NS_MICROBLOG - - feed_elt = domish.Element((NS_ATOM, 'feed')) - title = D_(u"{user}'s blogposts").format(user=service_jid.user) - feed_elt.addElement('title', content=title) - link_feed_elt = feed_elt.addElement('link') - link_feed_elt['href'] = 'http://{host}/blog/{user}/atom.xml'.format( - host=urllib.quote(service_jid.host.encode('utf-8'),''), - user=urllib.quote(service_jid.user.encode('utf-8'),'')) - link_feed_elt['rel'] = 'self' - link_blog_elt = feed_elt.addElement('link') - link_blog_elt['href'] = 'http://{host}/blog/{user}'.format( - host=urllib.quote(service_jid.host.encode('utf-8'),''), - user=urllib.quote(service_jid.user.encode('utf-8'),'')) - feed_elt.addElement('id', content=node) - feed_elt.addElement('updated', rfc3339.timestamp_from_tf(rfc3339.tf_utc())) - - # FIXME: no cleaning is done here - # FIXME: no check is done neither, we have to be sure that we get microblogs - items, metadata = yield self._p.getItems(service_jid, node, max_items=max_items, item_ids=item_ids, rsm_request=rsm_request, extra=extra, profile_key=profile_key) - - for item in items: - entry_elt = item.elements(NS_ATOM, 'entry').next() - feed_elt.addChild(entry_elt) - - defer.returnValue(u''+feed_elt.toXml())