add 'read document as http media'

This commit is contained in:
Mike Liao 2024-10-22 18:18:59 -07:00
parent 154c0a4d36
commit 4ebf8579db
3 changed files with 46 additions and 0 deletions

View File

@ -11,6 +11,9 @@ class DocumentHub:
async def retrieve_document_info(self, document_id: str):
return await self.document_manager.retrieve_document_info(document_id)
async def read_document_file_as_http_media_data(self, document_id: str):
return await self.document_manager.read_document_file_as_http_media_data(document_id)
async def upload_document(
self, associated_with: str, file_name: str, file_data: bytes
) -> bool:

View File

@ -18,6 +18,12 @@ class DocumentManager:
"file_download_url": download_link,
}
async def read_document_file_as_http_media_data(self, document_id: str):
await self.document_service.load_document(document_id=document_id)
return await self.document_service.read_document_file_as_http_media_data()
async def upload_file(
self, associated_with: str, file_name: str, file_data: bytes
) -> bool:

View File

@ -0,0 +1,37 @@
from fastapi import APIRouter
from infra.token.token_manager import TokenManager
from fastapi import APIRouter, Depends
from fastapi.encoders import jsonable_encoder
from fastapi.responses import JSONResponse
from fastapi import Depends, HTTPException
from starlette.status import HTTP_401_UNAUTHORIZED
from fastapi.encoders import jsonable_encoder
from fastapi.responses import JSONResponse
from infra.token.token_manager import TokenManager
from app.central_storage.backend.application.document_hub import DocumentHub
router = APIRouter()
# Web API
# read document as http media
@router.get(
"/read-document-as-http-media/{document_id}",
operation_id="read-document-as-http-media",
summary="Read document as http media",
description="Read document as http media which can be used by html directly",
response_description="The http media which can be used by html directly",
)
async def read_document_as_http_media(
document_id: str
):
# Fetch the document using DocumentHub
media = await DocumentHub().read_document_file_as_http_media_data(document_id)
# If document is not found, raise 404 error
if not media:
raise HTTPException(status_code=404, detail="Document not found")
# Return the document details
return JSONResponse(content=jsonable_encoder({"media": media}))