summaryrefslogtreecommitdiff
path: root/lib/product_analytics/tracker.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/product_analytics/tracker.rb')
-rw-r--r--lib/product_analytics/tracker.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/product_analytics/tracker.rb b/lib/product_analytics/tracker.rb
index d4a88b879f0..2dc5e1f53ce 100644
--- a/lib/product_analytics/tracker.rb
+++ b/lib/product_analytics/tracker.rb
@@ -7,5 +7,36 @@ module ProductAnalytics
# The collector URL minus protocol and /i
COLLECTOR_URL = Gitlab.config.gitlab.url.sub(/\Ahttps?\:\/\//, '') + '/-/collector'
+
+ class << self
+ include Gitlab::Utils::StrongMemoize
+
+ def event(category, action, label: nil, property: nil, value: nil, context: nil)
+ return unless enabled?
+
+ snowplow.track_struct_event(category, action, label, property, value, context, (Time.now.to_f * 1000).to_i)
+ end
+
+ private
+
+ def enabled?
+ Gitlab::CurrentSettings.usage_ping_enabled?
+ end
+
+ def project_id
+ Gitlab::CurrentSettings.self_monitoring_project_id
+ end
+
+ def snowplow
+ strong_memoize(:snowplow) do
+ SnowplowTracker::Tracker.new(
+ SnowplowTracker::AsyncEmitter.new(COLLECTOR_URL, protocol: Gitlab.config.gitlab.protocol),
+ SnowplowTracker::Subject.new,
+ Gitlab::Tracking::SNOWPLOW_NAMESPACE,
+ project_id.to_s
+ )
+ end
+ end
+ end
end
end