diff options
Diffstat (limited to 'lib/api/entities')
-rw-r--r-- | lib/api/entities/feature.rb | 22 | ||||
-rw-r--r-- | lib/api/entities/feature_gate.rb | 10 | ||||
-rw-r--r-- | lib/api/entities/impersonation_token.rb | 9 | ||||
-rw-r--r-- | lib/api/entities/impersonation_token_with_token.rb | 9 |
4 files changed, 50 insertions, 0 deletions
diff --git a/lib/api/entities/feature.rb b/lib/api/entities/feature.rb new file mode 100644 index 00000000000..3c9182340ea --- /dev/null +++ b/lib/api/entities/feature.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module API + module Entities + class Feature < Grape::Entity + expose :name + expose :state + expose :gates, using: Entities::FeatureGate do |model| + model.gates.map do |gate| + value = model.gate_values[gate.key] + + # By default all gate values are populated. Only show relevant ones. + if (value.is_a?(Integer) && value.zero?) || (value.is_a?(Set) && value.empty?) + next + end + + { key: gate.key, value: value } + end.compact + end + end + end +end diff --git a/lib/api/entities/feature_gate.rb b/lib/api/entities/feature_gate.rb new file mode 100644 index 00000000000..bea9c9474b3 --- /dev/null +++ b/lib/api/entities/feature_gate.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +module API + module Entities + class FeatureGate < Grape::Entity + expose :key + expose :value + end + end +end diff --git a/lib/api/entities/impersonation_token.rb b/lib/api/entities/impersonation_token.rb new file mode 100644 index 00000000000..9ee8f8bf77b --- /dev/null +++ b/lib/api/entities/impersonation_token.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module API + module Entities + class ImpersonationToken < Entities::PersonalAccessToken + expose :impersonation + end + end +end diff --git a/lib/api/entities/impersonation_token_with_token.rb b/lib/api/entities/impersonation_token_with_token.rb new file mode 100644 index 00000000000..4904f107628 --- /dev/null +++ b/lib/api/entities/impersonation_token_with_token.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module API + module Entities + class ImpersonationTokenWithToken < Entities::PersonalAccessTokenWithToken + expose :impersonation + end + end +end |