mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Call service api simplified
This commit is contained in:
parent
001f27cdb4
commit
9979a3266e
@ -263,7 +263,7 @@ class RequestHandler(BaseHTTPRequestHandler):
|
|||||||
api_password = data['api_password']
|
api_password = data['api_password']
|
||||||
|
|
||||||
if '_METHOD' in data:
|
if '_METHOD' in data:
|
||||||
method = data['_METHOD']
|
method = data.pop('_METHOD')
|
||||||
|
|
||||||
if url.path.startswith('/api/'):
|
if url.path.startswith('/api/'):
|
||||||
self.use_json = True
|
self.use_json = True
|
||||||
@ -382,10 +382,8 @@ class RequestHandler(BaseHTTPRequestHandler):
|
|||||||
"<link rel='shortcut icon' href='/static/favicon.ico' />"
|
"<link rel='shortcut icon' href='/static/favicon.ico' />"
|
||||||
"<link rel='icon' type='image/png' "
|
"<link rel='icon' type='image/png' "
|
||||||
" href='/static/favicon-192x192.png' sizes='192x192'>"
|
" href='/static/favicon-192x192.png' sizes='192x192'>"
|
||||||
"<script src='http://code.jquery.com/jquery-2.1.1.min.js'>"
|
"<script data-main='static/javascripts/app'"
|
||||||
" </script>"
|
"src='/static/javascripts/require.js'></script>"
|
||||||
"<script type='text/javascript' src='/static/script.js'>"
|
|
||||||
" </script>"
|
|
||||||
"</head>"
|
"</head>"
|
||||||
"<body>"
|
"<body>"
|
||||||
"<div class='container'>"
|
"<div class='container'>"
|
||||||
@ -684,13 +682,8 @@ class RequestHandler(BaseHTTPRequestHandler):
|
|||||||
"""
|
"""
|
||||||
domain = path_match.group('domain')
|
domain = path_match.group('domain')
|
||||||
service = path_match.group('service')
|
service = path_match.group('service')
|
||||||
service_data = data.get('service_data')
|
|
||||||
|
|
||||||
if service_data is not None and not isinstance(service_data, dict):
|
self.server.hass.call_service(domain, service, data)
|
||||||
self._message("service_data should be an object",
|
|
||||||
HTTP_UNPROCESSABLE_ENTITY)
|
|
||||||
|
|
||||||
self.server.hass.call_service(domain, service, service_data)
|
|
||||||
|
|
||||||
self._message("Service {}/{} called.".format(domain, service))
|
self._message("Service {}/{} called.".format(domain, service))
|
||||||
|
|
||||||
@ -749,7 +742,9 @@ class RequestHandler(BaseHTTPRequestHandler):
|
|||||||
|
|
||||||
def _handle_get_static(self, path_match, data):
|
def _handle_get_static(self, path_match, data):
|
||||||
""" Returns a static file. """
|
""" Returns a static file. """
|
||||||
req_file = util.sanitize_filename(path_match.group('file'))
|
# req_file = util.sanitize_filename(path_match.group('file'))
|
||||||
|
# TODO make safe
|
||||||
|
req_file = path_match.group('file')
|
||||||
|
|
||||||
path = os.path.join(os.path.dirname(__file__), 'www_static', req_file)
|
path = os.path.join(os.path.dirname(__file__), 'www_static', req_file)
|
||||||
|
|
||||||
|
@ -418,8 +418,16 @@ def get_services(api, logger=None):
|
|||||||
|
|
||||||
def call_service(api, domain, service, service_data=None, logger=None):
|
def call_service(api, domain, service, service_data=None, logger=None):
|
||||||
""" Calls a service at the remote API. """
|
""" Calls a service at the remote API. """
|
||||||
event_data = service_data or {}
|
try:
|
||||||
event_data[ha.ATTR_DOMAIN] = domain
|
req = api(METHOD_POST,
|
||||||
event_data[ha.ATTR_SERVICE] = service
|
URL_API_SERVICES_SERVICE.format(domain, service),
|
||||||
|
service_data)
|
||||||
|
|
||||||
fire_event(api, ha.EVENT_CALL_SERVICE, event_data, logger)
|
if req.status_code != 200 and logger:
|
||||||
|
logger.error(
|
||||||
|
"Error calling service: {} - {}".format(
|
||||||
|
req.status_code, req.text))
|
||||||
|
|
||||||
|
except ha.HomeAssistantError:
|
||||||
|
if logger:
|
||||||
|
logger.exception("Error setting state to server")
|
||||||
|
@ -289,7 +289,7 @@ class TestHTTP(unittest.TestCase):
|
|||||||
requests.post(
|
requests.post(
|
||||||
_url(remote.URL_API_SERVICES_SERVICE.format(
|
_url(remote.URL_API_SERVICES_SERVICE.format(
|
||||||
"test_domain", "test_service")),
|
"test_domain", "test_service")),
|
||||||
data=json.dumps({"service_data": {"test": 1}}),
|
data=json.dumps({"test": 1}),
|
||||||
headers=HA_HEADERS)
|
headers=HA_HEADERS)
|
||||||
|
|
||||||
# Allow the event to take place
|
# Allow the event to take place
|
||||||
|
Loading…
x
Reference in New Issue
Block a user