Example #1
0
 def test_leave(self):
     msg = JimMessage()
     msg.compose('leave', room='#chatroom')
     assert msg.encode(), {
         'action': 'leave',
         'time': int(time.time()),
         'room': '#chatroom'
     }
Example #2
0
 def test_msg(self):
     msg = JimMessage()
     msg.compose('msg',
                 msg_to='Recipient',
                 msg_from='Sender',
                 msg='Test Message')
     assert msg.encode(), {
         'action': 'msg',
         'to': 'Recipient',
         'from': 'Sender',
         'time': int(time.time()),
         'message': 'Test Message'
     }
Example #3
0
 def test_auth(self):
     msg = JimMessage()
     msg.compose('authenticate',
                 user={
                     'account_name': 'JohnDoe',
                     'password': '******'
                 })
     assert msg.encode(), {
         'action': 'authenticate',
         'time': int(time.time()),
         'user': {
             'account_name': 'JohnDoe',
             'password': '******'
         }
     }
Example #4
0
 def test_presence(self):
     msg = JimMessage()
     msg.compose('presence',
                 user={
                     'account_name': 'JohnDoe',
                     'status': 'here'
                 })
     assert msg.encode(), {
         'action': 'presence',
         'time': int(time.time()),
         'user': {
             'account_name': 'JohnDoe',
             'status': 'here'
         }
     }
Example #5
0
class JimClient:
    def __init__(self, host, port, user=None, password=None):
        self.host, self.port = host, port
        self.user = user or 'guest'
        self.password = password or ''
        self.socket = socket(AF_INET, SOCK_STREAM)
        self.socket.connect((self.host, self.port))
        self.msg = JimMessage()
        self.rsp = JimResponse()

    def disconnect(self):
        self.socket.close()

    def send_presence(self, status=''):
        if status == '':
            self.msg.compose('presence',
                             user={
                                 'account_name': self.user,
                                 'status': status
                             })
        else:
            self.msg.compose('presence',
                             type='status',
                             user={
                                 'account_name': self.user,
                                 'status': status
                             })
        if self.msg.send_message(self.socket):
            return self.rsp.read_response(self.socket)
        return None

    def send_message(self, user, message):
        self.msg.compose('msg', msg_to=user, msg_from=self.user, msg=message)
        if self.msg.send_message(self.socket):
            response = self.rsp.read_response(self.socket)
            if user.startswith('#'):
                msg = JimMessage()
                msg.read_message(self.socket)
            return response
        return None

    def reading_loop(self):
        msg = JimMessage()
        while True:
            data = msg.read_message(self.socket)
            print(data)
Example #6
0
 def test_quit(self):
     msg = JimMessage()
     msg.compose('quit')
     assert msg.encode() == {'action': 'quit', 'time': int(time.time())}
Example #7
0
 def test_probe(self):
     msg = JimMessage()
     msg.compose('probe')
     assert msg.encode() == {'action': 'probe', 'time': int(time.time())}
Example #8
0
 def test_probe(self):
     msg = JimMessage()
     msg.compose('probe')
     self.assertEqual(msg.encode(), {'action': 'probe', 'time': int(time.time())})
Example #9
0
 def test_join(self):
     msg = JimMessage()
     msg.compose('join', room='#chatroom')
     self.assertEqual(msg.encode(), {'action': 'join', 'time': int(time.time()), 'room': '#chatroom'})
Example #10
0
 def test_quit(self):
     msg = JimMessage()
     msg.compose('quit')
     self.assertEqual(msg.encode(), {'action': 'quit', 'time': int(time.time())})