From 0198ba4eac61933dbb96bf19ca1122cdf129f86e Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 4 Sep 2016 01:45:31 +0200 Subject: [PATCH] Allow https (fixes #3150) (#3155) --- homeassistant/components/sensor/sabnzbd.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/sensor/sabnzbd.py b/homeassistant/components/sensor/sabnzbd.py index a11d65d22bf..0f33a39bbcc 100644 --- a/homeassistant/components/sensor/sabnzbd.py +++ b/homeassistant/components/sensor/sabnzbd.py @@ -11,7 +11,8 @@ import voluptuous as vol from homeassistant.components.sensor import PLATFORM_SCHEMA from homeassistant.const import ( - CONF_HOST, CONF_API_KEY, CONF_NAME, CONF_PORT, CONF_MONITORED_VARIABLES) + CONF_HOST, CONF_API_KEY, CONF_NAME, CONF_PORT, CONF_MONITORED_VARIABLES, + CONF_SSL) from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle import homeassistant.helpers.config_validation as cv @@ -25,6 +26,7 @@ _THROTTLED_REFRESH = None DEFAULT_NAME = 'SABnzbd' DEFAULT_PORT = 8080 +DEFAULT_SSL = False MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=1) @@ -44,10 +46,11 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.All(cv.ensure_list, [vol.In(SENSOR_TYPES)]), vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, + vol.Optional(CONF_SSL, default=DEFAULT_SSL): cv.boolean, }) -# pylint: disable=unused-argument +# pylint: disable=unused-argument, too-many-locals def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the SABnzbd sensors.""" from pysabnzbd import SabnzbdApi, SabnzbdApiException @@ -57,14 +60,21 @@ def setup_platform(hass, config, add_devices, discovery_info=None): name = config.get(CONF_NAME) api_key = config.get(CONF_API_KEY) monitored_types = config.get(CONF_MONITORED_VARIABLES) - base_url = "http://{}:{}/".format(host, port) + use_ssl = config.get(CONF_SSL) + + if use_ssl: + uri_scheme = 'https://' + else: + uri_scheme = 'http://' + + base_url = "{}{}:{}/".format(uri_scheme, host, port) sab_api = SabnzbdApi(base_url, api_key) try: sab_api.check_available() except SabnzbdApiException: - _LOGGER.exception("Connection to SABnzbd API failed") + _LOGGER.error("Connection to SABnzbd API failed") return False # pylint: disable=global-statement