1234567891011121314151617181920212223242526272829303132333435363738394041 |
- from __future__ import annotations
- import logging
- from yarl import URL
- import aiohttp
- from mautrix.util import background_task
- from .. import user as u
- log = logging.getLogger("mau.web.public.analytics")
- segment_url: URL = URL("https://api.segment.io/v1/track")
- http: aiohttp.ClientSession | None = None
- segment_key: str | None = None
- segment_user_id: str | None = None
- async def _track(user: u.User, event: str, properties: dict) -> None:
- await http.post(
- segment_url,
- json={
- "userId": segment_user_id or user.mxid,
- "event": event,
- "properties": {"bridge": "signal", **properties},
- },
- auth=aiohttp.BasicAuth(login=segment_key, encoding="utf-8"),
- )
- log.debug(f"Tracked {event}")
- def track(user: u.User, event: str, properties: dict | None = None):
- if segment_key:
- background_task.create(_track(user, event, properties or {}))
- def init(key, user_id: str | None = None):
- global segment_key, segment_user_id, http
- segment_key = key
- segment_user_id = user_id
- http = aiohttp.ClientSession()
|