Spaces:
Build error
Build error
File size: 1,854 Bytes
bcc8074 a650e63 bcc8074 a650e63 bcc8074 a650e63 bcc8074 a650e63 bcc8074 a650e63 bcc8074 a650e63 bcc8074 a650e63 bcc8074 a650e63 bcc8074 a650e63 bcc8074 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
"""
Credit Service - Middleware-based credit management system.
Provides automatic credit tracking via middleware with complete audit trail.
Application layer is completely unaware of credit management.
Components:
- CreditServiceConfig: Route configuration with credit costs and types
- CreditMiddleware: Request/response-based credit handling
- CreditTransactionManager: Core credit transaction operations
- ResponseInspector: Response analysis for credit decisions
- credit_manager: Legacy refund logic (used by middleware)
Usage in app.py:
from services.credit_service import CreditServiceConfig
CreditServiceConfig.register(
route_configs={
"/gemini/analyze-image": {"cost": 1, "type": "sync"},
"/gemini/generate-video": {"cost": 10, "type": "async"},
}
)
app.add_middleware(CreditServiceConfig.get_middleware())
"""
from services.credit_service.config import CreditServiceConfig
from services.credit_service.middleware import CreditMiddleware
from services.credit_service.transaction_manager import (
CreditTransactionManager,
InsufficientCreditsError,
TransactionNotFoundError,
UserNotFoundError
)
from services.credit_service.response_inspector import ResponseInspector
from services.credit_service.credit_manager import (
is_refundable_error,
REFUNDABLE_ERROR_PATTERNS,
NON_REFUNDABLE_ERROR_PATTERNS,
)
__all__ = [
# Configuration
'CreditServiceConfig',
# Middleware
'CreditMiddleware',
# Transaction Manager
'CreditTransactionManager',
'InsufficientCreditsError',
'TransactionNotFoundError',
'UserNotFoundError',
# Response Inspector
'ResponseInspector',
# Refund logic helpers
'is_refundable_error',
'REFUNDABLE_ERROR_PATTERNS',
'NON_REFUNDABLE_ERROR_PATTERNS',
]
|