31 lines
1 KiB
Python
31 lines
1 KiB
Python
import base64
|
|
import json
|
|
from datetime import datetime
|
|
|
|
|
|
def rate_clip(rate):
|
|
"""Ограничивает допустимые значения скорости (например, 0.1 ≤ x ≤ 100)"""
|
|
return min(max(rate, 0.1), 100.0)
|
|
|
|
|
|
def _rfc3339_to_timestamp(value):
|
|
"""Парсинг RFC 3339 строки в datetime"""
|
|
return datetime.fromisoformat(value.replace("Z", "+00:00"))
|
|
|
|
|
|
def base64_to_curve(encoded):
|
|
"""Декодирует base64-encoded curve"""
|
|
try:
|
|
decoded = base64.b64decode(encoded).decode('utf-8')
|
|
return json.loads(decoded)
|
|
except Exception as e:
|
|
raise ValueError(f"Invalid curve format: {e}")
|
|
|
|
|
|
def validate_custom_curve(curve):
|
|
"""Проверяет, что curve имеет ожидаемую структуру (например, список точек)"""
|
|
try:
|
|
points = base64_to_curve(curve)
|
|
return isinstance(points, list) and all(isinstance(p, list) and len(p) == 2 for p in points)
|
|
except Exception:
|
|
return False
|