Waseem2106/network-security
0
1import os
2import sys
3
4import certifi
5ca=certifi.where()
6
7from dotenv import load_dotenv
8load_dotenv()
9
10mongo_db_url=os.getenv("MONGO_DB_URL")
11print(mongo_db_url)
12
13import pymongo
14from networkSecurity.exception.exception import NetworkSecurityException
15from networkSecurity.logging.logger import logging
16from networkSecurity.pipeline.training_pipeline import TrainingPipeline
17
18from fastapi.middleware.cors import CORSMiddleware
19from fastapi import FastAPI,File,UploadFile,Request
20from uvicorn import run as app_run
21from fastapi.responses import Response
22from starlette.responses import RedirectResponse
23import pandas as pd
24
25from networkSecurity.utils.main_utils.utils import load_object
26
27client= pymongo.MongoClient(mongo_db_url,tlsCAFile=ca)
28
29from networkSecurity.constant.training_pipeline import DATA_INGESTION_COLLECTION_NAME
30from networkSecurity.constant.training_pipeline import DATA_INGESTION_DATABASES_NAME
31from networkSecurity.utils.ml_utils.model.estimaor import NetworkModel
32database=client[DATA_INGESTION_DATABASES_NAME]
33collection=database[DATA_INGESTION_COLLECTION_NAME]
34
35app=FastAPI()
36origins=["*"]
37
38app.add_middleware(
39 CORSMiddleware,
40 allow_origins=origins,
41 allow_credentials=True,
42 allow_methods=["*"],
43 allow_headers=["*"],
44)
45
46from fastapi.templating import Jinja2Templates
47templates=Jinja2Templates(directory="./template")
48
49@app.get("/",tags=["authentication"])
50async def index():
51 return RedirectResponse(url="/docs")
52
53
54@app.get("/train")
55async def train_route():
56 try:
57 train_pipeline=TrainingPipeline()
58 train_pipeline.run_pipeline()
59 return Response("Training is Successfull")
60 except Exception as e:
61 raise NetworkSecurityException(e,sys)
62
63@app.get("/predict")
64async def predict_route(request:Request,file:UploadFile=File(...)):
65 try:
66 df=pd.read_csv(file.file)
67 preprocessor=load_object("final_models/preprocessor.pkl")
68 final_models=load_object("final_models/model.pkl")
69 network_model=NetworkModel(preprocessor=preprocessor,model=final_models)
70 print(df.iloc[0])
71 y_pred=network_model.predict(df)
72 print(y_pred)
73 df['predicted_column']=y_pred
74 print(df['predicted_column'])
75 ##df['predicted_column'].replace(-1,0)
76 #return df.to_json()
77 df.to_csv("predicted_output/output.csv")
78 table_html=df.to_html(classes='table table-striped')
79 #printitable html
80 return templates.TemplateResponse('table.html',{'request':request,"table":table_html})
81 except Exception as e:
82 raise NetworkSecurityException(e,sys)
83
84
85#if __name__=="__main__":
86 # app_run(app,host="localhost",port=8000)