(short_code, request=None, secret_key=None)
return link.long_url
Returns the unshortened long url from short url

    :param short_code: str
    :param request: http request object. When request is not None parse the
        request object and get stats out of it.
    :return: str
Returns the unshortened long url from short url
Returns the unshortened long url from short url
def resolve_short(short_code, request=None, secret_key=None):
    """Returns the unshortened long url from short url

    :param short_code: str
    :param request: http request object. When request is not None parse the
        request object and get stats out of it.
    :return: str
    """
    manager = LinkManager()
    link = manager.get_by_code(short_code=short_code)
    assert link is not None
    if manager.has_expired() is True:
        raise LinkExpired('Link has expired')
    if link.is_protected:
        if not secret_key or str(link.secret_key) != str(secret_key):
            raise URLAuthFailed(short_code)
    # put stats
    if request:
        save_clickmeta(request, link)
    return link.long_url
def resolve_short ( short_code , request = None , secret_key = None ) : manager = LinkManager ( ) link = manager . get_by_code ( short_code = short_code ) assert link is not None if manager . has_expired ( ) is True : raise LinkExpired ( 'Link has expired' ) if link . is_protected : if not secret_key or str ( link . secret_key ) != str ( secret_key ) : raise URLAuthFailed ( short_code ) # put stats if request : save_clickmeta ( request , link ) return link . long_url