Initial commit: Document Translation API with Excel, Word, PowerPoint support
This commit is contained in:
51
utils/exceptions.py
Normal file
51
utils/exceptions.py
Normal file
@@ -0,0 +1,51 @@
|
||||
"""
|
||||
Custom exceptions for the Document Translation API
|
||||
"""
|
||||
from fastapi import HTTPException
|
||||
|
||||
|
||||
class TranslationError(Exception):
|
||||
"""Base exception for translation errors"""
|
||||
pass
|
||||
|
||||
|
||||
class UnsupportedFileTypeError(TranslationError):
|
||||
"""Raised when an unsupported file type is provided"""
|
||||
pass
|
||||
|
||||
|
||||
class FileSizeLimitExceededError(TranslationError):
|
||||
"""Raised when a file exceeds the size limit"""
|
||||
pass
|
||||
|
||||
|
||||
class LanguageNotSupportedError(TranslationError):
|
||||
"""Raised when a language code is not supported"""
|
||||
pass
|
||||
|
||||
|
||||
class DocumentProcessingError(TranslationError):
|
||||
"""Raised when there's an error processing the document"""
|
||||
pass
|
||||
|
||||
|
||||
def handle_translation_error(error: Exception) -> HTTPException:
|
||||
"""
|
||||
Convert translation errors to HTTP exceptions
|
||||
|
||||
Args:
|
||||
error: Exception that occurred
|
||||
|
||||
Returns:
|
||||
HTTPException with appropriate status code and message
|
||||
"""
|
||||
if isinstance(error, UnsupportedFileTypeError):
|
||||
return HTTPException(status_code=400, detail=str(error))
|
||||
elif isinstance(error, FileSizeLimitExceededError):
|
||||
return HTTPException(status_code=413, detail=str(error))
|
||||
elif isinstance(error, LanguageNotSupportedError):
|
||||
return HTTPException(status_code=400, detail=str(error))
|
||||
elif isinstance(error, DocumentProcessingError):
|
||||
return HTTPException(status_code=500, detail=str(error))
|
||||
else:
|
||||
return HTTPException(status_code=500, detail="An unexpected error occurred during translation")
|
||||
Reference in New Issue
Block a user