Mercurial > libervia-backend
diff sat/tools/common/uri.py @ 2624:56f94936df1e
code style reformatting using black
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 27 Jun 2018 20:14:46 +0200 |
parents | 26edcf3a30eb |
children | 003b8b4b56a7 |
line wrap: on
line diff
--- a/sat/tools/common/uri.py Wed Jun 27 07:51:29 2018 +0200 +++ b/sat/tools/common/uri.py Wed Jun 27 20:14:46 2018 +0200 @@ -24,6 +24,7 @@ # FIXME: basic implementation, need to follow RFC 5122 + def parseXMPPUri(uri): """Parse an XMPP uri and return a dict with various information @@ -39,57 +40,64 @@ id: id of the element (item for pubsub) @raise ValueError: the scheme is not xmpp """ - uri_split = urlparse.urlsplit(uri.encode('utf-8')) - if uri_split.scheme != 'xmpp': - raise ValueError(u'this is not a XMPP URI') + uri_split = urlparse.urlsplit(uri.encode("utf-8")) + if uri_split.scheme != "xmpp": + raise ValueError(u"this is not a XMPP URI") # XXX: we don't use jid.JID for path as it can be used both in backend and frontend # which may use different JID classes - data = {u'path': urllib.unquote(uri_split.path).decode('utf-8')} + data = {u"path": urllib.unquote(uri_split.path).decode("utf-8")} - query_end = uri_split.query.find(';') + query_end = uri_split.query.find(";") query_type = uri_split.query[:query_end] - if query_end == -1 or '=' in query_type: - raise ValueError('no query type, invalid XMPP URI') + if query_end == -1 or "=" in query_type: + raise ValueError("no query type, invalid XMPP URI") pairs = urlparse.parse_qs(uri_split.geturl()) for k, v in pairs.items(): if len(v) != 1: raise NotImplementedError(u"multiple values not managed") - if k in ('path', 'type', 'sub_type'): + if k in ("path", "type", "sub_type"): raise NotImplementedError(u"reserved key used in URI, this is not supported") - data[k.decode('utf-8')] = urllib.unquote(v[0]).decode('utf-8') + data[k.decode("utf-8")] = urllib.unquote(v[0]).decode("utf-8") if query_type: - data[u'type'] = query_type.decode('utf-8') - elif u'node' in data: - data[u'type'] = u'pubsub' + data[u"type"] = query_type.decode("utf-8") + elif u"node" in data: + data[u"type"] = u"pubsub" else: - data[u'type'] = '' + data[u"type"] = "" - if u'node' in data: - if data[u'node'].startswith(u'urn:xmpp:microblog:'): - data[u'sub_type'] = 'microblog' + if u"node" in data: + if data[u"node"].startswith(u"urn:xmpp:microblog:"): + data[u"sub_type"] = "microblog" return data + def addPairs(uri, pairs): - for k,v in pairs.iteritems(): - uri.append(u';' + urllib.quote_plus(k.encode('utf-8')) + u'=' + urllib.quote_plus(v.encode('utf-8'))) + for k, v in pairs.iteritems(): + uri.append( + u";" + + urllib.quote_plus(k.encode("utf-8")) + + u"=" + + urllib.quote_plus(v.encode("utf-8")) + ) + def buildXMPPUri(type_, **kwargs): - uri = [u'xmpp:'] - subtype = kwargs.pop('subtype', None) - path = kwargs.pop('path') - uri.append(urllib.quote_plus(path.encode('utf-8')).replace(u'%40', '@')) + uri = [u"xmpp:"] + subtype = kwargs.pop("subtype", None) + path = kwargs.pop("path") + uri.append(urllib.quote_plus(path.encode("utf-8")).replace(u"%40", "@")) - if type_ == u'pubsub': - if subtype == 'microblog' and not kwargs.get('node'): - kwargs[u'node'] = 'urn:xmpp:microblog:0' + if type_ == u"pubsub": + if subtype == "microblog" and not kwargs.get("node"): + kwargs[u"node"] = "urn:xmpp:microblog:0" if kwargs: - uri.append(u'?') + uri.append(u"?") addPairs(uri, kwargs) else: - raise NotImplementedError(u'{type_} URI are not handled yet'.format(type_=type_)) + raise NotImplementedError(u"{type_} URI are not handled yet".format(type_=type_)) - return u''.join(uri) + return u"".join(uri)