BlakeL commited on
Commit
8ffff15
·
verified ·
1 Parent(s): 0f145f2

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +55 -10
app.py CHANGED
@@ -56,27 +56,72 @@ except ImportError as e:
56
  class InputValidator:
57
  def __init__(self, max_length=1000):
58
  self.max_length = max_length
59
- def validate(self, text):
60
- return text[:self.max_length] if text else ""
 
 
 
 
 
 
 
 
 
 
 
 
 
61
 
62
  class RateLimiter:
63
  def __init__(self, requests_per_minute=60, requests_per_hour=1000):
64
- pass
65
- def check_rate_limit(self, user_id):
 
 
66
  return True
 
 
 
 
 
 
67
 
68
  class SessionManager:
69
  def __init__(self, session_timeout_minutes=30):
70
- pass
71
- def create_session(self, user_id):
72
- return f"session_{user_id}_{datetime.now().timestamp()}"
73
- def validate_session(self, session_id):
74
- return True
 
 
 
 
 
 
 
 
 
 
 
 
 
75
 
76
  class ErrorHandler:
77
- def handle_error(self, error, context=""):
 
 
 
78
  logger.error(f"Error: {error} - Context: {context}")
 
 
 
 
 
79
  return "An error occurred. Please try again."
 
 
 
80
 
81
  # Fallback decorators
82
  def handle_errors(func):
 
56
  class InputValidator:
57
  def __init__(self, max_length=1000):
58
  self.max_length = max_length
59
+
60
+ def _truncate(self, text: str) -> str:
61
+ return (text or "")[: self.max_length]
62
+
63
+ def validate(self, text: str) -> str:
64
+ return self._truncate(text)
65
+
66
+ def validate_user_id(self, user_id: str) -> str:
67
+ return self._truncate(user_id)
68
+
69
+ def validate_message(self, message: str) -> str:
70
+ return self._truncate(message)
71
+
72
+ def validate_input(self, value: str, _name: str = "") -> str:
73
+ return self._truncate(value)
74
 
75
  class RateLimiter:
76
  def __init__(self, requests_per_minute=60, requests_per_hour=1000):
77
+ self.requests_per_minute = requests_per_minute
78
+ self.requests_per_hour = requests_per_hour
79
+
80
+ def check_rate_limit(self, user_id: str) -> bool:
81
  return True
82
+
83
+ def get_remaining_requests(self, _user_id: str) -> dict:
84
+ return {
85
+ "per_minute_remaining": self.requests_per_minute,
86
+ "per_hour_remaining": self.requests_per_hour,
87
+ }
88
 
89
  class SessionManager:
90
  def __init__(self, session_timeout_minutes=30):
91
+ self.session_timeout_minutes = session_timeout_minutes
92
+ self.sessions: Dict[str, dict] = {}
93
+
94
+ def create_session(self, user_id: str, data: Optional[dict] = None) -> str:
95
+ session_id = f"session_{user_id}_{datetime.now().timestamp()}"
96
+ self.sessions[session_id] = {
97
+ "user_id": user_id,
98
+ "created_at": datetime.now(),
99
+ "last_activity": datetime.now(),
100
+ "data": data or {},
101
+ }
102
+ return session_id
103
+
104
+ def validate_session(self, session_id: str) -> Optional[dict]:
105
+ return self.sessions.get(session_id)
106
+
107
+ def destroy_session(self, session_id: str) -> None:
108
+ self.sessions.pop(session_id, None)
109
 
110
  class ErrorHandler:
111
+ def __init__(self):
112
+ self._errors: List[dict] = []
113
+
114
+ def handle_error(self, error, context: str = ""):
115
  logger.error(f"Error: {error} - Context: {context}")
116
+ self._errors.append({
117
+ "error": str(error),
118
+ "context": context,
119
+ "time": datetime.now().isoformat(),
120
+ })
121
  return "An error occurred. Please try again."
122
+
123
+ def get_error_statistics(self) -> dict:
124
+ return {"total_errors": len(self._errors)}
125
 
126
  # Fallback decorators
127
  def handle_errors(func):