Al-HUWAITI Shell
Al-huwaiti


Server : LiteSpeed
System : Linux in-mum-web1949.main-hosting.eu 5.14.0-503.40.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Mon May 5 06:06:04 EDT 2025 x86_64
User : u595547767 ( 595547767)
PHP Version : 7.4.33
Disable Function : NONE
Directory :  /opt/alt/python311/lib/python3.11/site-packages/validators/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/alt/python311/lib/python3.11/site-packages/validators/uri.py
"""URI."""

# Read: https://stackoverflow.com/questions/176264
# https://www.rfc-editor.org/rfc/rfc3986#section-3

# local
from .email import email
from .url import url
from .utils import validator


def _file_url(value: str):
    if not value.startswith("file:///"):
        return False
    return True


def _ipfs_url(value: str):
    if not value.startswith("ipfs://"):
        return False
    return True


@validator
def uri(value: str, /):
    """Return whether or not given value is a valid URI.

    Examples:
        >>> uri('mailto:example@domain.com')
        True
        >>> uri('file:path.txt')
        ValidationError(func=uri, args={'value': 'file:path.txt'})

    Args:
        value:
            URI to validate.

    Returns:
        (Literal[True]): If `value` is a valid URI.
        (ValidationError): If `value` is an invalid URI.
    """
    if not value:
        return False

    # TODO: work on various validations

    # url
    if any(
        # fmt: off
        value.startswith(item)
        for item in {
            "ftp",
            "ftps",
            "git",
            "http",
            "https",
            "irc",
            "rtmp",
            "rtmps",
            "rtsp",
            "sftp",
            "ssh",
            "telnet",
        }
        # fmt: on
    ):
        return url(value)

    # email
    if value.startswith("mailto:"):
        return email(value[len("mailto:") :])

    # file
    if value.startswith("file:"):
        return _file_url(value)

    # ipfs
    if value.startswith("ipfs:"):
        return _ipfs_url(value)

    # magnet
    if value.startswith("magnet:?"):
        return True

    # telephone
    if value.startswith("tel:"):
        return True

    # data
    if value.startswith("data:"):
        return True

    # urn
    if value.startswith("urn:"):
        return True

    # urc
    if value.startswith("urc:"):
        return True

    return False

Al-HUWAITI Shell