From ae7dffa211af209aea2ca13b37729e390047dd7c Mon Sep 17 00:00:00 2001 From: Nate Sesti Date: Tue, 29 Aug 2023 10:39:25 -0700 Subject: feat: :mute: complete removal of telemetry when allow_anonymous_telemetry false --- continuedev/src/continuedev/libs/util/telemetry.py | 25 +++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'continuedev/src') diff --git a/continuedev/src/continuedev/libs/util/telemetry.py b/continuedev/src/continuedev/libs/util/telemetry.py index de28b07e..10cf7ba8 100644 --- a/continuedev/src/continuedev/libs/util/telemetry.py +++ b/continuedev/src/continuedev/libs/util/telemetry.py @@ -1,8 +1,8 @@ import os +import socket from typing import Any from dotenv import load_dotenv -from posthog import Posthog from ..constants.main import CONTINUE_SERVER_VERSION_FILE from .commonregex import clean_pii_from_any @@ -13,10 +13,20 @@ in_codespaces = os.getenv("CODESPACES") == "true" POSTHOG_API_KEY = "phc_JS6XFROuNbhJtVCEdTSYk6gl5ArRrTNMpCcguAXlSPs" +def is_connected(): + try: + # connect to the host -- tells us if the host is actually reachable + socket.create_connection(("www.google.com", 80)) + return True + except OSError: + pass + return False + + class PostHogLogger: unique_id: str = "NO_UNIQUE_ID" allow_anonymous_telemetry: bool = False - posthog: Posthog = None + posthog = None def __init__(self, api_key: str): self.api_key = api_key @@ -36,6 +46,8 @@ class PostHogLogger: print(f"Failed to capture event: {e}") pass + _found_disconnected: bool = False + def _capture_event(self, event_name: str, event_properties: Any): # logger.debug( # f"Logging to PostHog: {event_name} ({self.unique_id}, {self.allow_anonymous_telemetry}): {event_properties}") @@ -72,10 +84,17 @@ class PostHogLogger: # Send event to PostHog if self.posthog is None: + from posthog import Posthog + # The personal API key is necessary only if you want to use local evaluation of feature flags. self.posthog = Posthog(self.api_key, host="https://app.posthog.com") - self.posthog.capture(self.unique_id, event_name, event_properties) + if is_connected(): + self.posthog.capture(self.unique_id, event_name, event_properties) + else: + if not self._found_disconnected: + self._found_disconnected = True + raise ConnectionError("No internet connection") posthog_logger = PostHogLogger(api_key=POSTHOG_API_KEY) -- cgit v1.2.3-70-g09d2