-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrestapi.py
More file actions
170 lines (151 loc) · 4.53 KB
/
restapi.py
File metadata and controls
170 lines (151 loc) · 4.53 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
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
try:
import MicroRegClient
except:
from micro_reg_mod import MicroRegClient
from flask import Flask, request, url_for, render_template, flash, redirect
import json
from cred import username,token
from datetime import datetime
from functools import wraps
from threading import Thread
import time
# from database.MicroDB import MicroDB
#----------Flask instannce--------------!
app = Flask(__name__)
#!!-----authentication session dictionary--------!
auth_dict = {}
#!-----------Global MircroRegClient Instance---------!
microreg = {"inst":None}
#!---------------Universal Json Responses----------!
res={"status":"1"}
err = {"status":"0","message":"Error Occured in the process"}
#!-------------Login Authenticators Decorator---------------!
def login_required(f):
@wraps(f)
def wrap(*args,**kwargs):
# global auth
if "username" in auth_dict:
# print "USER LOGGED IN"
return f()
else:
return "USER NOT LOGGED IN"
return wrap
def time_diff(start,end):
diff = end-start
tot = diff.total_seconds()
if tot >= 1800:
return True
else :
return False
def timeout():
while(1):
time.sleep(2)
# print "Thread running at: ",datetime.now().strftime("%H:%M:%S")
global auth_dict
try:
# print auth_dict['timestamp']
s = auth_dict['timestamp']
e = datetime.now()
r = time_diff(s,e)
# print "response",r
if r == False:
pass
else:
auth_dict = {}
print "session cleared"
except KeyError as e:
pass
#!---------------Routing APIs-----------------------!
@app.route("/authentication",methods=["POST"])
def auth():
# print request.args
# user=request.args["username"]
# tok=request.args["token"]
data = request.get_json()
user = data["username"]
tok = data["token"]
if (user == username) or (tok == token):
global auth_dict
auth_dict["username"] = user
auth_dict["token"] = token
auth_dict["timestamp"] = datetime.now()
# return json.dumps({"status":1}) #success
return json.dumps({"status":[1]})
else:
# return json.dumps({"status":0}) #failure
return json.dumps({"status":[0]})
@app.route("/",methods=["GET"])
@login_required
def home():
global microreg
data=request.get_json()
print data
host = "http://"+str(data['host'])
port = int(data['port'])
try:
microreg["inst"]=MicroRegClient(host,port)
return json.dumps({"status":"1","message":" MicroRegClient Initiated" })
except:
return json.dumps({"status":"0","message":"Error Occured in MicroRegClient Instantiation"})
@app.route("/get_all_service_details",methods=["GET"])
@login_required
def get_all_service_details():
global microreg
try:
return microreg["inst"].get_all_service_details()
except:
return json.dumps(err)
@app.route("/get_reg_count",methods=["GET"])
@login_required
def get_reg_count():
global microreg
try:
return json.dumps({"status":"1","data":str( microreg["inst"].get_reg_count())})
except:
return json.dumps(err)
@app.route("/get_service_details",methods=["GET"])
@login_required
def get_service_details():
global microreg
data = request.get_json()
try:
name = data['name']
except KeyError:
return json.dumps(err)
try:
return json.dumps({"status":"1","data":str( microreg["inst"].get_service_details(name))})
except:
return json.dumps(err)
@app.route("/unregister",methods=["GET"])
@login_required
def unregister():
global microreg
data = request.get_json()
# print "<<<<<<<<<<<<<<<<<data>>>>>>",data
try:
name = data['name']
except KeyError:
return json.dumps(err)
try:
return json.dumps({"status":"1","data":str( microreg["inst"].unregister(name))})
except :
return json.dumps(err)
@app.route("/login_page",methods=["GET"])
def front():
return render_template("login.html")
@app.route("/landing_page",methods=["POST"])
def land():
print request.method
data = request.form
print data
user = data["username"]
pswd = data["password"]
if user == username and pswd == token :
return render_template("index.html")
else:
flash("Incorrect Username or Password")
if __name__ == '__main__':
t1=Thread(target=timeout)
t1.start()
# timeout()
app.run(debug=True,host="0.0.0.0",port=10001)