# -*- coding: utf-8 -*- ## Imports from config.irc import * from config.watcher import * from irc.connection import Connection from irc.rc import RC global frontend_conn def get_connection(): connection = Connection(WATCHER_HOST, WATCHER_PORT, NICK, IDENT, REALNAME) return connection def main(connection, f_conn): global frontend_conn frontend_conn = f_conn connection.connect() read_buffer = str() while 1: try: read_buffer = read_buffer + connection.get() except RuntimeError: # socket broke return lines = read_buffer.split("\n") read_buffer = lines.pop() for line in lines: line = line.strip().split() if line[1] == "PRIVMSG": chan = line[2] if chan != WATCHER_CHAN: # if we're getting a msg from another channel, ignore it continue msg = ' '.join(line[3:])[1:] rc = RC(msg) # create a new RC object to store this change's data rc.parse() check(rc) if line[0] == "PING": # If we are pinged, pong back to the server connection.send("PONG %s" % line[1]) if line[1] == "376": # Join the recent changes channel when we've finished starting up connection.join(WATCHER_CHAN) def check(rc): """check if we're supposed to report this message anywhere""" results = process(rc) # process the message in config/watcher.py, and get a list of channels to send it to if not results: return pretty = rc.get_pretty() for chan in results: frontend_conn.say(chan, pretty)