57598e815b
git-subtree-dir: utils_v2 git-subtree-split: a9c9cb7c91a19090b657df809e381fad2959143c
139 lines
5.3 KiB
Python
139 lines
5.3 KiB
Python
"""
|
|
|
|
AUTHOR:
|
|
|
|
Khushal P Soonderji
|
|
|
|
DATE:
|
|
|
|
Thursday, 12th Sept., 2024
|
|
|
|
OBJECTIVE:
|
|
|
|
To have a structure to the response sent from the API calls.
|
|
|
|
REFERENCES:
|
|
|
|
N/A
|
|
|
|
DOWNLOADS:
|
|
|
|
N/A
|
|
|
|
"""
|
|
|
|
|
|
# *****************************************************************************************************************
|
|
# ***** ****
|
|
# *** IMPORT ***
|
|
# ***** ****
|
|
# *****************************************************************************************************************
|
|
|
|
|
|
# System-level activities:
|
|
import distro
|
|
import socket
|
|
import platform
|
|
|
|
# For data-modelling:
|
|
from pydantic import BaseModel, Field
|
|
from typing import Any, Optional, List, Literal
|
|
|
|
# To work with date and time:
|
|
import datetime
|
|
|
|
|
|
# *****************************************************************************************************************
|
|
# ***** ****
|
|
# *** MACROS / ONE-TIME INIT ***
|
|
# ***** ****
|
|
# *****************************************************************************************************************
|
|
|
|
|
|
# Info for logging that will stay constant during runtime:
|
|
SERVER_HOSTNAME = str(socket.gethostname())
|
|
PLATFORM_INFO = platform.uname()
|
|
HOST_OS = str(distro.name(True))
|
|
HOST_CPU = f"{PLATFORM_INFO.processor} ({PLATFORM_INFO.machine})"
|
|
|
|
|
|
# *****************************************************************************************************************
|
|
# ***** ****
|
|
# *** VARIABLES ***
|
|
# ***** ****
|
|
# *****************************************************************************************************************
|
|
|
|
|
|
# --- Nothing Yet
|
|
|
|
|
|
# *****************************************************************************************************************
|
|
# ***** ****
|
|
# *** CLASSES ***
|
|
# ***** ****
|
|
# *****************************************************************************************************************
|
|
|
|
|
|
class APILogModel(BaseModel):
|
|
|
|
# To identify the machine the code is running on.
|
|
# DO NOT MODIFY THESE:
|
|
hostname: str = SERVER_HOSTNAME
|
|
os: str = HOST_OS
|
|
cpu: str = HOST_CPU
|
|
# Can modify these:
|
|
pid: Optional[Any] = None
|
|
ppid: Optional[Any] = None
|
|
|
|
# To identify the project and actions:
|
|
project: Optional[str] = None
|
|
log: str
|
|
operation: str
|
|
apiVer: Optional[str] = None
|
|
logId: Optional[str] = None
|
|
logChain: Optional[str] = None
|
|
|
|
# Timing metrics:
|
|
ts: datetime.datetime
|
|
tat: float
|
|
cpuTime: float
|
|
|
|
# To understand the request that came in:
|
|
method: Optional[str] = None
|
|
url: Optional[str] = None
|
|
route: Optional[str] = None
|
|
headers: Optional[Any] = None
|
|
data: Optional[Any] = None
|
|
files: Optional[Any] = None
|
|
|
|
# To understand the output that went out:
|
|
exception: Optional[Any] = None
|
|
response: Optional[Any] = None
|
|
httpCode: Optional[int] = None
|
|
|
|
|
|
# *****************************************************************************************************************
|
|
# ***** ****
|
|
# *** FUNCTIONS ***
|
|
# ***** ****
|
|
# *****************************************************************************************************************
|
|
|
|
|
|
# --- Nothing Yet
|
|
|
|
|
|
# *****************************************************************************************************************
|
|
# ***** ****
|
|
# *** MAIN PROGRAM ***
|
|
# ***** ****
|
|
# *****************************************************************************************************************
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
my_log = APILogModel(
|
|
log = "internal"
|
|
)
|
|
|
|
print(my_log)
|