diff --git a/homeassistant/components/media_player/firetv.py b/homeassistant/components/media_player/firetv.py index fbf1d1fd03b1fee4125bd4cc02192844dfc8d466..9d66ae77eeff06f5979c6924ed6725320d9db78e 100644 --- a/homeassistant/components/media_player/firetv.py +++ b/homeassistant/components/media_player/firetv.py @@ -15,7 +15,8 @@ from homeassistant.components.media_player import ( MediaPlayerDevice) from homeassistant.const import ( STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, STATE_STANDBY, - STATE_UNKNOWN, CONF_HOST, CONF_PORT, CONF_NAME, CONF_DEVICE, CONF_DEVICES) + STATE_UNKNOWN, CONF_HOST, CONF_PORT, CONF_SSL, CONF_NAME, CONF_DEVICE, + CONF_DEVICES) import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) @@ -24,19 +25,21 @@ SUPPORT_FIRETV = SUPPORT_PAUSE | \ SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PREVIOUS_TRACK | \ SUPPORT_NEXT_TRACK | SUPPORT_VOLUME_SET | SUPPORT_PLAY +DEFAULT_SSL = False DEFAULT_DEVICE = 'default' DEFAULT_HOST = 'localhost' DEFAULT_NAME = 'Amazon Fire TV' DEFAULT_PORT = 5556 -DEVICE_ACTION_URL = 'http://{0}:{1}/devices/action/{2}/{3}' -DEVICE_LIST_URL = 'http://{0}:{1}/devices/list' -DEVICE_STATE_URL = 'http://{0}:{1}/devices/state/{2}' +DEVICE_ACTION_URL = '{0}://{1}:{2}/devices/action/{3}/{4}' +DEVICE_LIST_URL = '{0}://{1}:{2}/devices/list' +DEVICE_STATE_URL = '{0}://{1}:{2}/devices/state/{3}' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_DEVICE, default=DEFAULT_DEVICE): cv.string, vol.Optional(CONF_HOST, default=DEFAULT_HOST): cv.string, 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, }) @@ -44,14 +47,17 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): """Set up the FireTV platform.""" name = config.get(CONF_NAME) + ssl = config.get(CONF_SSL) + proto = 'https' if ssl else 'http' host = config.get(CONF_HOST) port = config.get(CONF_PORT) device_id = config.get(CONF_DEVICE) try: - response = requests.get(DEVICE_LIST_URL.format(host, port)).json() + response = requests.get( + DEVICE_LIST_URL.format(proto, host, port)).json() if device_id in response[CONF_DEVICES].keys(): - add_devices([FireTVDevice(host, port, device_id, name)]) + add_devices([FireTVDevice(proto, host, port, device_id, name)]) _LOGGER.info("Device %s accessible and ready for control", device_id) else: @@ -72,8 +78,9 @@ class FireTV(object): be running via Python 2). """ - def __init__(self, host, port, device_id): + def __init__(self, proto, host, port, device_id): """Initialize the FireTV server.""" + self.proto = proto self.host = host self.port = port self.device_id = device_id @@ -84,7 +91,8 @@ class FireTV(object): try: response = requests.get( DEVICE_STATE_URL.format( - self.host, self.port, self.device_id), timeout=10).json() + self.proto, self.host, self.port, self.device_id + ), timeout=10).json() return response.get('state', STATE_UNKNOWN) except requests.exceptions.RequestException: _LOGGER.error( @@ -95,7 +103,8 @@ class FireTV(object): """Perform an action on the device.""" try: requests.get(DEVICE_ACTION_URL.format( - self.host, self.port, self.device_id, action_id), timeout=10) + self.proto, self.host, self.port, self.device_id, action_id + ), timeout=10) except requests.exceptions.RequestException: _LOGGER.error( "Action request for %s was not accepted for device %s", @@ -105,9 +114,9 @@ class FireTV(object): class FireTVDevice(MediaPlayerDevice): """Representation of an Amazon Fire TV device on the network.""" - def __init__(self, host, port, device, name): + def __init__(self, proto, host, port, device, name): """Initialize the FireTV device.""" - self._firetv = FireTV(host, port, device) + self._firetv = FireTV(proto, host, port, device) self._name = name self._state = STATE_UNKNOWN