Skip to content

Commit

Permalink
Use voluptuous for pushbullet, pushetta and pushover (#3240)
Browse files Browse the repository at this point in the history
  • Loading branch information
pvizeli authored and Teagan42 committed Sep 7, 2016
1 parent 22870d4 commit 9eacde0
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 18 deletions.
15 changes: 10 additions & 5 deletions homeassistant/components/notify/pushbullet.py
Expand Up @@ -6,24 +6,29 @@
"""
import logging

import voluptuous as vol

from homeassistant.components.notify import (
ATTR_TARGET, ATTR_TITLE, ATTR_TITLE_DEFAULT, BaseNotificationService)
ATTR_TARGET, ATTR_TITLE, ATTR_TITLE_DEFAULT, PLATFORM_SCHEMA,
BaseNotificationService)
from homeassistant.const import CONF_API_KEY
import homeassistant.helpers.config_validation as cv

_LOGGER = logging.getLogger(__name__)
REQUIREMENTS = ['pushbullet.py==0.10.0']


PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_API_KEY): cv.string,
})


# pylint: disable=unused-argument
def get_service(hass, config):
"""Get the PushBullet notification service."""
from pushbullet import PushBullet
from pushbullet import InvalidKeyError

if CONF_API_KEY not in config:
_LOGGER.error("Unable to find config key '%s'", CONF_API_KEY)
return None

try:
pushbullet = PushBullet(config[CONF_API_KEY])
except InvalidKeyError:
Expand Down
27 changes: 16 additions & 11 deletions homeassistant/components/notify/pushetta.py
Expand Up @@ -6,37 +6,42 @@
"""
import logging

import voluptuous as vol

from homeassistant.components.notify import (
ATTR_TITLE, ATTR_TITLE_DEFAULT, DOMAIN, BaseNotificationService)
ATTR_TITLE, ATTR_TITLE_DEFAULT, PLATFORM_SCHEMA, BaseNotificationService)
from homeassistant.const import CONF_API_KEY
from homeassistant.helpers import validate_config
import homeassistant.helpers.config_validation as cv

_LOGGER = logging.getLogger(__name__)

REQUIREMENTS = ['pushetta==1.0.15']


CONF_CHANNEL_NAME = 'channel_name'

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_API_KEY): cv.string,
vol.Required(CONF_CHANNEL_NAME): cv.string,
})


def get_service(hass, config):
"""Get the Pushetta notification service."""
from pushetta import Pushetta, exceptions

if not validate_config({DOMAIN: config},
{DOMAIN: [CONF_API_KEY, 'channel_name']},
_LOGGER):
return None

try:
pushetta = Pushetta(config[CONF_API_KEY])
pushetta.pushMessage(config['channel_name'], "Home Assistant started")
pushetta.pushMessage(config[CONF_CHANNEL_NAME],
"Home Assistant started")
except exceptions.TokenValidationError:
_LOGGER.error("Please check your access token")
return None
except exceptions.ChannelNotFoundError:
_LOGGER.error("Channel '%s' not found", config['channel_name'])
_LOGGER.error("Channel '%s' not found", config[CONF_CHANNEL_NAME])
return None

return PushettaNotificationService(config[CONF_API_KEY],
config['channel_name'])
config[CONF_CHANNEL_NAME])


# pylint: disable=too-few-public-methods
Expand Down
6 changes: 4 additions & 2 deletions homeassistant/components/notify/pushover.py
Expand Up @@ -18,8 +18,10 @@
_LOGGER = logging.getLogger(__name__)


CONF_USER_KEY = 'user_key'

PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({
vol.Required('user_key'): cv.string,
vol.Required(CONF_USER_KEY): cv.string,
vol.Required(CONF_API_KEY): cv.string,
})

Expand All @@ -30,7 +32,7 @@ def get_service(hass, config):
from pushover import InitError

try:
return PushoverNotificationService(config['user_key'],
return PushoverNotificationService(config[CONF_USER_KEY],
config[CONF_API_KEY])
except InitError:
_LOGGER.error(
Expand Down

0 comments on commit 9eacde0

Please sign in to comment.