33
44from fastapi import APIRouter , Depends
55from starlette .exceptions import HTTPException
6+ from werkzeug .utils import secure_filename
67
78from app .api .hooks .metadata import ComplianceError , MetadataExtractor , get_upload_metadata
8- from app .api .hooks .pre_create import pre_create
99from app .api .hooks .schema .request import HookRequest
10+ from app .api .hooks .schema .response import FileInfoChanges , HookResponse
1011from app .django_client .service import DjangoApiService
1112from app .ingest import Ingester
1213from app .util .app_state import get_django_api , get_metadata_extractor
@@ -25,7 +26,21 @@ async def receive_hook(
2526):
2627 logger .info ("Received hook: %s" , hook_request .type )
2728 if hook_request .type == "pre-create" :
28- return await pre_create (hook_request )
29+ # read and validate request metadata
30+ metadata = get_upload_metadata (hook_request )
31+
32+ # construct updated values for the file info
33+ sanitized_filename = secure_filename (metadata .orig_file_name )
34+ upload_id = f"{ metadata .video_id } "
35+ new_path = f"/upload/{ upload_id } /{ sanitized_filename } "
36+
37+ new_file = Path (f".{ new_path } " )
38+
39+ if new_file .exists ():
40+ logger .warning ("File already exists, deleting!: %s" , new_file )
41+ new_file .unlink ()
42+
43+ return HookResponse (ChangeFileInfo = FileInfoChanges (ID = upload_id , Storage = {"Path" : new_path }))
2944
3045 if hook_request .type == "post-finish" :
3146 ingest = Ingester (archive_base_path = settings .archive_dir , django_api = django_api )
0 commit comments