From e2014eb153601c77d1205b7555f9c8db4251f058 Mon Sep 17 00:00:00 2001
From: Scott Henning <shenning_00@yahoo.com>
Date: Sun, 26 Feb 2017 17:04:30 -0600
Subject: [PATCH] Notify ciscospark (#6130)

* Adding ciscospark notifier

* Adding ciscospark notifier

* CI cleanup.

* houndci-bot changes

* ok --- a bunch of code verify changes
---
 homeassistant/components/notify/ciscospark.py | 67 +++++++++++++++++++
 requirements_all.txt                          |  3 +
 2 files changed, 70 insertions(+)
 create mode 100644 homeassistant/components/notify/ciscospark.py

diff --git a/homeassistant/components/notify/ciscospark.py b/homeassistant/components/notify/ciscospark.py
new file mode 100644
index 00000000000..3a4ef1384d9
--- /dev/null
+++ b/homeassistant/components/notify/ciscospark.py
@@ -0,0 +1,67 @@
+"""
+Cisco Spark platform for notify component.
+
+For more details about this platform, please refer to the documentation at
+https://home-assistant.io/components/notify.ciscospark/
+"""
+import logging
+import voluptuous as vol
+from homeassistant.components.notify import (
+    PLATFORM_SCHEMA, BaseNotificationService, ATTR_TITLE)
+from homeassistant.const import (CONF_TOKEN)
+import homeassistant.helpers.config_validation as cv
+
+CONF_ROOMID = "roomid"
+
+_LOGGER = logging.getLogger(__name__)
+
+REQUIREMENTS = ['ciscosparkapi==0.4.2']
+
+PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
+    vol.Required(CONF_TOKEN): cv.string,
+    vol.Required(CONF_ROOMID): cv.string,
+})
+
+
+# pylint: disable=unused-variable
+def get_service(hass, config, discovery_info=None):
+    """Get the CiscoSpark notification service."""
+    return CiscoSparkNotificationService(
+        config.get(CONF_TOKEN),
+        config.get(CONF_ROOMID))
+
+
+class CiscoSparkNotificationService(BaseNotificationService):
+    """CiscoSparkNotificationService."""
+
+    def __init__(self, token, default_room):
+        """
+        Initialize the service.
+
+        Args:
+            token: Cisco Spark Developer's Token
+            default_room: Cisco Spark Room ID
+        """
+        from ciscosparkapi import CiscoSparkAPI
+        self._default_room = default_room
+        self._token = token
+        self._spark = CiscoSparkAPI(access_token=self._token)
+
+    def send_message(self, message="", **kwargs):
+        """
+        Send a message to a user.
+
+        Args:
+            message: notificaiton text
+            kwargs: attributes used - 'title'
+        """
+        from ciscosparkapi import SparkApiError
+        try:
+            title = ""
+            if kwargs.get(ATTR_TITLE) is not None:
+                title = kwargs.get(ATTR_TITLE) + ": "
+            self._spark.messages.create(roomId=self._default_room,
+                                        text=title + message)
+        except SparkApiError as api_error:
+            _LOGGER.error("Could not send CiscoSpark notification. Error: %s",
+                          api_error)
diff --git a/requirements_all.txt b/requirements_all.txt
index 5b0c020b316..9f8ba5d2bcc 100755
--- a/requirements_all.txt
+++ b/requirements_all.txt
@@ -80,6 +80,9 @@ boto3==1.4.3
 # homeassistant.components.switch.broadlink
 broadlink==0.3
 
+# homeassistant.components.notify.ciscospark
+ciscosparkapi==0.4.2
+
 # homeassistant.components.sensor.coinmarketcap
 coinmarketcap==2.0.1
 
-- 
GitLab