summaryrefslogtreecommitdiff
path: root/app.py
blob: 736e31ada150363f2c4cac6318dd146f57fb2a8f (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()