32 lines
879 B
Ruby
32 lines
879 B
Ruby
# frozen_string_literal: true
|
|
|
|
module API
|
|
module Entities
|
|
class UnleashFeature < Grape::Entity
|
|
expose :name
|
|
expose :description, unless: ->(feature) { feature.description.nil? }
|
|
expose :active, as: :enabled
|
|
expose :strategies do |flag|
|
|
flag.strategies.map do |strategy|
|
|
if legacy_strategy?(strategy)
|
|
UnleashLegacyStrategy.represent(strategy)
|
|
elsif gitlab_user_list_strategy?(strategy)
|
|
UnleashGitlabUserListStrategy.represent(strategy)
|
|
else
|
|
UnleashStrategy.represent(strategy)
|
|
end
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def legacy_strategy?(strategy)
|
|
!strategy.respond_to?(:name)
|
|
end
|
|
|
|
def gitlab_user_list_strategy?(strategy)
|
|
strategy.name == ::Operations::FeatureFlags::Strategy::STRATEGY_GITLABUSERLIST
|
|
end
|
|
end
|
|
end
|
|
end
|