-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCryptoRestAPI.py
More file actions
67 lines (47 loc) · 2.1 KB
/
CryptoRestAPI.py
File metadata and controls
67 lines (47 loc) · 2.1 KB
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
import random
# For REST API
from flask import Flask
from flask import request
import threading
from sortedcontainers import SortedList
# sl = Global Container variable to store accumulated int array from multiple clients
sl = SortedList()
# To protect global variable sl from data racing
sl_lock = threading.Lock()
app = Flask(__name__)
@app.route("/")
def home():
return "Hello, Provide the End point you want [clean_array, get_array, add_value]!"
@app.route('/clean_array', methods=['GET', 'DELETE'])
def clean_current_array():
if request.method == 'DELETE':
print('DEBUG: clean_array() called with DELETE')
else:
print("DEBUG: clean_array() GET method was called")
# lock acquired by web client
sl_lock.acquire()
sl.clear()
print(f"REST API Server [EndPoint = clean_array] : Cleansed int array, New Size: {len(sl)}, New Array: {sl}")
# Release lock
sl_lock.release()
return f"REST API Server [EndPoint = clean_array] : Cleansed int array, New Size: {len(sl)}, New Array: {sl}"
@app.route('/get_array', methods=['GET'])
def get_current_array():
print('REST API Server[EndPoint = get_array] : Return sorted array in Server, Size:', len(sl), 'Array:', sl)
return f"REST API Server[EndPoint = get_array] response : Array Size: {len(sl)}, Array: {sl}"
@app.route('/add_value', methods=['GET', 'POST'])
def add_value():
if request.method == 'POST':
print('DEBUG: add_value() called with POST')
else:
print("DEBUG: add_value() GET method was called")
random_int = random.randint(1000, 10000)
# lock acquired by web client
sl_lock.acquire()
print('REST API Server[EndPoint = add_value] : Adding random integer:', random_int, 'in array, Old Size:', len(sl), 'Old Array:', sl)
sl.add(random_int)
print(f"REST API Server[EndPoint = add_value] : Added random integer: {random_int} in array, New Size: {len(sl)}, New Array: {sl}")
tmpStr = f"REST API Server[EndPoint = add_value] response : Added random integer: {random_int}, New Size: {len(sl)}, New Array: {sl}"
# Release lock
sl_lock.release()
return tmpStr