コード例 #1
0
    def post(self, request):
        """Accept the POST from telegram."""
        real_ip = get_real_ip(request)
        if not any(real_ip in net for net in self.trusted_networks):
            _LOGGER.warning("Access denied from %s", real_ip)
            return self.json_message('Access denied', HTTP_UNAUTHORIZED)

        try:
            data = yield from request.json()
        except ValueError:
            _LOGGER.error("Received telegram data: %s", data)
            return self.json_message('Invalid JSON', HTTP_BAD_REQUEST)

        # check for basic message rules
        data = data.get('message')
        if not data or 'from' not in data or 'text' not in data:
            return self.json({})

        if data['from'].get('id') not in self.users:
            _LOGGER.warning("User not allowed")
            return self.json_message('Invalid user', HTTP_BAD_REQUEST)

        _LOGGER.debug("Received telegram data: %s", data)
        if not data['text'] or data['text'][:1] != '/':
            _LOGGER.warning('no command')
            return self.json({})

        pieces = data['text'].split(' ')

        request.app['hass'].bus.async_fire(EVENT_TELEGRAM_COMMAND, {
            ATTR_COMMAND: pieces[0],
            ATTR_ARGS: " ".join(pieces[1:]),
            ATTR_USER_ID: data['from']['id'],
            })
        return self.json({})
コード例 #2
0
    def post(self, request):
        """Accept the POST from telegram."""
        real_ip = get_real_ip(request)
        if not any(real_ip in net for net in self.trusted_networks):
            _LOGGER.warning("Access denied from %s", real_ip)
            return self.json_message('Access denied', HTTP_UNAUTHORIZED)

        try:
            data = yield from request.json()
        except ValueError:
            return self.json_message('Invalid JSON', HTTP_BAD_REQUEST)

        if not self.process_message(data):
            return self.json_message('Invalid message', HTTP_BAD_REQUEST)
        return self.json({})
コード例 #3
0
    def post(self, request):
        """Accept the POST from telegram."""
        real_ip = get_real_ip(request)
        if not any(real_ip in net for net in self.trusted_networks):
            _LOGGER.warning("Access denied from %s", real_ip)
            return self.json_message('Access denied', HTTP_UNAUTHORIZED)

        try:
            data = yield from request.json()
        except ValueError:
            return self.json_message('Invalid JSON', HTTP_BAD_REQUEST)

        if not self.process_message(data):
            return self.json_message('Invalid message', HTTP_BAD_REQUEST)
        return self.json({})
コード例 #4
0
    def post(self, request):
        """Accept the POST from telegram."""
        real_ip = get_real_ip(request)
        if not any(real_ip in net for net in self.trusted_networks):
            _LOGGER.warning("Access denied from %s", real_ip)
            return self.json_message('Access denied', HTTP_UNAUTHORIZED)

        try:
            data = yield from request.json()
        except ValueError:
            _LOGGER.error("Received telegram data: %s", data)
            return self.json_message('Invalid JSON', HTTP_BAD_REQUEST)

        # check for basic message rules
        data = data.get('message')
        if not data or 'from' not in data or 'text' not in data:
            return self.json({})

        if data['from'].get('id') not in self.users:
            _LOGGER.warning("User not allowed")
            return self.json_message('Invalid user', HTTP_BAD_REQUEST)

        _LOGGER.debug("Received telegram data: %s", data)
        if not data['text']:
            _LOGGER.warning('no text')
            return self.json({})

        if data['text'][:1] == '/':
            # telegram command "/blabla arg1 arg2 ..."
            pieces = data['text'].split(' ')

            request.app['hass'].bus.async_fire(
                EVENT_TELEGRAM_COMMAND, {
                    ATTR_COMMAND: pieces[0],
                    ATTR_ARGS: " ".join(pieces[1:]),
                    ATTR_USER_ID: data['from']['id'],
                })

        # telegram text "bla bla"
        request.app['hass'].bus.async_fire(EVENT_TELEGRAM_TEXT, {
            ATTR_TEXT: data['text'],
            ATTR_USER_ID: data['from']['id'],
        })

        return self.json({})