-
Notifications
You must be signed in to change notification settings - Fork 3
/
server.py
70 lines (56 loc) · 1.74 KB
/
server.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
import argparse
import sys
from flask import Flask, request
from src.config import *
from src.node import Node, requests
from src.utils import INSERT, REMOVE, PIN_SEARCH, SUPERSET_SEARCH
app = Flask(APP_NAME)
@app.route(INSERT)
def request_insert():
keyword = int(request.args.get('keyword'))
obj = request.args.get('obj')
res = NODE.insert(keyword, obj)
if type(res) is not str:
res = res.text
return res
@app.route(REMOVE)
def request_remove():
keyword = int(request.args.get('keyword'))
obj = request.args.get('obj')
res = NODE.remove(keyword, obj)
if type(res) is not str:
res = res.text
return res
@app.route(PIN_SEARCH)
def request_pin_search():
keyword = int(request.args.get('keyword'))
threshold = request.args.get('threshold')
if threshold is None:
res = NODE.pin_search(keyword)
else:
res = NODE.pin_search(keyword, int(threshold))
if type(res) is not list:
res = res.text
else:
res = ','.join(res)
return res
@app.route(SUPERSET_SEARCH)
def request_superset_search():
keyword = int(request.args.get('keyword'))
threshold = int(request.args.get('threshold'))
sender = request.args.get('sender')
res = NODE.superset_search(keyword, threshold, sender)
if type(res) is not list:
res = res.text
else:
res = ','.join(res)
return res
def parse_arguments(argv):
parser = argparse.ArgumentParser()
parser.add_argument('port', type=int, help='Port number to which connect the node')
return parser.parse_args(argv)
if __name__ == '__main__':
PORT = parse_arguments(sys.argv[1:]).port
NODE_ID = PORT - INIT_PORT
NODE = Node(NODE_ID)
app.run(host=LOCAL_HOST, port=PORT, threaded=True)