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)
Exemple #2
0
 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-')])
Exemple #4
0
 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-')])
Exemple #5
0
    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
Exemple #6
0
    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
Exemple #7
0
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]))