def test_qsl(self): for orig, expect in parse_qsl_test_cases: result = urllib_parse.parse_qsl(orig, keep_blank_values=True) self.assertEqual(result, expect, "Error parsing %r" % orig) expect_without_blanks = [v for v in expect if len(v[1])] result = urllib_parse.parse_qsl(orig, keep_blank_values=False) self.assertEqual(result, expect_without_blanks, "Error parsing %r" % orig)
def test_parse_qsl_encoding(self): result = urllib_parse.parse_qsl("key=\u0141%E9", encoding="latin-1") self.assertEqual(result, [('key', '\u0141\xE9')]) result = urllib_parse.parse_qsl("key=\u0141%C3%A9", encoding="utf-8") self.assertEqual(result, [('key', '\u0141\xE9')]) result = urllib_parse.parse_qsl("key=\u0141%C3%A9", encoding="ascii") self.assertEqual(result, [('key', '\u0141\ufffd\ufffd')]) result = urllib_parse.parse_qsl("key=\u0141%E9-", encoding="ascii") self.assertEqual(result, [('key', '\u0141\ufffd-')]) result = urllib_parse.parse_qsl("key=\u0141%E9-", encoding="ascii", errors="ignore") self.assertEqual(result, [('key', '\u0141-')])
def parse_request(self, environ): def rebuild_header_name(environ_key): """Construct the HTTP header name from a WSGI environ variable. """ header_name = environ_key[5:] # strip 'HTTP_' name_parts = header_name.split("_") header_name = "-".join(part.capitalize() for part in name_parts) return header_name request = {} request["host"] = environ.get("HTTP_HOST", None) request["path"] = environ.get("PATH_INFO", None) request["query"] = dict(parse_qsl(environ.get("QUERY_STRING", None))) request["method"] = environ.get("REQUEST_METHOD", None) request["headers"] = {} for key in environ: if key.startswith("HTTP_"): header_name = rebuild_header_name(key) request["headers"][header_name] = environ[key] if "CONTENT_TYPE" in environ: request["headers"]["Content-Type"] = environ["CONTENT_TYPE"] if "CONTENT_LENGTH" in environ: request["headers"]["Content-Length"] = environ["CONTENT_LENGTH"] if environ["CONTENT_LENGTH"]: request["body"] = get_post(environ) return request
def update_url_with_kwargs(url, **kwargs): if not url: return url_parts = list(urlparse(url)) query = dict(parse_qsl(url_parts[4])) query.update(kwargs) url_parts[4] = urlencode(query) return urlunparse(url_parts)
def main(): """ Router function that calls other functions depending on the provided paramstring """ params = dict(parse_qsl(sys.argv[2][1:])) utils.log('called with params: {0}'.format(str(params))) if (len(params) == 0): menu.list_categories() else: if params['action'] == 'listcategories': if params['category'] == 'Live TV': menu.make_live_list(params) else: menu.make_series_list(params) elif params['action'] == 'listseries': menu.make_episodes_list(params) elif params['action'] in ['listepisodes', 'listchannels']: play.play_video(params) elif params['action'] == 'settings': xbmcaddon.Addon().openSettings() elif params['action'] == 'sendreport': utils.user_report()
def parse_kodi_url(self, url): params = dict(parse_qsl(url)) params.pop('addon_version') for item in params.keys(): setattr(self, item, unquote_plus(params[item]))