oauth-backend/lib/report.py

36 lines
1.2 KiB
Python

# save as data/report.csv
import os
import csv
from typing import List, Dict, Any
# get unix timestamp
import time
def get_timestamp() -> str:
"""
Get the current Unix timestamp as a string.
:return: Current Unix timestamp.
"""
return str(int(time.time()))
# target, status, title, description, uri
# file path는 'data/report.csv'로 고정
def save_report(report_data: List[Dict[str, Any]], file_path: str = f'data/report-{get_timestamp()}.csv') -> None:
"""
Save the report data to a CSV file.
:param report_data: List of dictionaries containing report data.
:param file_path: Path to the CSV file where the report will be saved.
"""
os.makedirs(os.path.dirname(file_path), exist_ok=True)
fieldnames = ['target', 'status', 'title', 'description', 'uri']
with open(file_path, mode='w', newline='', encoding='utf-8') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for row in report_data:
# Replace actual newlines with literal \n strings
escaped_row = {k: str(v).replace('\n', '\\n') if v is not None else v for k, v in row.items()}
writer.writerow(escaped_row)