diff --git a/homeassistant/components/http/__init__.py b/homeassistant/components/http/__init__.py
index cf61da9c41a..d8dd382d41e 100644
--- a/homeassistant/components/http/__init__.py
+++ b/homeassistant/components/http/__init__.py
@@ -263,7 +263,7 @@ class RequestHandler(BaseHTTPRequestHandler):
api_password = data['api_password']
if '_METHOD' in data:
- method = data['_METHOD']
+ method = data.pop('_METHOD')
if url.path.startswith('/api/'):
self.use_json = True
@@ -382,10 +382,8 @@ class RequestHandler(BaseHTTPRequestHandler):
""
""
- ""
- ""
+ ""
""
"
"
""
@@ -684,13 +682,8 @@ class RequestHandler(BaseHTTPRequestHandler):
"""
domain = path_match.group('domain')
service = path_match.group('service')
- service_data = data.get('service_data')
- if service_data is not None and not isinstance(service_data, dict):
- self._message("service_data should be an object",
- HTTP_UNPROCESSABLE_ENTITY)
-
- self.server.hass.call_service(domain, service, service_data)
+ self.server.hass.call_service(domain, service, data)
self._message("Service {}/{} called.".format(domain, service))
@@ -749,7 +742,9 @@ class RequestHandler(BaseHTTPRequestHandler):
def _handle_get_static(self, path_match, data):
""" 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)
diff --git a/homeassistant/remote.py b/homeassistant/remote.py
index 492f9ae6f46..4989e34060d 100644
--- a/homeassistant/remote.py
+++ b/homeassistant/remote.py
@@ -418,8 +418,16 @@ def get_services(api, logger=None):
def call_service(api, domain, service, service_data=None, logger=None):
""" Calls a service at the remote API. """
- event_data = service_data or {}
- event_data[ha.ATTR_DOMAIN] = domain
- event_data[ha.ATTR_SERVICE] = service
+ try:
+ req = api(METHOD_POST,
+ 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")
diff --git a/homeassistant/test.py b/homeassistant/test.py
index 38be01c0b87..36d65f4838e 100644
--- a/homeassistant/test.py
+++ b/homeassistant/test.py
@@ -289,7 +289,7 @@ class TestHTTP(unittest.TestCase):
requests.post(
_url(remote.URL_API_SERVICES_SERVICE.format(
"test_domain", "test_service")),
- data=json.dumps({"service_data": {"test": 1}}),
+ data=json.dumps({"test": 1}),
headers=HA_HEADERS)
# Allow the event to take place