Commit 9232ec46 authored by arun.uday's avatar arun.uday

project initial structure

parents
MONGO_URI=mongodb://localhost:27017
SERVICE_HOST=0.0.0.0
SERVICE_PORT=8671
.idea
\ No newline at end of file
__version__ = "1.0"
# iot manager - Arun Uday
import uvicorn
from scripts.config import PROJECT_NAME, Services
from scripts.logging.logger import logger
# starting the application
if __name__ == "__main__":
try:
print("Api for " + PROJECT_NAME)
uvicorn.run("main:app", port=int(Services.PORT))
except Exception as e:
logger.error(e)
[project_name]
PROJECT_NAME = AssetManager
"""
Author: Arun Uday
Email: arun.uday@knowledgelens.com
Asset Manager Login For Normal User
---------------------------------------------------------
For instructions on how to run, check README.md
"""
if __name__ == "__main__":
from dotenv import load_dotenv
load_dotenv()
import uvicorn
from scripts.services import router
from scripts.config import PROJECT_NAME, Services
from scripts.logging.logger import logger
# starting the application
if __name__ == "__main__":
try:
print("Api for " + PROJECT_NAME)
uvicorn.run(router, port=int(Services.PORT))
except Exception as e:
logger.error(e)
uvicorn~=0.21.0
python-dotenv~=1.0.0
pydantic~=1.10.6
fastapi~=0.94.1
\ No newline at end of file
import configparser
from typing import Optional, Literal
from pydantic import BaseSettings, Field
config = configparser.RawConfigParser()
config.read("conf/application.conf")
PROJECT_NAME = config.get("project_name", "PROJECT_NAME")
class _Services(BaseSettings):
HOST: str = Field(default="127.0.0.1", env="service_host")
PORT: int = Field(default=8000, env="service_port")
ENABLE_CORS: bool = True
CORS_URLS: list[str] = ["*.ilens.io"]
CORS_ALLOW_CREDENTIALS: bool = True
CORS_ALLOW_METHODS: list[str] = ["GET", "POST", "DELETE", "PUT"]
CORS_ALLOW_HEADERS: list[str] = ["*"]
SELF_PROXY: Optional[str] = Field(None, env="DIGITAL_SIGNATURE_PROXY")
LOG_LEVEL: Literal["INFO", "DEBUG", "ERROR", "QTRACE"] = "INFO"
ENABLE_FILE_LOGGING: bool = False
class _Databases(BaseSettings):
MONGO_URI: str
Services = _Services()
Databases = _Databases()
__all__ = [
"PROJECT_NAME",
"Services",
"Databases",
]
from pydantic import BaseSettings, Field
PROJECT_NAME = "IotManager"
class _Services(BaseSettings):
HOST: str = Field(default="127.0.0.1", env="service_host")
PORT: int = Field(default=8000, env="service_port")
class _Databases(BaseSettings):
MONGO_URI: str
Services = _Services()
Databases = _Databases()
__all__ = [
"PROJECT_NAME",
"Services",
"Databases",
]
from scripts.config import PROJECT_NAME
class ApiEndPoints:
version = "/v1"
start_point = PROJECT_NAME
asset_manager_login = start_point + "/login"
asset_manager_submit = start_point + "/nor-login"
import logging
import pathlib
from logging import StreamHandler
from logging.handlers import RotatingFileHandler, SocketHandler
from scripts.config import PROJECT_NAME, Services
def read_configuration():
return {
"name": PROJECT_NAME,
"handlers": [
{"type": "RotatingFileHandler", "max_bytes": 100000000, "back_up_count": 5},
{"type": "StreamHandler", "name": PROJECT_NAME},
],
}
def init_logger():
logging_config = read_configuration()
"""
Creates a rotating log
"""
__logger__ = logging.getLogger(PROJECT_NAME)
__logger__.setLevel(Services.LOG_LEVEL)
log_formatter = "%(asctime)s - %(levelname)-6s - [%(threadName)5s:%(funcName)5s(): %(lineno)s] - %(message)s"
time_format = "%Y-%m-%d %H:%M:%S"
formatter = logging.Formatter(log_formatter, time_format)
for each_handler in logging_config["handlers"]:
if (
each_handler["type"] in ["RotatingFileHandler"]
and Services.ENABLE_FILE_LOGGING
):
pathlib.Path("logs").mkdir(parents=True, exist_ok=True)
log_file = pathlib.Path("logs", f"{PROJECT_NAME}.log")
temp_handler = RotatingFileHandler(
log_file,
maxBytes=each_handler["max_bytes"],
backupCount=each_handler["back_up_count"],
)
temp_handler.setFormatter(formatter)
elif each_handler["type"] in ["SocketHandler"]:
temp_handler = SocketHandler(each_handler["host"], each_handler["port"])
elif each_handler["type"] in ["StreamHandler"]:
temp_handler = StreamHandler()
temp_handler.setFormatter(formatter)
else:
temp_handler = None
__logger__.addHandler(temp_handler)
return __logger__
logger = init_logger()
from pydantic import BaseModel
class NormalLogin(BaseModel):
username: str
password: str
from fastapi import FastAPI
from scripts.constants.api import ApiEndPoints
from scripts.services import iot_manager_services
router = FastAPI(prefix=ApiEndPoints.version)
router.include_router(iot_manager_services.router)
from fastapi import APIRouter
from scripts.constants.api import ApiEndPoints
from scripts.schemas.login_schema import NormalLogin
router = APIRouter(prefix=ApiEndPoints.version)
@router.get(ApiEndPoints.asset_manager_login)
def login_default():
return {"message": "here"}
@router.post(ApiEndPoints.asset_manager_submit)
def submit_login_details(login_data: NormalLogin):
return {"message": "its working"}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment