Files
2026-05-26 21:39:05 -06:00

81 lines
2.3 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Simple REST Server
import os
import sys
import json
import datetime
import argparse
from flask import Flask, request, render_template
app = Flask(__name__)
database = []
@app.route("/")
def root():
global database
items = []
for data in database:
#print("{}".format(data))
datetime = data[0].split()
#print("data={} datetime={}".format(data[0], datetime))
items.append({
"date": datetime[0],
"time": datetime[1],
"id": data[1],
"frame": data[2],
"value": data[3]
})
#print("items={}".format(items))
return render_template("index.html", lines=app.config['lines'], items=items)
#curl -X POST -H "Content-Type: application/json" -d '{"canid":101, "frame":"standard" , "data": [1,2,3,4,5,6,7,8]}' http://192.168.10.43:8000/post
@app.route("/post", methods=["POST"])
def post():
function = sys._getframe().f_code.co_name
#print("{}: request={}".format(function, request))
#print("{}: request.data={}".format(function, request.data))
dict = json.loads(request.data)
print("{} dict={}".format(function, dict))
items = []
now = datetime.datetime.now()
items.append(now.strftime("%Y/%m/%d %H:%M:%S"))
if ("canid" in dict):
print("{} canid=0x{:x}".format(function, dict['canid']))
items.append(dict['canid'])
if ("frame" in dict):
print("{} frame={}".format(function, dict['frame']))
items.append(dict['frame'])
if ("data" in dict):
print("{} data length={}".format(function, len(dict['data'])))
print("{} data={}".format(function, dict['data']))
items.append(dict['data'])
global database
#print("{} {} {}".format(type(database), len(database), database))
print("lines={}".format(app.config['lines']))
#if(len(database) >= 20):
if(len(database) >= app.config['lines']):
database.pop(0)
database.append(items)
data = json.dumps(['result', 'ok'])
return data
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-port', type=int, default=8000)
parser.add_argument('-lines', type=int, default=20)
args = parser.parse_args()
print("port={}".format(args.port))
print("lines={}".format(args.lines))
app.config['lines'] = args.lines
#app.run()
app.run(host='127.0.0.1', port=args.port, debug=True)