Skip to content

ngrok

dev_tool.services.ngrok

__all__ = ['NgrokService'] module-attribute

NgrokService

Bases: BaseService

A service class for managing ngrok proxy tunnels.

Source code in dev_tool/services/ngrok/service.py
def __init__(self) -> None:
    super().__init__()

    self._listener = None

start

A method that starts a ngrok proxy tunnel.

Parameters:

  • addr (str) –

    The address to forward traffic to.

Returns:

  • str

    The public ngrok URL.

Source code in dev_tool/services/ngrok/service.py
@is_ngrok_environment_variables
def start(self, addr: str) -> str:
    """
    A method that starts a ngrok proxy tunnel.

    :param addr: The address to forward traffic to.
    :return: The public ngrok URL.
    """

    try:
        authtoken = os.getenv('NGROK_AUTHTOKEN')
        self._listener = ngrok.forward(addr=addr, authtoken=authtoken)
    except Exception:
        message = f'Failed to start ngrok proxy on {addr}'
        log.exception(message)

        raise NgrokServiceError(message) from None
    else:
        return self._listener.url()

stop

A method that stops the ngrok proxy tunnel.

Source code in dev_tool/services/ngrok/service.py
def stop(self) -> None:
    """A method that stops the ngrok proxy tunnel."""

    if self._listener:
        try:
            url = self._listener.url()
            ngrok.disconnect(url)
        except Exception:
            log.exception('Failed to disconnect ngrok listener')

        self._listener = None