Get a config file set up, reload it every API call.
This commit is contained in:
		
							
								
								
									
										46
									
								
								app.py
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								app.py
									
									
									
									
									
								
							| @ -1,5 +1,7 @@ | ||||
| from flask import Flask | ||||
| from flask_restful import Resource, Api, reqparse | ||||
| from datetime import date, timedelta | ||||
| import configparser | ||||
| import pandas as pd | ||||
| import numpy as np | ||||
| import ast | ||||
| @ -8,6 +10,30 @@ import glob | ||||
| app = Flask(__name__) | ||||
| api = Api(app) | ||||
|  | ||||
| def read_config(): | ||||
|     config = configparser.ConfigParser() | ||||
|     config.read('config.ini') | ||||
|     return config | ||||
|  | ||||
| def read_logs(log_folder): | ||||
|     # Read some log files | ||||
|     # Zulu time, so let's look at tomorrow, today, and yesterday. | ||||
|     # TODO Load new files into a database on a schedule? | ||||
|     today = date.today() | ||||
|     yesterday = today - timedelta(days = 1) | ||||
|     tomorrow = today + timedelta(days = 1) | ||||
|     file_list = glob.glob(log_folder+str(yesterday)+"*") + \ | ||||
|                 glob.glob(log_folder+str(today)+"*") + \ | ||||
|                 glob.glob(log_folder+str(tomorrow)+"*") | ||||
|     list_stacked = pd.DataFrame() | ||||
|     for file in file_list: | ||||
|         file1 = pd.read_csv(file) | ||||
|         list_stacked = pd.concat([list_stacked, file1]) | ||||
|     # TODO Can we do this without numpy? | ||||
|     list_stacked.replace(np.nan, 0, inplace=True) | ||||
|     #print(list_stacked.head()) | ||||
|     return(list_stacked) | ||||
|  | ||||
| class Users(Resource): | ||||
|     def get(self): | ||||
|         data = pd.read_csv('users.csv')  # read CSV | ||||
| @ -20,24 +46,20 @@ class Locations(Resource): | ||||
|         data = data.to_dict(orient = 'records')  # convert dataframe to dictionary | ||||
|         return {'data': data}, 200  # return data and 200 OK code | ||||
|  | ||||
| # Read some log files | ||||
| list_stacked = pd.DataFrame() | ||||
| file_list = glob.glob("logs/*.log") | ||||
| #print(file_list) | ||||
| for file in file_list: | ||||
|     file1 = pd.read_csv(file) | ||||
|     list_stacked = pd.concat([list_stacked, file1]) | ||||
| # TODO Can we do this without numpy? | ||||
| list_stacked.replace(np.nan, 0, inplace=True) | ||||
| #print(list_stacked.head()) | ||||
|  | ||||
| class Packets(Resource): | ||||
|     def get(self): | ||||
|         data = list_stacked | ||||
|         data = read_logs(log_folder) # re-reads the log files every time | ||||
|         data = data.to_dict(orient = 'records')  # convert dataframe to dictionary | ||||
|         #data = data.to_json(orient='records') | ||||
|         return {'data': data}, 200  # return data and 200 OK code | ||||
|  | ||||
| # Read config | ||||
| config = read_config() | ||||
| log_folder = config['Settings']['log_folder'] | ||||
| # Load logs first (just to check for errors before page loads) | ||||
| data = read_logs(log_folder) | ||||
|  | ||||
|  | ||||
| api.add_resource(Users, '/users')  # '/users' is our entry point for Users | ||||
| api.add_resource(Locations, '/locations')  # and '/locations' is our entry point for Locations | ||||
| api.add_resource(Packets, '/packets')  # and '/locations' is our entry point for Locations | ||||
|  | ||||
							
								
								
									
										4
									
								
								config.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								config.ini
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| [Settings] | ||||
| # Include trainling slash | ||||
| log_folder = logs/ | ||||
| #log_folder = /home/pi/logs/direwolf/ | ||||
		Reference in New Issue
	
	Block a user