def create(self): """Create a new session.""" with self._lock: session_id = util.get_random_string(20) while session_id in self._sessions: session_id = util.get_random_string(20) self._sessions[session_id] = session_valid_time() return session_id
def setup(hass, config=None): """ Sets up the HTTP API and debug interface. """ if config is None or DOMAIN not in config: config = {DOMAIN: {}} api_password = util.convert(config[DOMAIN].get(CONF_API_PASSWORD), str) no_password_set = api_password is None if no_password_set: api_password = util.get_random_string() # If no server host is given, accept all incoming requests server_host = config[DOMAIN].get(CONF_SERVER_HOST, '0.0.0.0') server_port = config[DOMAIN].get(CONF_SERVER_PORT, SERVER_PORT) development = str(config[DOMAIN].get(CONF_DEVELOPMENT, "")) == "1" sessions_enabled = config[DOMAIN].get(CONF_SESSIONS_ENABLED, True) server = HomeAssistantHTTPServer( (server_host, server_port), RequestHandler, hass, api_password, development, no_password_set, sessions_enabled) hass.bus.listen_once( ha.EVENT_HOMEASSISTANT_START, lambda event: threading.Thread(target=server.start, daemon=True).start()) hass.http = server hass.config.api = rem.API(util.get_local_ip(), api_password, server_port) return True
def setup(hass, config=None): """ Sets up the HTTP API and debug interface. """ if config is None or DOMAIN not in config: config = {DOMAIN: {}} api_password = util.convert(config[DOMAIN].get(CONF_API_PASSWORD), str) no_password_set = api_password is None if no_password_set: api_password = util.get_random_string() # If no server host is given, accept all incoming requests server_host = config[DOMAIN].get(CONF_SERVER_HOST, '0.0.0.0') server_port = config[DOMAIN].get(CONF_SERVER_PORT, SERVER_PORT) development = str(config[DOMAIN].get(CONF_DEVELOPMENT, "")) == "1" server = HomeAssistantHTTPServer((server_host, server_port), RequestHandler, hass, api_password, development, no_password_set) hass.bus.listen_once( ha.EVENT_HOMEASSISTANT_START, lambda event: threading.Thread(target=server.start, daemon=True).start( )) hass.http = server hass.config.api = rem.API(util.get_local_ip(), api_password, server_port) return True
def test_get_random_string(self, mock_random): """Test get random string.""" results = ['A', 'B', 'C'] def mock_choice(choices): return results.pop(0) generator = MagicMock() generator.choice.side_effect = mock_choice mock_random.SystemRandom.return_value = generator assert util.get_random_string(length=3) == 'ABC'
def test_get_random_string(mock_random): """Test get random string.""" results = ["A", "B", "C"] def mock_choice(choices): return results.pop(0) generator = MagicMock() generator.choice.side_effect = mock_choice mock_random.SystemRandom.return_value = generator assert util.get_random_string(length=3) == "ABC"
def _generate_subscription_id(cloud_project_id: str) -> str: """Create a new subscription id.""" rnd = get_random_string(SUBSCRIPTION_RAND_LENGTH) return SUBSCRIPTION_FORMAT.format(cloud_project_id=cloud_project_id, rnd=rnd)