diff options
author | Nate Sesti <sestinj@gmail.com> | 2023-08-29 10:39:25 -0700 |
---|---|---|
committer | Nate Sesti <sestinj@gmail.com> | 2023-08-29 10:39:25 -0700 |
commit | ae7dffa211af209aea2ca13b37729e390047dd7c (patch) | |
tree | ddb67d11e87b2cd8ac79191edb995ce14a4a7080 /continuedev/src | |
parent | 047dad3152f2f50e35e185fd0183143143f6acca (diff) | |
download | sncontinue-ae7dffa211af209aea2ca13b37729e390047dd7c.tar.gz sncontinue-ae7dffa211af209aea2ca13b37729e390047dd7c.tar.bz2 sncontinue-ae7dffa211af209aea2ca13b37729e390047dd7c.zip |
feat: :mute: complete removal of telemetry when allow_anonymous_telemetry false
Diffstat (limited to 'continuedev/src')
-rw-r--r-- | continuedev/src/continuedev/libs/util/telemetry.py | 25 |
1 files changed, 22 insertions, 3 deletions
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) |