summaryrefslogtreecommitdiff
path: root/lib/commands.py
blob: 1b5a5a803eb4d1e4722ec9ea09779fc2a3b67c73 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
from classes import userexist, PersonalError, r, host, clear, Colors
from listcommands import ListCommands
from config import config as co

class Commands(object):

    def command(self, what, cmd):
        """
        this function is used for execute a command
        """
        if what == 'clear':
            clear()
        elif what == 'set':
            try:
                if cmd[1] == 'user' and cmd[2] is not None: #set name for user
                    if len(cmd[2]) > 10:
                        raise PersonalError('lunghezza maggiore del consetito. Max 10')

                    if userexist(cmd[2]) == True: #check if the user exists
                        raise PersonalError('questo nome utente esiste già')

                    if len(cmd) > ListCommands.info['set'][1]:
                        raise PersonalError(Colors.grey + 'set user' + Colors.red + ' accetta 1 parametro')

                    if self.user != '': r.zrem('usersname', self.user) #if user already exists, del the name from set

                    self.user = cmd[2]
                    r.hset('user:'+host, 'name', self.user) #change name of user:0.0.0.0
                    r.zadd('usersname', self.user, 0) #insert new name into the set

                    print('Ok')
                elif cmd[1] is not ListCommands.commands['set']:
                    raise KeyError
            except IndexError:
                ListCommands.err('wrong')
            except KeyError:
                ListCommands.err('keyword')
            except PersonalError as e:
                ListCommands.err('personal', e.value)
        elif what == 'get':
            try:
                if len(cmd) > ListCommands.info['get'][1]:
                    raise PersonalError(Colors.grey + 'get ' + Colors.red + 'accetta 2 parametri')

                if cmd[1] == 'i': #if first word after get is 'i', there is an info
                    if cmd[2] == 'user':
                        #if self.user is empty, print 'nil'
                        if self.user != '':
                            print(r.hget('user:'+host, 'name').decode('utf-8'))
                        else:
                            print('nil')
                    elif cmd[2] not in ListCommands.commands['get'][1]: #check if the word after 'i' exists
                        ListCommands.err('keyword')
                    else:
                        print(co[cmd[2]])
                elif cmd[1] == 'user?':
                    #if there are more than 2 word after 'get', the func doens't work
                    if len(cmd) > 3:
                        raise PersonalError(Colors.grey + 'get user?' + Colors.red + ' accetta 1 parametro')
                    #return 1 if the user exists
                    print((lambda x: '0' if x == False else '1')(userexist(cmd[2])))
                else:
                    raise KeyError
            except IndexError:
                ListCommands.err('wrong')
            except KeyError:
                ListCommands.err('keyword')
            except PersonalError as e:
                ListCommands.err('personal', e.value)