craftbeerpi4-pione/cbpi/http_endpoints/http_log.py

248 lines
6.8 KiB
Python
Raw Normal View History

2021-02-27 20:09:19 +01:00
from cbpi.utils.encoder import ComplexEncoder
2019-08-05 23:00:18 +02:00
from aiohttp import web
from cbpi.utils.utils import json_dumps
from cbpi.api import request_mapping
import os
2021-02-27 20:09:19 +01:00
import json
import logging
2019-08-05 23:00:18 +02:00
class LogHttpEndpoints:
def __init__(self,cbpi):
self.cbpi = cbpi
self.cbpi.register(self, url_prefix="/log")
@request_mapping(path="/{name}/zip", method="POST", auth_required=False)
async def create_zip_names(self, request):
2019-08-05 23:15:14 +02:00
"""
---
description: Zip Log files for sensor
tags:
- Log
parameters:
- name: "name"
in: "path"
description: "Sensor ID"
required: true
type: "integer"
format: "int64"
produces:
- application/json
responses:
"204":
description: successful operation. Return "pong" text
"""
2019-08-05 23:00:18 +02:00
log_name = request.match_info['name']
data = self.cbpi.log.zip_log_data(log_name)
2019-08-05 23:15:14 +02:00
2019-08-05 23:00:18 +02:00
return web.json_response(dict(filename=data), dumps=json_dumps)
@request_mapping(path="/{name}/zip", method="DELETE", auth_required=False)
async def clear_zip_names(self, request):
2019-08-05 23:15:14 +02:00
"""
---
description: Delete all zip files for sensor
tags:
- Log
parameters:
- name: "name"
in: "path"
description: "Sensor ID"
required: true
type: "integer"
format: "int64"
responses:
"204":
description: successful operation.
"""
2019-08-05 23:00:18 +02:00
log_name = request.match_info['name']
self.cbpi.log.clear_zip(log_name)
return web.Response(status=204)
@request_mapping(path="/zip/download/{name}", method="GET", auth_required=False)
async def download_zip(self, request):
2019-08-05 23:15:14 +02:00
"""
---
description: Download a sensor zip file
tags:
- Log
parameters:
- name: "name"
in: "path"
description: "Zip File name"
required: true
type: "integer"
format: "int64"
responses:
"204":
description: successful operation.
"""
2019-08-05 23:00:18 +02:00
response = web.StreamResponse(
status=200,
reason='OK',
headers={'Content-Type': 'application/zip'},
)
await response.prepare(request)
log_name = request.match_info['name']
with open(os.path.join(self.cbpi.logsFolderPath, '%s.zip' % log_name), 'rb') as file:
2019-08-05 23:00:18 +02:00
for line in file.readlines():
await response.write(line)
await response.write_eof()
return response
@request_mapping(path="/{name}/zip", method="GET", auth_required=False)
async def get_zip_names(self, request):
2019-08-05 23:15:14 +02:00
"""
---
description: Zip available zip file names for sensor
tags:
- Log
parameters:
- name: "name"
in: "path"
description: "Sensor ID"
required: true
type: "integer"
format: "int64"
produces:
- application/json
responses:
"200":
description: successful operation.
"""
2019-08-05 23:00:18 +02:00
log_name = request.match_info['name']
data = self.cbpi.log.get_all_zip_file_names(log_name)
return web.json_response(data, dumps=json_dumps)
@request_mapping(path="/{name}/files", method="GET", auth_required=False)
async def get_file_names(self, request):
2019-08-05 23:15:14 +02:00
"""
---
description: Available log file names for sensor
tags:
- Log
parameters:
- name: "name"
in: "path"
description: "Sensor ID"
required: true
type: "integer"
format: "int64"
produces:
- application/json
responses:
"200":
description: successful operation.
"""
2019-08-05 23:00:18 +02:00
log_name = request.match_info['name']
2021-02-16 20:37:51 +01:00
2019-08-05 23:00:18 +02:00
data = self.cbpi.log.get_logfile_names(log_name)
return web.json_response(data, dumps=json_dumps)
@request_mapping(path="/{name}", method="GET", auth_required=False)
2021-02-27 20:09:19 +01:00
async def get_log(self, request):
2019-08-05 23:15:14 +02:00
"""
---
2019-08-05 23:16:12 +02:00
description: delete log data for sensor
2019-08-05 23:15:14 +02:00
tags:
- Log
parameters:
- name: "name"
in: "path"
description: "Sensor ID"
required: true
type: "integer"
format: "int64"
produces:
- application/json
responses:
"200":
description: successful operation.
"""
2019-08-05 23:00:18 +02:00
log_name = request.match_info['name']
data = await self.cbpi.log.get_data(log_name)
return web.json_response(data, dumps=json_dumps)
2021-02-27 20:09:19 +01:00
@request_mapping(path="/", method="POST", auth_required=False)
async def get_log2(self, request):
"""
---
description: delete log data for sensor
tags:
- Log
parameters:
- in: body
name: body
description: Sensor Ids
required: true
schema:
type: array
items:
type: string
produces:
- application/json
responses:
"200":
description: successful operation.
"""
data = await request.json()
values = await self.cbpi.log.get_data2(data)
return web.json_response(values, dumps=json_dumps)
2021-02-27 20:09:19 +01:00
2019-08-05 23:00:18 +02:00
@request_mapping(path="/{name}", method="DELETE", auth_required=False)
2021-02-27 20:09:19 +01:00
async def clear_log(self, request):
2019-08-05 23:15:14 +02:00
"""
---
description: Get log data for sensor
tags:
- Log
parameters:
2021-02-27 20:09:19 +01:00
- name: "name"
in: "path"
description: "Sensor ID"
required: true
type: "integer"
format: "int64"
2019-08-05 23:15:14 +02:00
responses:
"204":
description: successful operation.
"""
2019-08-05 23:00:18 +02:00
log_name = request.match_info['name']
2021-02-27 20:09:19 +01:00
self.cbpi.log.clear_log(log_name)
return web.Response(status=204)
@request_mapping(path="/logs", method="POST", auth_required=False)
async def get_logs(self, request):
"""
---
description: Get Logs
tags:
- Log
parameters:
- in: body
name: body
description: Sensor Ids
required: true
schema:
type: array
items:
type: string
produces:
- application/json
responses:
"200":
description: successful operation.
"""
data = await request.json()
result = await self.cbpi.log.get_data(data)
2023-01-22 16:37:10 +01:00
#print("JSON")
#print(json.dumps(result, cls=ComplexEncoder))
#print("JSON----")
return web.json_response(result, dumps=json_dumps)