in confidence/confidence.py [0:0]
def _send_event_internal(self, event_name: str, data: Dict[str, FieldType]) -> None:
current_time = datetime.utcnow().isoformat() + "Z"
request_body = {
"clientSecret": self._client_secret,
"sendTime": current_time,
"events": [
{
"eventDefinition": f"eventDefinitions/{event_name}",
"payload": {"context": {**self.context}, **data},
"eventTime": current_time,
}
],
"sdk": {"id": "SDK_ID_PYTHON_CONFIDENCE", "version": __version__},
}
event_url = "https://events.confidence.dev/v1/events:publish"
headers = {"Content-Type": "application/json", "Accept": "application/json"}
timeout_sec = None if self._timeout_ms is None else self._timeout_ms / 1000.0
try:
response = requests.post(
event_url, json=request_body, headers=headers, timeout=timeout_sec
)
if response.status_code == 200:
json = response.json()
json_errors = json.get("errors")
if json_errors:
self.logger.warning("events emitted with errors:")
for error in json_errors:
self.logger.warning(error)
else:
self.logger.warning(
f"Track event {event_name} failed with status code"
+ f" {response.status_code} and reason: {response.reason}"
)
except requests.exceptions.RequestException as e:
self.logger.warning(f"Failed to track event {event_name}: {str(e)}")