""" homeassistant.components.notify.googlevoice ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Google Voice SMS platform for notify component. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/notify.free_mobile/ """ import logging from homeassistant.helpers import validate_config from homeassistant.components.notify import ( DOMAIN, ATTR_TARGET, BaseNotificationService) from homeassistant.const import CONF_USERNAME, CONF_PASSWORD _LOGGER = logging.getLogger(__name__) REQUIREMENTS = ['https://github.com/w1ll1am23/pygooglevoice-sms/archive/' '7c5ee9969b97a7992fc86a753fe9f20e3ffa3f7c.zip#' 'pygooglevoice-sms==0.0.1'] def get_service(hass, config): """ Get the Google Voice SMS notification service. """ if not validate_config({DOMAIN: config}, {DOMAIN: [CONF_USERNAME, CONF_PASSWORD]}, _LOGGER): return None return GoogleVoiceSMSNotificationService(config[CONF_USERNAME], config[CONF_PASSWORD]) # pylint: disable=too-few-public-methods class GoogleVoiceSMSNotificationService(BaseNotificationService): """ Implements notification service for the Google Voice SMS service. """ def __init__(self, username, password): from googlevoicesms import Voice self.voice = Voice() self.username = username self.password = password def send_message(self, message="", **kwargs): """ Send SMS to specified target user cell. """ targets = kwargs.get(ATTR_TARGET) if not targets: _LOGGER.info('At least 1 target is required') return if not isinstance(targets, list): targets = [targets] self.voice.login(self.username, self.password) for target in targets: self.voice.send_sms(target, message) self.voice.logout()