2020-09-30 08:09:53 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Packages
|
|
|
|
class CreateEventService < BaseService
|
|
|
|
def execute
|
2020-11-17 07:09:15 -05:00
|
|
|
if Feature.enabled?(:collect_package_events_redis) && redis_event_name
|
2020-12-08 04:09:41 -05:00
|
|
|
if guest?
|
|
|
|
::Gitlab::UsageDataCounters::GuestPackageEventCounter.count(redis_event_name)
|
|
|
|
else
|
2020-12-01 13:09:42 -05:00
|
|
|
::Gitlab::UsageDataCounters::HLLRedisCounter.track_event(current_user.id, redis_event_name)
|
|
|
|
end
|
2020-11-17 07:09:15 -05:00
|
|
|
end
|
2020-09-30 08:09:53 -04:00
|
|
|
|
2020-11-20 16:09:12 -05:00
|
|
|
if Feature.enabled?(:collect_package_events) && Gitlab::Database.read_write?
|
2020-11-17 07:09:15 -05:00
|
|
|
::Packages::Event.create!(
|
|
|
|
event_type: event_name,
|
|
|
|
originator: current_user&.id,
|
|
|
|
originator_type: originator_type,
|
|
|
|
event_scope: event_scope
|
|
|
|
)
|
|
|
|
end
|
2020-09-30 08:09:53 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
2020-11-17 07:09:15 -05:00
|
|
|
def redis_event_name
|
|
|
|
@redis_event_name ||= ::Packages::Event.allowed_event_name(event_scope, event_name, originator_type)
|
|
|
|
end
|
|
|
|
|
|
|
|
def event_scope
|
|
|
|
@event_scope ||= scope.is_a?(::Packages::Package) ? scope.package_type : scope
|
|
|
|
end
|
|
|
|
|
2020-09-30 08:09:53 -04:00
|
|
|
def scope
|
|
|
|
params[:scope]
|
|
|
|
end
|
|
|
|
|
|
|
|
def event_name
|
|
|
|
params[:event_name]
|
|
|
|
end
|
|
|
|
|
|
|
|
def originator_type
|
|
|
|
case current_user
|
|
|
|
when User
|
|
|
|
:user
|
|
|
|
when DeployToken
|
|
|
|
:deploy_token
|
|
|
|
else
|
|
|
|
:guest
|
|
|
|
end
|
|
|
|
end
|
2020-12-01 13:09:42 -05:00
|
|
|
|
|
|
|
def guest?
|
|
|
|
originator_type == :guest
|
|
|
|
end
|
2020-09-30 08:09:53 -04:00
|
|
|
end
|
|
|
|
end
|