mirror of
https://github.com/zulip/zulip.git
synced 2025-11-02 04:53:36 +00:00
This must be deployed after we update our running nginx configuration to serve api.humbughq.com. (imported from commit b5c34ebdd595f55eecd6dca6a18a37f105107bd5)
65 lines
2.0 KiB
Python
Executable File
65 lines
2.0 KiB
Python
Executable File
#!/usr/bin/env python
|
|
import sys
|
|
from os import path
|
|
import logging
|
|
|
|
sys.path.append(path.join(path.dirname(__file__), '../api'))
|
|
import humbug
|
|
|
|
class StreamLogger(object):
|
|
"""
|
|
Give a file-like interface to a logger instance.
|
|
"""
|
|
def __init__(self, logger, log_level=logging.INFO):
|
|
self.logger = logger
|
|
self.log_level = log_level
|
|
self.buffer = ""
|
|
|
|
def write(self, message):
|
|
self.buffer += message
|
|
|
|
if message[-1] == "\n":
|
|
self.logger.log(self.log_level, self.buffer.rstrip())
|
|
self.buffer = ""
|
|
|
|
logging.basicConfig(filename="/var/log/humbug/feedback-bot.log",
|
|
level=logging.DEBUG, format="%(asctime)s %(levelname)s\t%(message)s")
|
|
|
|
# The API prints to stdout, so capture and format those messages as well.
|
|
stdout_logger = StreamLogger(logging.getLogger("stdout"), logging.INFO)
|
|
sys.stdout = stdout_logger
|
|
|
|
stderr_logger = StreamLogger(logging.getLogger("stderr"), logging.ERROR)
|
|
sys.stderr = stderr_logger
|
|
|
|
prod_client = humbug.Client(
|
|
email="feedback@humbughq.com",
|
|
api_key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
|
verbose=True,
|
|
site="https://api.humbughq.com")
|
|
staging_client = humbug.Client(
|
|
email="feedback@humbughq.com",
|
|
api_key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
|
verbose=True,
|
|
site="https://staging.humbughq.com/api")
|
|
|
|
def forward_message(message):
|
|
if message["type"] != "private" or len(message["display_recipient"]) != 2:
|
|
return
|
|
if "sender_domain" in message:
|
|
subject = "feedback: %s (%s)" % (message["sender_email"], message["sender_domain"])
|
|
else:
|
|
subject = "feedback from %s" % message["sender_email"],
|
|
if len(subject) > 60:
|
|
subject = subject[:57].rstrip() + "..."
|
|
forwarded_message = {
|
|
"type": "stream",
|
|
"to": "support",
|
|
"subject": subject,
|
|
"content": message["content"],
|
|
}
|
|
staging_client.send_message(forwarded_message)
|
|
logging.info("Forwarded feedback from %s" % (message["sender_email"],))
|
|
|
|
prod_client.call_on_each_message(forward_message)
|