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({})
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({})
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({})
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({})