-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcommand_processor.py
70 lines (67 loc) · 2.48 KB
/
command_processor.py
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
class CommandProcessor:
# Events
EVENT = 0
NEW_USER = 1
ONLINE_OFFLINE = 2
OFFLINE = 0
ONLINE = 1
BLOCK_UNBLOCK = 3
UNBLOCK = 0
BLOCK = 1
FOLLOW_UNFOLLOW = 4
UNFOLLOW = 0
FOLLOW = 1
# Queries
QUERY = 1
ONLINE_FRIENDS = 1
FOLLOW_RECOMMENDATION = 2
def __init__(self, network):
self.network = network
def process(self, command):
data = command.split(' ')
command_type = int(data[0])
command_subtype = int(data[1])
if command_type == self.EVENT:
if command_subtype == self.NEW_USER:
uid = int(data[2])
name = data[3]
last_seen = int(data[4])
self.network.new_user(uid, name, last_seen)
elif command_subtype == self.ONLINE_OFFLINE:
uid = int(data[2])
action_type = int(data[3])
last_seen = int(data[4])
if action_type == self.OFFLINE:
self.network.user_offline(uid, last_seen)
elif action_type == self.ONLINE:
self.network.user_online(uid)
elif command_subtype == self.BLOCK_UNBLOCK:
uid1 = int(data[2])
uid2 = int(data[3])
action_type = int(data[4])
if action_type == self.UNBLOCK:
self.network.unblock_user(uid1, uid2)
elif action_type == self.BLOCK:
self.network.block_user(uid1, uid2)
elif command_subtype == self.FOLLOW_UNFOLLOW:
uid1 = int(data[2])
uid2 = int(data[3])
action_type = int(data[4])
if action_type == self.UNFOLLOW:
self.network.unfollow_user(uid1, uid2)
elif action_type == self.FOLLOW:
self.network.follow_user(uid1, uid2)
elif command_type == self.QUERY:
if command_subtype == self.ONLINE_FRIENDS:
uid = int(data[2])
ids = self.network.get_online_friends(uid)
for uid in ids:
print(uid, end=" ")
print()
elif command_subtype == self.FOLLOW_RECOMMENDATION:
uid = int(data[2])
time = int(data[3])
recommendations = self.network.get_follow_recommendation(uid, time)
for uid in recommendations:
print(uid, end=" ")
print()