From a2ae1667a565c475ce38ec8807e9af8c308fe390 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 23 Jan 2014 21:33:54 -0800 Subject: [PATCH] Added has_service method to Bus --- homeassistant/__init__.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/homeassistant/__init__.py b/homeassistant/__init__.py index 2127f3b4865..f701ddf2b81 100644 --- a/homeassistant/__init__.py +++ b/homeassistant/__init__.py @@ -177,16 +177,18 @@ class Bus(object): return {key: len(self._event_listeners[key]) for key in self._event_listeners} + def has_service(self, domain, service): + """ Returns True if specified service exists. """ + return (domain in self._services and + service in self._services[domain]) + def call_service(self, domain, service, service_data=None): """ Calls a service. """ - with self.service_lock: - try: - self._services[domain][service] - except KeyError: - # Domain or Service does not exist - raise ServiceDoesNotExistException( - "Service does not exist: {}/{}".format(domain, service)) + if not self.has_service(domain, service): + raise ServiceDoesNotExistError( + "Service does not exist: {}/{}".format(domain, service)) + with self.service_lock: service_data = service_data or {} def run():