Files
api_internal/models/servers/api.py
T

217 lines
7.0 KiB
Python

"""
AUTHOR:
Khushal P Soonderji
DATE:
Wednesday, 25th Dec., 2024.
OBJECTIVE:
To provide a structure to work with requests surrounding Cred and Data handling.
REFERENCES:
N/A
DOWNLOADS:
N/A
"""
# *****************************************************************************************************************
# ***** ****
# *** IMPORT ***
# ***** ****
# *****************************************************************************************************************
# To make sibling directories accessible for imports:
import sys
sys.path.append(".")
sys.path.append("..")
# For making data behaviour_models:
from pydantic import BaseModel, Field, field_validator, PastDatetime, model_validator
from typing import Optional, Literal, Union
# My utils:
from utils_v2.string import regex
from utils_v2.date_time import date_time
# To work with date and time:
import datetime
# *****************************************************************************************************************
# ***** ****
# *** MACROS / ONE-TIME INIT ***
# ***** ****
# *****************************************************************************************************************
# --- Nothing Yet
# *****************************************************************************************************************
# ***** ****
# *** VARIABLES ***
# ***** ****
# *****************************************************************************************************************
# --- Nothing Yet
# *****************************************************************************************************************
# ***** ****
# *** FUNCTIONS ***
# ***** ****
# *****************************************************************************************************************
class CredAndDataSetRequestHeaders(BaseModel):
scriptId: str = Field(
description = "the id of the script for whom you are setting cred/data",
frozen = True,
alias = "X-Script-Id"
)
scriptDescription: str = Field(
description = "a short description of the script and what it does",
frozen = True,
alias = "X-Script-Desc"
)
# ┏┓ ┏•
# ┃ ┏┓┏┓╋┓┏┓
# ┗┛┗┛┛┗┛┗┗┫
# ┛
class Config:
extra = "allow"
def model_dump(self, *args, **kwargs):
return super().model_dump(*args, by_alias = True, **kwargs)
# ---------------------------------------------------------------------------------------------------------------------
class CredAndDataGetRequestHeaders(BaseModel):
scriptId: str = Field(
description = "the id of the script for whom you are getting cred/data",
frozen = True,
alias = "X-Script-Id"
)
# ┏┓ ┏•
# ┃ ┏┓┏┓╋┓┏┓
# ┗┛┗┛┛┗┛┗┗┫
# ┛
class Config:
extra = "allow"
def model_dump(self, *args, **kwargs):
return super().model_dump(*args, by_alias = True, **kwargs)
# ---------------------------------------------------------------------------------------------------------------------
class CredAndDataUpdateRequestHeaders(BaseModel):
scriptId: str = Field(
description = "the id of the script for whom you are updating cred/data",
frozen = True,
alias = "X-Script-Id"
)
# ┏┓ ┏•
# ┃ ┏┓┏┓╋┓┏┓
# ┗┛┗┛┛┗┛┗┗┫
# ┛
class Config:
extra = "allow"
def model_dump(self, *args, **kwargs):
return super().model_dump(*args, by_alias = True, **kwargs)
# ---------------------------------------------------------------------------------------------------------------------
class CredAndDataUpdateRequestData(BaseModel):
unsetJson: dict = Field(
description = "the items to unset; this is performed first",
frozen = True,
alias = "unset"
)
setJson: dict = Field(
description = "the items to set; this is performed after the 'unset' operation",
frozen = True,
alias = "set"
)
# ┏┓ ┏•
# ┃ ┏┓┏┓╋┓┏┓
# ┗┛┗┛┛┗┛┗┗┫
# ┛
class Config:
extra = "forbid"
# ┓┏ ┓• ┓ •
# ┃┃┏┓┃┓┏┫┏┓╋┓┏┓┏┓
# ┗┛┗┻┗┗┗┻┗┻┗┗┗┛┛┗
@field_validator("unsetJson", "setJson", mode = "before")
def ensure_non_null(cls, value):
if value is None: value = {}
return value
# ---------------------------------------------------------------------------------------------------------------------
class CredAndDataDeleteRequestHeaders(BaseModel):
scriptId: str = Field(
description = "the id of the script for whom you are deleting cred/data",
frozen = True,
alias = "X-Script-Id"
)
# ┏┓ ┏•
# ┃ ┏┓┏┓╋┓┏┓
# ┗┛┗┛┛┗┛┗┗┫
# ┛
class Config:
extra = "allow"
def model_dump(self, *args, **kwargs):
return super().model_dump(*args, by_alias = True, **kwargs)
# *****************************************************************************************************************
# ***** ****
# *** MAIN PROGRAM ***
# ***** ****
# *****************************************************************************************************************
if __name__ == "__main__":
pass