<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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)