summaryrefslogtreecommitdiff
path: root/app.py
blob: 6bb67dabdb86082e610eab5e43d4890eac48b118 (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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import redis
import sys

r = redis.Redis()

if r.get('iduser') is None:
    r.set('iduser', '0')

def iduser():
    try:
        with open('myid.txt', 'r') as f:
            iduser = f.read()

    except FileNotFoundError:
        iduser = ''

    return iduser

def user():
    if r.hget('user:'+iduser(), 'name') is not None:
        return r.hget('user:'+iduser(), 'name').decode("utf-8")
    else:
        return ''

class Colors(object):
    red = '\033[91m'
    yellow = '\033[93m'
    grey = '\033[90m'
    black = '\033[0m'
    bold = '\033[1m'


class Command(object):
    info = {
        "info" : "this is stout",
    }

    c_info = {
        "set" : "set a value",
    }

    c_commands = ('quit','set', 'get')

    whatdo = {
        'set' : ['user', 'host'],
    }

    @staticmethod
    def err(err):
        if err == 'keyword':
            sys.stderr.write(Colors.red + "keyword inesistente\n" + Colors.black)
        elif err == 'wrong':
            sys.stderr.write(Colors.red + "sintassi comando errata\n" + Colors.black)
        else:
            pass

class Stout(object):

    def __init__(self):
        self.name = 'stout'
        self.user = user()

    def getName(self):
        word = " (" + self.name + ") "
        if self.user == '':
            return word
        else:
            return word + Colors.grey + "(" + self.user + ") "

    def command(self, what, cmd):
        if what == 'set':
            try:
                if cmd[1] == 'user' and cmd[2] is not None:
                    if self.user == '':
                        new_id = str(int(r.get('iduser').decode("utf-8"))+1)
                        r.incr('iduser')
                    else:
                        new_id = iduser()

                    self.user = cmd[2]
                    r.hset('user:'+new_id,'name', self.user)

                    with open('myid.txt', 'w') as f:
                        f.write(new_id)

                    print("Ok")
                elif cmd[1] is not Command.whatdo['set']:
                    raise IndexError
            except IndexError:
                Command.err('wrong')

    def action(self, cmd):
        if cmd is None:
            return None
        else:
            cmd = cmd.split()
            count = len(cmd)

            if count == 1 and cmd[0] not in Command.c_commands:
                try:
                    print(Command.info[cmd[0]])
                except KeyError:
                    Command.err('keyword')
            elif count == 2 and cmd[0] == 'info' and cmd[0] not in Command.c_commands:
                try:
                    print(Command.c_info[cmd[1]])
                except KeyError:
                    Command.err('keyword')
            else:
                what = cmd[0]
                if what in Command.c_commands:
                    self.command(what, cmd)
                else:
                    Command.err('keyword')

if __name__ == '__main__':
    app = Stout()
    cmd = ''

    while cmd != 'quit':
        cmd = input(">" + Colors.yellow + app.getName() + Colors.black)
        app.action(cmd)
        r.save()