Improve configuration schema for Geniushub integration (#23155)

* configuration for hub tokens are now separate from host addresses/credentials

* small change to docstring

* use *args **kwargs
pull/23297/head
David Bonnes 2019-04-18 13:37:52 +01:00 committed by Paulus Schoutsen
parent dbb49afb3e
commit df02879c51
1 changed files with 21 additions and 13 deletions

View File

@ -1,10 +1,10 @@
"""This module connects to the Genius hub and shares the data."""
"""This module connects to a Genius hub and shares the data."""
import logging
import voluptuous as vol
from homeassistant.const import (
CONF_HOST, CONF_PASSWORD, CONF_USERNAME)
CONF_HOST, CONF_PASSWORD, CONF_TOKEN, CONF_USERNAME)
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.discovery import async_load_platform
@ -13,12 +13,19 @@ _LOGGER = logging.getLogger(__name__)
DOMAIN = 'geniushub'
_V1_API_SCHEMA = vol.Schema({
vol.Required(CONF_TOKEN): cv.string,
})
_V3_API_SCHEMA = vol.Schema({
vol.Required(CONF_HOST): cv.string,
vol.Required(CONF_USERNAME): cv.string,
vol.Required(CONF_PASSWORD): cv.string,
})
CONFIG_SCHEMA = vol.Schema({
DOMAIN: vol.Schema({
vol.Optional(CONF_USERNAME): cv.string,
vol.Optional(CONF_PASSWORD): cv.string,
vol.Required(CONF_HOST): cv.string,
}),
DOMAIN: vol.Any(
_V3_API_SCHEMA,
_V1_API_SCHEMA,
)
}, extra=vol.ALLOW_EXTRA)
@ -26,16 +33,17 @@ async def async_setup(hass, hass_config):
"""Create a Genius Hub system."""
from geniushubclient import GeniusHubClient # noqa; pylint: disable=no-name-in-module
host = hass_config[DOMAIN].get(CONF_HOST)
username = hass_config[DOMAIN].get(CONF_USERNAME)
password = hass_config[DOMAIN].get(CONF_PASSWORD)
geniushub_data = hass.data[DOMAIN] = {}
kwargs = dict(hass_config[DOMAIN])
if CONF_HOST in kwargs:
args = (kwargs.pop(CONF_HOST), )
else:
args = (kwargs.pop(CONF_TOKEN), )
try:
client = geniushub_data['client'] = GeniusHubClient(
host, username, password,
session=async_get_clientsession(hass)
*args, **kwargs, session=async_get_clientsession(hass)
)
await client.hub.update()