src/streamlink/plugin/api/validate.py
def url(**attributes):
    """Parses an URL and validates its attributes."""
    def check_url(value):
        validate(text, value)
        parsed = urlparse(value)
        if not parsed.netloc:
            raise ValueError("'{0}' is not a valid URL".format(value))

        for name, schema in attributes.items():
            if not _hasattr(parsed, name):
                raise ValueError("Invalid URL attribute '{0}'".format(name))

            try:
                validate(schema, _getattr(parsed, name))
            except ValueError as err:
                raise ValueError(
                    "Unable to validate URL attribute '{0}': {1}".format(
                        name, err
                    )
                )

        return True

    # Convert "http" to be either any("http", "https") for convenience
    if attributes.get("scheme") == "http":
        attributes["scheme"] = any("http", "https")

    return check_url
def url(**attributes):
    def check_url(value):
        validate(text, value)
        parsed = urlparse(value)
        if not parsed.netloc:
            raise ValueError("'{0}' is not a valid URL".format(value))

        for name, schema in attributes.items():
            if not _hasattr(parsed, name):
                raise ValueError("Invalid URL attribute '{0}'".format(name))

            try:
                validate(schema, _getattr(parsed, name))
            except ValueError as err:
                raise ValueError(
                    "Unable to validate URL attribute '{0}': {1}".format(
                        name, err
                    )
                )

        return True

    # Convert "http" to be either any("http", "https") for convenience
    if attributes.get("scheme") == "http":
        attributes["scheme"] = any("http", "https")

    return check_url
def url ( * * attributes ) : def check_url ( value ) : validate ( text , value ) parsed = urlparse ( value ) if not parsed . netloc : raise ValueError ( "'{0}' is not a valid URL" . format ( value ) ) for name , schema in attributes . items ( ) : if not _hasattr ( parsed , name ) : raise ValueError ( "Invalid URL attribute '{0}'" . format ( name ) ) try : validate ( schema , _getattr ( parsed , name ) ) except ValueError as err : raise ValueError ( "Unable to validate URL attribute '{0}': {1}" . format ( name , err ) ) return True # Convert "http" to be either any("http", "https") for convenience if attributes . get ( "scheme" ) == "http" : attributes [ "scheme" ] = any ( "http" , "https" ) return check_url
Parses an URL and validates its attributes.
Parses an URL and validates its attributes .