import requests from atlas_um.logs import logger from atlas_um.helpers import either class Amplitude: """Amplitude client extension.""" API_ROOT = "https://api2.amplitude.com/2/httpapi" def __init__(self, app=None, api_key=None): self.app = app self._api_key = api_key if app is not None: self.init_app(app) def init_app(self, app): self._api_key = self._api_key or app.config.get("AMPLITUDE_API_KEY") app.extensions["amplitude"] = self def send_event(self, event) -> either.Either: if not self._api_key: msg = "No api key for Amplitude" logger.warning(msg) return either.Left(msg) headers = {"Content-Type": "application/json", "Accept": "*/*"} data = {"api_key": self._api_key, "events": [event]} resp = requests.post(self.API_ROOT, json=data, headers=headers) if not resp.ok: logger.bind(resp=resp.text).error( "Unable to send event to Amplitude" ) return either.Left(resp.text) logger.bind(event=event).debug("Sending event to Amplitude") return either.Right(None)