summaryrefslogtreecommitdiff
path: root/app.py
diff options
context:
space:
mode:
Diffstat (limited to 'app.py')
-rw-r--r--app.py123
1 files changed, 123 insertions, 0 deletions
diff --git a/app.py b/app.py
new file mode 100644
index 0000000..736e31a
--- /dev/null
+++ b/app.py
@@ -0,0 +1,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()