|
|
| from flask import request |
| import numpy as np |
| import traceback |
|
|
| from core.response_json import error_response, success_response, server_error_response |
| from middlewares.auth import token_optional |
| from services.analysis_service import run_deepfake_analysis, save_scan_history |
|
|
|
|
| @token_optional |
| def scan_image(current_user): |
| if 'file' not in request.files: |
| return error_response(message="No file uploaded", status_code=400) |
|
|
| file = request.files['file'] |
|
|
| if file.filename == '': |
| return error_response(message="No selected file", status_code=400) |
|
|
| try: |
| file_bytes = np.frombuffer(file.read(), np.uint8) |
|
|
| analysis_result = run_deepfake_analysis(file_bytes) |
|
|
| if current_user is not None: |
| save_scan_history( |
| user_id=current_user.get("user_id"), |
| file_name=file.filename, |
| result=analysis_result["result"], |
| confidence_score=analysis_result["probability"], |
| processing_time=analysis_result["processing_time"] |
| ) |
| analysis_result["saved_to_history"] = True |
| else: |
| analysis_result["saved_to_history"] = False |
|
|
| return success_response( |
| message="Analysis complete", |
| data=analysis_result |
| ) |
|
|
| except ValueError as ve: |
| return error_response(message=str(ve), status_code=400) |
| except Exception as e: |
| print("ERROR:", str(e)) |
| traceback.print_exc() |
| return server_error_response(error_details=str(e)) |