#!/bin/env python

import os
import subprocess

class Channel(object):
    """Channel class"""

    def __init__(self, name, network, nick, extensions=None):
        self.__name = name
        self.__nick = nick
        self.__in   = open("%s/irc/%s/%s/in" % (os.environ["HOME"], network, name), "w", 1)
        self.__out  = open("%s/irc/%s/%s/out" % (os.environ["HOME"], network, name), "r")
        self.__exts = extentions
        self.__mode = None

    def message(self, message):
        self.__in.write(message + "\n")

    def action(self, action):
        message("/j %s" % action)



class Sexiibot(object):
    """Core sexiibot class"""

    def __init__(self, new=True, server, port=None, ssl=False, channel, nick, realname=None, extensions, iipath=None)
        if new:
            self.__server   = server
        else:
            self.__server   = None
        self.__port         = port
        self.__ssl          = ssl
        self.__channels     = channels
        self.__nick         = nick
        self.__realname     = realname
        else:
            self.__realname = realname
        self.__in           = None
        self.__out          = None
        self.__iipath       = iipath
        sekf.__iiproc       = None

    def start(self):
        exists = os.path.isfile("%s/irc/%s/in" % (os.environ["HOME"], self.__server))
        if not self.__server is None:
            # Check if a ii instance isn't already running on our potentially existing FIFO
            if exists:
                print("FIFO for that server already exist.")
                print("Please clean the irc folder and try again.")
                sys.exit(1)
            if self.__port is None:
                if self.__ssl:
                    self.__port = 6697
                else:
                    self.__port = 6667
            cmd = [iipath, "-s", self.__server, "-p", self.__port, "-n", self.__nick, "-f", self.__realname]
            if self.__ssl:
                cmd += ["-e", "ssl"]
            self.__iiproc = subprocess.Popen(cmd) # self.__iiproc.terminate() later to stop
            self.__in = open("%s/irc/%s/in" % (os.environ["HOME"], self.__server), "w", 1)

    def messageServer(self, message):
        self.__in.write(message + "\n")

    def join(self, channel):
        messageServer("/j %s" % channel)

    def messageChannel(self, channel, message):
        self.__channels[channel].message(message)