def compose_full_url(pub, uuid_url=False):
    """
    Compose full url for given `pub`, with protocol, server's address and port.

    Args:
        pub (obj): :class:`.DBPublication` instance.
        uuid_url (bool, default False): Compose URL using UUID.

    Returns:
        str: Absolute url of the publication.
    Raises:
        PrivatePublicationError: When the `pub` is private publication.
    """
    url = compose_path(pub, uuid_url)

    if WEB_PORT == 80:
        return "%s://%s%s" % (_PROTOCOL, WEB_ADDR, url)

    return "%s://%s:%d%s" % (_PROTOCOL, WEB_ADDR, WEB_PORT, url)