Wunderlist component (#18339)
* Wunderlist component * Check credentials * Dont print credentials * Update __init__.py
This commit is contained in:
parent
5d5c78b374
commit
7b3b7d2eec
3 changed files with 109 additions and 0 deletions
91
homeassistant/components/wunderlist/__init__.py
Normal file
91
homeassistant/components/wunderlist/__init__.py
Normal file
|
@ -0,0 +1,91 @@
|
|||
"""
|
||||
Component to interact with Wunderlist.
|
||||
|
||||
For more details about this component, please refer to the documentation at
|
||||
https://home-assistant.io/components/wunderlist/
|
||||
"""
|
||||
import logging
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.const import (
|
||||
CONF_NAME, CONF_ACCESS_TOKEN)
|
||||
|
||||
REQUIREMENTS = ['wunderpy2==0.1.6']
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
DOMAIN = 'wunderlist'
|
||||
CONF_CLIENT_ID = 'client_id'
|
||||
CONF_LIST_NAME = 'list_name'
|
||||
CONF_STARRED = 'starred'
|
||||
|
||||
|
||||
CONFIG_SCHEMA = vol.Schema({
|
||||
DOMAIN: vol.Schema({
|
||||
vol.Required(CONF_CLIENT_ID): cv.string,
|
||||
vol.Required(CONF_ACCESS_TOKEN): cv.string
|
||||
})
|
||||
}, extra=vol.ALLOW_EXTRA)
|
||||
|
||||
|
||||
SERVICE_CREATE_TASK = 'create_task'
|
||||
|
||||
SERVICE_SCHEMA_CREATE_TASK = vol.Schema({
|
||||
vol.Required(CONF_LIST_NAME): cv.string,
|
||||
vol.Required(CONF_NAME): cv.string,
|
||||
vol.Optional(CONF_STARRED): cv.boolean
|
||||
})
|
||||
|
||||
|
||||
def setup(hass, config):
|
||||
"""Set up the Wunderlist component."""
|
||||
conf = config[DOMAIN]
|
||||
client_id = conf.get(CONF_CLIENT_ID)
|
||||
access_token = conf.get(CONF_ACCESS_TOKEN)
|
||||
data = Wunderlist(access_token, client_id)
|
||||
if not data.check_credentials():
|
||||
_LOGGER.error("Invalid credentials")
|
||||
return False
|
||||
|
||||
hass.services.register(DOMAIN, 'create_task', data.create_task)
|
||||
return True
|
||||
|
||||
|
||||
class Wunderlist:
|
||||
"""Representation of an interface to Wunderlist."""
|
||||
|
||||
def __init__(self, access_token, client_id):
|
||||
"""Create new instance of Wunderlist component."""
|
||||
import wunderpy2
|
||||
|
||||
api = wunderpy2.WunderApi()
|
||||
self._client = api.get_client(access_token, client_id)
|
||||
|
||||
_LOGGER.debug("Instance created")
|
||||
|
||||
def check_credentials(self):
|
||||
"""Check if the provided credentials are valid."""
|
||||
try:
|
||||
self._client.get_lists()
|
||||
return True
|
||||
except ValueError:
|
||||
return False
|
||||
|
||||
def create_task(self, call):
|
||||
"""Create a new task on a list of Wunderlist."""
|
||||
list_name = call.data.get(CONF_LIST_NAME)
|
||||
task_title = call.data.get(CONF_NAME)
|
||||
starred = call.data.get(CONF_STARRED)
|
||||
list_id = self._list_by_name(list_name)
|
||||
self._client.create_task(list_id, task_title, starred=starred)
|
||||
return True
|
||||
|
||||
def _list_by_name(self, name):
|
||||
"""Return a list ID by name."""
|
||||
lists = self._client.get_lists()
|
||||
tmp = [l for l in lists if l["title"] == name]
|
||||
if tmp:
|
||||
return tmp[0]["id"]
|
||||
return None
|
15
homeassistant/components/wunderlist/services.yaml
Normal file
15
homeassistant/components/wunderlist/services.yaml
Normal file
|
@ -0,0 +1,15 @@
|
|||
# Describes the format for available Wunderlist
|
||||
|
||||
create_task:
|
||||
description: >
|
||||
Create a new task in Wunderlist.
|
||||
fields:
|
||||
list_name:
|
||||
description: name of the new list where the task will be created
|
||||
example: 'Shopping list'
|
||||
name:
|
||||
description: name of the new task
|
||||
example: 'Buy 5 bottles of beer'
|
||||
starred:
|
||||
description: Create the task as starred [Optional]
|
||||
example: true
|
|
@ -1617,6 +1617,9 @@ websockets==6.0
|
|||
# homeassistant.components.wirelesstag
|
||||
wirelesstagpy==0.4.0
|
||||
|
||||
# homeassistant.components.wunderlist
|
||||
wunderpy2==0.1.6
|
||||
|
||||
# homeassistant.components.zigbee
|
||||
xbee-helper==0.0.7
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue