diff --git a/utils/feed-bot.py b/utils/feed-bot.py new file mode 100755 index 0000000..a998668 --- /dev/null +++ b/utils/feed-bot.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 +import json +from http.server import BaseHTTPRequestHandler, HTTPServer +from phabricator import Phabricator + +HOST = '0.0.0.0' +PORT = 9000 +TXT = 'Nothing to see here' + +class MyHandler(BaseHTTPRequestHandler): + + def do_GET(self): + self.send_response(500) + self.send_header('Content-type', 'text/html') + self.end_headers() + self.wfile.write(bytes(TXT, 'UTF-8')) + return self.req() + + def do_POST(self): + if 'Content-Length' in self.headers: + content_len = int(self.headers['Content-Length']) + content_data = self.rfile.read(content_len) + if 'Content-Type' in self.headers: + if self.headers['Content-Type'] == 'application/json': + obj = json.loads(content_data.decode('utf-8')) + if not obj['action']['secure'] and not obj['action']['silent']: + tlen = len(obj['transactions']) if len(obj['transactions']) > 1 else 1 + stories = phab.feed.query(filterPHIDs=[obj['object']['phid']], view="text", limit=tlen) + for s in stories: + print(stories[s]['text']) + + self.send_response(200) + self.send_header('Content-type', 'text/html') + self.end_headers() + self.wfile.write(bytes(TXT, 'UTF-8')) + +if __name__ == '__main__': + phab = Phabricator() + httpd = HTTPServer((HOST, PORT), MyHandler) + try: + httpd.serve_forever() + except KeyboardInterrupt: + pass + httpd.server_close()