Example #1
0
class Client:

    def __init__(self, name):
        self.jim = JimProtocol()
        self.name = name
        self.request_queue = Queue()

    def action(self, msg):
        if 'action' in msg and \
                msg['action'] == 'msg':
            msg = '{} {} send message to all: {}'\
                .format(time.ctime(), msg.get('from'), msg.get('message'))
            return msg
        elif 'action' in msg and \
                msg['action'] == 'presence':
            msg = 'console', msg
            return msg
        elif 'action' in msg and \
                msg['action'] == 'setClients':
            clients = msg.get('clients')
            self.request_queue.put(clients)
        elif 'action' in msg and \
                msg['action'] == 'setContacts':
            contacts = msg.get('contacts')
            self.request_queue.put(contacts)
        elif 'action' in msg and \
                msg['action'] == 'msg_to_user':
            from_name = msg.get('from')
            message = msg.get('message')
            msg = '{}: {}'.format(from_name, message)
            return msg

    def connect_to_server(self):
        self.sock = socket.socket()
        self.sock.connect(('', 7778))
        self.send_presence(self.name)

    def send_presence(self, name):
        presence = self.jim.create_presence(name)
        self.jim.send_msg(self.sock, presence)
        t = Thread(target=self.read_loop)
        t.daemon = True
        t.start()

    def send_msg(self, msg):
        json_msg = self.jim.create_msg(self.name, msg)
        self.jim.send_msg(self.sock, json_msg)

    def read_loop(self):
        while True:
            msg = self.jim.recive_msg(self.sock)
            msg = self.action(msg)
            print(msg)

    def add_contact(self, client_name):
        msg = self.jim.join_to_chat(self.name, client_name)
        self.jim.send_msg(self.sock, msg)

    def del_contact(self, client_name):
        msg = self.jim.del_contact(self.name, client_name)
        self.jim.send_msg(self.sock, msg)

    def remove_client_online(self, client_name):
        msg = self.jim.remove_client(client_name)
        self.jim.send_msg(self.sock, msg)

    def create_client(self, client_name):
        msg = self.jim.new_client(client_name)
        self.jim.send_msg(self.sock, msg)

    def get_clients(self):
        msg = self.jim.get_clients()
        self.jim.send_msg(self.sock, msg)
        msg = self.request_queue.get()
        return msg

    def get_contacts(self, name):
        msg = self.jim.get_contacts(name)
        self.jim.send_msg(self.sock, msg)
        msg = self.request_queue.get()
        return msg

    def send_private_msg(self, from_name, to_name, message):
        msg = self.jim.msg_private(from_name, to_name, message)
        self.jim.send_msg(self.sock, msg)
Example #2
0
class Client:
    def __init__(self, name):
        self.jim = JimProtocol()
        self.name = name
        self.clients_online = []
        # self.client_chat = ClientChat()
        #self.sock = sock

    def action(self, msg):
        if 'action' in msg and \
                msg['action'] == 'msg':
            msg = '{} {} send message to all: {}'\
                .format(time.ctime(), msg.get('from'), msg.get('message'))
            # print(msg)
            return msg
        elif 'action' in msg and \
                msg['action'] == 'presence':
            msg = 'console', msg
            return msg
        elif 'action' in msg and \
                msg['action'] == 'setClients':
            clients = msg.get('clients')

            # clients = clients.split(',')
            print(type(clients), clients)
            self.clients_online = clients
            list = clients.split(' ')
            self.clients_online = list
            return list

    def connect_to_server(self):
        self.sock = socket.socket()
        self.sock.connect(('', 7778))
        self.send_presence(self.name)

    def send_presence(self, name):
        presence = self.jim.create_presence(name)
        self.jim.send_msg(self.sock, presence)
        t = Thread(target=self.read_loop)
        t.daemon = True
        t.start()

    def send_msg(self, msg):
        json_msg = self.jim.create_msg(self.name, msg)
        self.jim.send_msg(self.sock, json_msg)

    def read_loop(self):
        while True:
            # buf = self.sock.recv(1024)
            # msg = buf.decode()
            msg = self.jim.recive_msg(self.sock)
            msg = self.action(msg)
            print(msg)

    def add_contact(self, client_name):
        msg = self.jim.join_to_chat(self.name, client_name)
        self.jim.send_msg(self.sock, msg)

    def del_contact(self, client_name):
        msg = self.jim.del_contact(self.name, client_name)
        self.jim.send_msg(self.sock, msg)

    def remove_client_online(self, client_name):
        msg = self.jim.remove_client(client_name)
        self.jim.send_msg(self.sock, msg)

    def create_client(self, client_name):
        msg = self.jim.new_client(client_name)
        self.jim.send_msg(self.sock, msg)

    def get_clients(self):
        msg = self.jim.get_clients()
        self.jim.send_msg(self.sock, msg)

    def get_contact(self):
        msg = self.jim.get_contact(self.name)
        self.jim.send_msg(self.sock, msg)


# client = Client(name='Kolya')
# client.connect_to_server()