move analytics related calls into their own class
This commit is contained in:
parent
93e2b3e20a
commit
d0a82c68df
2 changed files with 32 additions and 19 deletions
|
@ -61,7 +61,7 @@ class AnalyticsApi(object):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def load(cls, session=None):
|
def load(cls, session=None):
|
||||||
"""Initialize an instance using values from lbry.io."""
|
"""Initialize an instance using values from the configuration"""
|
||||||
if not session:
|
if not session:
|
||||||
session = sessions.FuturesSession()
|
session = sessions.FuturesSession()
|
||||||
return cls(
|
return cls(
|
||||||
|
|
|
@ -201,6 +201,31 @@ class CheckRemoteVersions(object):
|
||||||
return defer.fail(None)
|
return defer.fail(None)
|
||||||
|
|
||||||
|
|
||||||
|
class AnalyticsManager(object):
|
||||||
|
def __init__(self):
|
||||||
|
self.analytics_api = None
|
||||||
|
self.events_generator = None
|
||||||
|
self.send_heartbeat = LoopingCall(self._send_heartbeat)
|
||||||
|
|
||||||
|
def start(self, platform, wallet_type, lbry_id, session_id):
|
||||||
|
context = analytics.make_context(platform, wallet_type)
|
||||||
|
self.events_generator = analytics.Events(context, base58.b58encode(lbry_id), session_id)
|
||||||
|
self.analytics_api = analytics.Api.load()
|
||||||
|
self.send_heartbeat.start(60)
|
||||||
|
|
||||||
|
def shutdown(self):
|
||||||
|
if self.send_heartbeat.running:
|
||||||
|
self.send_heartbeat.stop()
|
||||||
|
|
||||||
|
def send_download_started(self, name, stream_info=None):
|
||||||
|
event = self.events_generator.download_started(name, stream_info)
|
||||||
|
self.analytics_api.track(event)
|
||||||
|
|
||||||
|
def _send_heartbeat(self):
|
||||||
|
heartbeat = self.events_generator.heartbeat()
|
||||||
|
self.analytics_api.track(heartbeat)
|
||||||
|
|
||||||
|
|
||||||
class Daemon(jsonrpc.JSONRPC):
|
class Daemon(jsonrpc.JSONRPC):
|
||||||
"""
|
"""
|
||||||
LBRYnet daemon, a jsonrpc interface to lbry functions
|
LBRYnet daemon, a jsonrpc interface to lbry functions
|
||||||
|
@ -238,6 +263,7 @@ class Daemon(jsonrpc.JSONRPC):
|
||||||
self.first_run_after_update = False
|
self.first_run_after_update = False
|
||||||
self.uploaded_temp_files = []
|
self.uploaded_temp_files = []
|
||||||
self._session_id = base58.b58encode(generate_id())
|
self._session_id = base58.b58encode(generate_id())
|
||||||
|
self.analytics_manager = AnalyticsManager()
|
||||||
|
|
||||||
if os.name == "nt":
|
if os.name == "nt":
|
||||||
from lbrynet.winhelpers.knownpaths import get_path, FOLDERID, UserHandle
|
from lbrynet.winhelpers.knownpaths import get_path, FOLDERID, UserHandle
|
||||||
|
@ -414,7 +440,6 @@ class Daemon(jsonrpc.JSONRPC):
|
||||||
('version_checker', CheckRemoteVersions(self)),
|
('version_checker', CheckRemoteVersions(self)),
|
||||||
('connection_problem_checker', self._check_connection_problems),
|
('connection_problem_checker', self._check_connection_problems),
|
||||||
('pending_claim_checker', self._check_pending_claims),
|
('pending_claim_checker', self._check_pending_claims),
|
||||||
('send_heartbeat', self._send_heartbeat),
|
|
||||||
('send_tracked_metrics', self._send_tracked_metrics),
|
('send_tracked_metrics', self._send_tracked_metrics),
|
||||||
]
|
]
|
||||||
for name, fn in looping_calls:
|
for name, fn in looping_calls:
|
||||||
|
@ -616,23 +641,14 @@ class Daemon(jsonrpc.JSONRPC):
|
||||||
d.addCallback(lambda _: self._setup_server())
|
d.addCallback(lambda _: self._setup_server())
|
||||||
d.addCallback(lambda _: _log_starting_vals())
|
d.addCallback(lambda _: _log_starting_vals())
|
||||||
d.addCallback(lambda _: _announce_startup())
|
d.addCallback(lambda _: _announce_startup())
|
||||||
d.addCallback(lambda _: self._load_analytics_api())
|
d.addCallback(
|
||||||
|
lambda _: self.analytics_manager.start(
|
||||||
|
self._get_platform(), self.wallet_type, self.lbryid, self._session_id))
|
||||||
# TODO: handle errors here
|
# TODO: handle errors here
|
||||||
d.callback(None)
|
d.callback(None)
|
||||||
|
|
||||||
return defer.succeed(None)
|
return defer.succeed(None)
|
||||||
|
|
||||||
def _load_analytics_api(self):
|
|
||||||
self.analytics_api = analytics.Api.load()
|
|
||||||
self.send_heartbeat.start(60)
|
|
||||||
|
|
||||||
def _send_heartbeat(self):
|
|
||||||
heartbeat = self._events.heartbeat()
|
|
||||||
self.analytics_api.track(heartbeat)
|
|
||||||
|
|
||||||
def _send_download_started(self, name, stream_info=None):
|
|
||||||
event = self._events.download_started(name, stream_info)
|
|
||||||
self.analytics_api.track(event)
|
|
||||||
|
|
||||||
def _get_platform(self):
|
def _get_platform(self):
|
||||||
r = {
|
r = {
|
||||||
|
@ -662,10 +678,6 @@ class Daemon(jsonrpc.JSONRPC):
|
||||||
d = _log_platform()
|
d = _log_platform()
|
||||||
return d
|
return d
|
||||||
|
|
||||||
def _set_events(self):
|
|
||||||
context = analytics.make_context(self._get_platform(), self.wallet_type)
|
|
||||||
self._events = analytics.Events(context, base58.b58encode(self.lbryid), self._session_id)
|
|
||||||
|
|
||||||
def _check_lbrynet_connection(self):
|
def _check_lbrynet_connection(self):
|
||||||
def _log_success():
|
def _log_success():
|
||||||
log.info("lbrynet connectivity test passed")
|
log.info("lbrynet connectivity test passed")
|
||||||
|
@ -862,6 +874,7 @@ class Daemon(jsonrpc.JSONRPC):
|
||||||
log.info("Closing lbrynet session")
|
log.info("Closing lbrynet session")
|
||||||
log.info("Status at time of shutdown: " + self.startup_status[0])
|
log.info("Status at time of shutdown: " + self.startup_status[0])
|
||||||
self.looping_call_manager.shutdown()
|
self.looping_call_manager.shutdown()
|
||||||
|
self.analytics_manager.shutdown()
|
||||||
if self.lbry_ui_manager.update_checker.running:
|
if self.lbry_ui_manager.update_checker.running:
|
||||||
self.lbry_ui_manager.update_checker.stop()
|
self.lbry_ui_manager.update_checker.stop()
|
||||||
if self.pending_claim_checker.running:
|
if self.pending_claim_checker.running:
|
||||||
|
@ -1133,7 +1146,7 @@ class Daemon(jsonrpc.JSONRPC):
|
||||||
Add a lbry file to the file manager, start the download, and return the new lbry file.
|
Add a lbry file to the file manager, start the download, and return the new lbry file.
|
||||||
If it already exists in the file manager, return the existing lbry file
|
If it already exists in the file manager, return the existing lbry file
|
||||||
"""
|
"""
|
||||||
self._send_download_started(name)
|
self.analytics_manager.send_download_started(name, stream_info)
|
||||||
helper = _DownloadNameHelper(
|
helper = _DownloadNameHelper(
|
||||||
self, name, timeout, download_directory, file_name, wait_for_write)
|
self, name, timeout, download_directory, file_name, wait_for_write)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue