# HG changeset patch # User Goffi # Date 1498670348 -7200 # Node ID e2f96cd1887bcc2c2c1167dd84aae72ca6633148 # Parent 489efbda377caf4ac275c1198c23527f6fc872c9 jp (cmd_pubsub): xmpp: uri handling, first draft diff -r 489efbda377c -r e2f96cd1887b frontends/src/jp/cmd_pubsub.py --- a/frontends/src/jp/cmd_pubsub.py Wed Jun 28 01:28:41 2017 +0200 +++ b/frontends/src/jp/cmd_pubsub.py Wed Jun 28 19:19:08 2017 +0200 @@ -59,6 +59,7 @@ self.host.quit(C.EXIT_BRIDGE_ERRBACK) def start(self): + common.checkURI(self.args) self.host.bridge.psNodeConfigurationGet( self.args.service, self.args.node, @@ -198,6 +199,7 @@ self.host.quit(C.EXIT_BRIDGE_ERRBACK) def start(self): + common.checkURI(self.args) self.host.bridge.psNodeAffiliationsGet( self.args.service, self.args.node, @@ -285,6 +287,7 @@ self.host.quit(C.EXIT_BRIDGE_ERRBACK) def start(self): + common.checkURI(self.args) self.host.bridge.psItemsGet( self.args.service, self.args.node, diff -r 489efbda377c -r e2f96cd1887b frontends/src/jp/common.py --- a/frontends/src/jp/common.py Wed Jun 28 01:28:41 2017 +0200 +++ b/frontends/src/jp/common.py Wed Jun 28 19:19:08 2017 +0200 @@ -20,6 +20,7 @@ from sat_frontends.jp.constants import Const as C from sat.core.i18n import _ from sat.tools.common import regex +from sat.tools.common import uri from sat.tools import config from ConfigParser import NoSectionError, NoOptionError import json @@ -81,6 +82,32 @@ return [] +def checkURI(args): + """check if args.node is an URI + + if a valid xmpp: URI is found, args.service, args.node and args.item will be set + """ + # FIXME: Q&D way to handle xmpp: uris, a generic way is needed + # and it should be merged with code in BaseEdit + if not args.service and args.node.startswith('xmpp:'): + try: + uri_data = uri.parseXMPPUri(args.node) + except ValueError: + pass + else: + if uri_data[u'type'] == 'pubsub': + args.service = uri_data[u'path'] + args.node = uri_data[u'node'] + if u'item' in uri_data: + try: + item = getattr(uri_data, 'item') + except AttributeError: + pass + else: + if item is None: + args.item = uri_data + + class BaseEdit(object): u"""base class for editing commands