| from fastapi import FastAPI, UploadFile, Form, File |
| from rag import PlatinumPipeline |
| import hashlib |
| import json |
| import os |
| from fastapi.middleware.cors import CORSMiddleware |
|
|
| app = FastAPI() |
| pipeline = PlatinumPipeline() |
|
|
| CREDENTIALS_FILE = 'credentials.json' |
| user_credentials = {} |
|
|
| app.add_middleware( |
| CORSMiddleware, |
| allow_origins=["*"], |
| allow_credentials=True, |
| allow_methods=["*"], |
| allow_headers=["*"], |
| ) |
|
|
| def load_credentials(): |
| global user_credentials |
| with open(CREDENTIALS_FILE, 'r') as f: |
| user_credentials = json.load(f) |
|
|
| load_credentials() |
|
|
| def verify_password(stored_hash, stored_salt_hex, entered_password): |
| stored_salt = bytes.fromhex(stored_salt_hex) |
| salted_entered_password = stored_salt + entered_password.encode('utf-8') |
| hashed_entered_password = hashlib.sha256(salted_entered_password).hexdigest() |
| return stored_hash == hashed_entered_password |
|
|
|
|
| @app.get("/") |
| async def root(): |
| return {"message": "WELCOME TO THE QA RAG FastAPI!!!"} |
|
|
|
|
| @app.post("/query") |
| async def query_rag(cred: str = Form(...), file: UploadFile = File(...)): |
| salt = os.environ.get("SALT") |
| if verify_password(user_credentials["PlatinumPluto"], salt, cred): |
| image_bytes = await file.read() |
| response = pipeline.query(image_bytes=image_bytes) |
| print(f"Response: {response}") |
| return {"response": response} |
| else: |
| return {"response": "Wrong Credential..."} |