예제 #1
0
    def post(self, request):
        """Setup an event forwarder."""
        try:
            data = yield from request.json()
        except ValueError:
            return self.json_message("No data received.", HTTP_BAD_REQUEST)

        try:
            host = data['host']
            api_password = data['api_password']
        except KeyError:
            return self.json_message("No host or api_password received.",
                                     HTTP_BAD_REQUEST)

        try:
            port = int(data['port']) if 'port' in data else None
        except ValueError:
            return self.json_message("Invalid value received for port.",
                                     HTTP_UNPROCESSABLE_ENTITY)

        api = rem.API(host, api_password, port)

        valid = yield from self.hass.loop.run_in_executor(
            None, api.validate_api)
        if not valid:
            return self.json_message("Unable to validate API.",
                                     HTTP_UNPROCESSABLE_ENTITY)

        if self.event_forwarder is None:
            self.event_forwarder = rem.EventForwarder(self.hass)

        self.event_forwarder.async_connect(api)

        return self.json_message("Event forwarding setup.")
예제 #2
0
def _handle_post_api_event_forward(handler, path_match, data):
    """Handle adding an event forwarding target."""
    try:
        host = data['host']
        api_password = data['api_password']
    except KeyError:
        handler.write_json_message(
            "No host or api_password received.", HTTP_BAD_REQUEST)
        return

    try:
        port = int(data['port']) if 'port' in data else None
    except ValueError:
        handler.write_json_message(
            "Invalid value received for port", HTTP_UNPROCESSABLE_ENTITY)
        return

    api = rem.API(host, api_password, port)

    if not api.validate_api():
        handler.write_json_message(
            "Unable to validate API", HTTP_UNPROCESSABLE_ENTITY)
        return

    if handler.server.event_forwarder is None:
        handler.server.event_forwarder = \
            rem.EventForwarder(handler.server.hass)

    handler.server.event_forwarder.connect(api)

    handler.write_json_message("Event forwarding setup.")
예제 #3
0
    def _handle_post_api_event_forward(self, path_match, data):
        """ Handles adding an event forwarding target. """

        try:
            host = data['host']
            api_password = data['api_password']
        except KeyError:
            self._message("No host or api_password received.",
                          HTTP_BAD_REQUEST)
            return

        try:
            port = int(data['port']) if 'port' in data else None
        except ValueError:
            self._message(
                "Invalid value received for port", HTTP_UNPROCESSABLE_ENTITY)
            return

        if self.server.event_forwarder is None:
            self.server.event_forwarder = \
                rem.EventForwarder(self.server.hass)

        api = rem.API(host, api_password, port)

        self.server.event_forwarder.connect(api)

        self._message("Event forwarding setup.")