123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- import uuid
- from typing import Any, Optional
- class BaseTelemetryEvent:
- def __init__(self, event_type: str, properties: dict[str, Any]):
- self.event_type = event_type
- self.properties = properties
- self.event_id = str(uuid.uuid4())
- class DailyActiveUserEvent(BaseTelemetryEvent):
- def __init__(self, user_id: str):
- super().__init__("DailyActiveUser", {"user_id": user_id})
- class FeatureUsageEvent(BaseTelemetryEvent):
- def __init__(
- self,
- user_id: str,
- feature: str,
- properties: Optional[dict[str, Any]] = None,
- ):
- super().__init__(
- "FeatureUsage",
- {
- "user_id": user_id,
- "feature": feature,
- "properties": properties or {},
- },
- )
- class ErrorEvent(BaseTelemetryEvent):
- def __init__(
- self,
- user_id: str,
- endpoint: str,
- error_message: str,
- properties: Optional[dict[str, Any]] = None,
- ):
- super().__init__(
- "Error",
- {
- "user_id": user_id,
- "endpoint": endpoint,
- "error_message": error_message,
- "properties": properties or {},
- },
- )
- class RequestLatencyEvent(BaseTelemetryEvent):
- def __init__(
- self,
- endpoint: str,
- latency: float,
- properties: Optional[dict[str, Any]] = None,
- ):
- super().__init__(
- "RequestLatency",
- {
- "endpoint": endpoint,
- "latency": latency,
- "properties": properties or {},
- },
- )
- class GeographicDistributionEvent(BaseTelemetryEvent):
- def __init__(
- self,
- user_id: str,
- country: str,
- properties: Optional[dict[str, Any]] = None,
- ):
- super().__init__(
- "GeographicDistribution",
- {
- "user_id": user_id,
- "country": country,
- "properties": properties or {},
- },
- )
- class SessionDurationEvent(BaseTelemetryEvent):
- def __init__(
- self,
- user_id: str,
- duration: float,
- properties: Optional[dict[str, Any]] = None,
- ):
- super().__init__(
- "SessionDuration",
- {
- "user_id": user_id,
- "duration": duration,
- "properties": properties or {},
- },
- )
- class UserPathEvent(BaseTelemetryEvent):
- def __init__(
- self,
- user_id: str,
- path: str,
- properties: Optional[dict[str, Any]] = None,
- ):
- super().__init__(
- "UserPath",
- {"user_id": user_id, "path": path, "properties": properties or {}},
- )
|