async def _validate_and_create_entry(self, user_input, step_id): """Check if config is valid and create entry if so.""" self._password = user_input[CONF_PASSWORD] extra_inputs = user_input if self._existing_entry: extra_inputs = self._existing_entry self._username = extra_inputs[CONF_USERNAME] self._base_url = extra_inputs[CONF_URL] if self.unique_id is None: await self.async_set_unique_id(self._username) self._abort_if_unique_id_configured() self.api = FireServiceRota( base_url=self._base_url, username=self._username, password=self._password, ) try: token_info = await self.hass.async_add_executor_job( self.api.request_tokens) except InvalidAuthError: self.api = None return self.async_show_form( step_id=step_id, data_schema=DATA_SCHEMA, errors={"base": "invalid_auth"}, ) data = { "auth_implementation": DOMAIN, CONF_URL: self._base_url, CONF_USERNAME: self._username, CONF_TOKEN: token_info, } if step_id == "user": return self.async_create_entry(title=self._username, data=data) for entry in self.hass.config_entries.async_entries(DOMAIN): if entry.unique_id == self.unique_id: self.hass.config_entries.async_update_entry(entry, data=data) await self.hass.config_entries.async_reload(entry.entry_id) return self.async_abort(reason="reauth_successful")
def __init__(self, hass, entry): """Initialize the data object.""" self._hass = hass self._entry = entry self._url = entry.data[CONF_URL] self._tokens = entry.data[CONF_TOKEN] self.entry_id = entry.entry_id self.unique_id = entry.unique_id self.token_refresh_failure = False self.incident_id = None self.on_duty = False self.fsr = FireServiceRota(base_url=self._url, token_info=self._tokens) self.oauth = FireServiceRotaOauth( self._hass, self._entry, self.fsr, ) self.websocket = FireServiceRotaWebSocket(self._hass, self._entry)