-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
125 lines (98 loc) · 3.47 KB
/
app.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
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
import mimetypes
mimetypes.add_type('application/javascript', '.js')
mimetypes.add_type('text/css', '.css')
import logging
import sys, os
import traceback, json
from flask import Flask, render_template, request, jsonify, send_from_directory
from maps import GeoHandler
from flask_socketio import SocketIO, emit
from config import logconfig
logger = logging.getLogger()
logger.propagate = False
logger.setLevel(logging.INFO)
file_handler = logging.FileHandler(os.path.join(logconfig.logPath, (
logconfig.logFilename).replace('event', 'ILS')))
file_handler.setFormatter(logconfig.logFormat)
logger.addHandler(file_handler)
datag = None
placeDeets = None
placeName = None
picref = None
app = Flask(__name__, static_url_path='/static', static_folder='static', template_folder='templates')
socketio = SocketIO(app)
import geocoder
geodata = geocoder.ip('me')
# Handle the get requests to app (site server)
@app.route('/', methods=["GET"])
def index():
# thread for the location data transfer
return render_template("index.html")
# Handle POST requests (backend server)
# Remember to switch the button for a constant feature and the acq() while loop out
@app.route('/post', methods=["POST"])
def post():
global datag
global placeDeets
print("post works")
try:
data = request.json
if data is None:
data = json.loads(request.json)
logger.info("Post data: " + str(data))
datag = data
if data['flag'] == 'place_details':
# make placedetails api call
global placeDeets
placeDeets = GeoHandler.placeDetails(GeoHandler, data['pid'])
logger.info("Placedetails post request received")
elif data['flag'] == 'place_name':
placeDeets = GeoHandler.nameSearch(GeoHandler, data['place_name'])
logger.info("Place nameSearch post request received")
elif data['flag'] == 'get_images':
global picref
picref = data['data']
logger.info("Place get_images post request received")
GeoHandler.placeImages(GeoHandler, picref)
picref = None
return jsonify({"message": "Request received successfully"})
except Exception as e:
logger.error("Error in post request " + str(e) + traceback.format_exc())
sys.exit(-1)
@app.route('/static/<path:filename>')
def static_files(filename):
return send_from_directory(app.static_folder, filename)
@app.route('/locate')
def count():
# GeoHandler.acq(GeoHandler, )
data = {'lat': geodata.latlng[0], 'lng': geodata.latlng[1]}
logger.info("Location data by count(): " + str(data))
return jsonify(data)
@app.route('/nearby')
def nearby():
return GeoHandler.nearbyPlaces(GeoHandler, geodata.latlng[0], geodata.latlng[1])
@app.route('/details')
def details():
return placeDeets
@app.route('/nameSearch')
def name():
return placeName
@app.route('/login', methods=['POST'])
def login():
data = request.json
if data is None:
data = json.loads(request.json)
logger.info("Post data: " + str(data))
return placeName
@app.route('/location_daemon', methods=['POST'])
def handle_location_data():
try:
data = request.json
# do something with the location data, e.g. print it
print(data['latitude'], data['longitude'])
return 'OK'
except Exception as e:
logger.error(f"Location Daemon error: {e}")
return 'NOT OK'
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True)