forked from platypush/platypush
60 lines
1.6 KiB
Python
60 lines
1.6 KiB
Python
import importlib
|
|
import inspect
|
|
import os
|
|
import pkgutil
|
|
|
|
from platypush.backend import Backend
|
|
from platypush.config import Config
|
|
from platypush.utils import get_ip_or_hostname
|
|
|
|
from .logger import logger
|
|
|
|
|
|
def get_http_port():
|
|
from platypush.backend.http import HttpBackend
|
|
|
|
http_conf = Config.get('backend.http') or {}
|
|
return http_conf.get('port', HttpBackend._DEFAULT_HTTP_PORT)
|
|
|
|
|
|
def get_routes():
|
|
base_pkg = '.'.join([Backend.__module__, 'http', 'app', 'routes'])
|
|
base_dir = os.path.join(
|
|
os.path.dirname(inspect.getfile(Backend)), 'http', 'app', 'routes'
|
|
)
|
|
routes = []
|
|
|
|
for _, mod_name, _ in pkgutil.walk_packages([base_dir], prefix=base_pkg + '.'):
|
|
try:
|
|
module = importlib.import_module(mod_name)
|
|
if hasattr(module, '__routes__'):
|
|
routes.extend(module.__routes__)
|
|
except Exception as e:
|
|
logger.warning('Could not import module %s', mod_name)
|
|
logger.exception(e)
|
|
continue
|
|
|
|
return routes
|
|
|
|
|
|
def get_local_base_url():
|
|
http_conf = Config.get('backend.http') or {}
|
|
bind_address = http_conf.get('bind_address')
|
|
if not bind_address or bind_address == '0.0.0.0':
|
|
bind_address = 'localhost'
|
|
|
|
return '{proto}://{host}:{port}'.format(
|
|
proto=('https' if http_conf.get('ssl_cert') else 'http'),
|
|
host=bind_address,
|
|
port=get_http_port(),
|
|
)
|
|
|
|
|
|
def get_remote_base_url():
|
|
http_conf = Config.get('backend.http') or {}
|
|
return '{proto}://{host}:{port}'.format(
|
|
proto=('https' if http_conf.get('ssl_cert') else 'http'),
|
|
host=get_ip_or_hostname(),
|
|
port=get_http_port(),
|
|
)
|