summaryrefslogtreecommitdiff
path: root/lib/api/feature_flag_scopes.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/feature_flag_scopes.rb')
-rw-r--r--lib/api/feature_flag_scopes.rb160
1 files changed, 0 insertions, 160 deletions
diff --git a/lib/api/feature_flag_scopes.rb b/lib/api/feature_flag_scopes.rb
deleted file mode 100644
index 3f3bf4d9f42..00000000000
--- a/lib/api/feature_flag_scopes.rb
+++ /dev/null
@@ -1,160 +0,0 @@
-# frozen_string_literal: true
-
-module API
- class FeatureFlagScopes < ::API::Base
- include PaginationParams
-
- ENVIRONMENT_SCOPE_ENDPOINT_REQUIREMENTS = FeatureFlags::FEATURE_FLAG_ENDPOINT_REQUIREMENTS
- .merge(environment_scope: API::NO_SLASH_URL_PART_REGEX)
-
- feature_category :feature_flags
-
- before do
- authorize_read_feature_flags!
- end
-
- params do
- requires :id, type: String, desc: 'The ID of a project'
- end
- resource 'projects/:id', requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do
- resource :feature_flag_scopes do
- desc 'Get all effective feature flags under the environment' do
- detail 'This feature was introduced in GitLab 12.5'
- success ::API::Entities::FeatureFlag::DetailedLegacyScope
- end
- params do
- requires :environment, type: String, desc: 'The environment name'
- end
- get do
- present scopes_for_environment, with: ::API::Entities::FeatureFlag::DetailedLegacyScope
- end
- end
-
- params do
- requires :name, type: String, desc: 'The name of the feature flag'
- end
- resource 'feature_flags/:name', requirements: FeatureFlags::FEATURE_FLAG_ENDPOINT_REQUIREMENTS do
- resource :scopes do
- desc 'Get all scopes of a feature flag' do
- detail 'This feature was introduced in GitLab 12.5'
- success ::API::Entities::FeatureFlag::LegacyScope
- end
- params do
- use :pagination
- end
- get do
- present paginate(feature_flag.scopes), with: ::API::Entities::FeatureFlag::LegacyScope
- end
-
- desc 'Create a scope of a feature flag' do
- detail 'This feature was introduced in GitLab 12.5'
- success ::API::Entities::FeatureFlag::LegacyScope
- end
- params do
- requires :environment_scope, type: String, desc: 'The environment scope of the scope'
- requires :active, type: Boolean, desc: 'Whether the scope is active'
- requires :strategies, type: JSON, desc: 'The strategies of the scope'
- end
- post do
- authorize_update_feature_flag!
-
- result = ::FeatureFlags::UpdateService
- .new(user_project, current_user, scopes_attributes: [declared_params])
- .execute(feature_flag)
-
- if result[:status] == :success
- present scope, with: ::API::Entities::FeatureFlag::LegacyScope
- else
- render_api_error!(result[:message], result[:http_status])
- end
- end
-
- params do
- requires :environment_scope, type: String, desc: 'URL-encoded environment scope'
- end
- resource ':environment_scope', requirements: ENVIRONMENT_SCOPE_ENDPOINT_REQUIREMENTS do
- desc 'Get a scope of a feature flag' do
- detail 'This feature was introduced in GitLab 12.5'
- success ::API::Entities::FeatureFlag::LegacyScope
- end
- get do
- present scope, with: ::API::Entities::FeatureFlag::LegacyScope
- end
-
- desc 'Update a scope of a feature flag' do
- detail 'This feature was introduced in GitLab 12.5'
- success ::API::Entities::FeatureFlag::LegacyScope
- end
- params do
- optional :active, type: Boolean, desc: 'Whether the scope is active'
- optional :strategies, type: JSON, desc: 'The strategies of the scope'
- end
- put do
- authorize_update_feature_flag!
-
- scope_attributes = declared_params.merge(id: scope.id)
-
- result = ::FeatureFlags::UpdateService
- .new(user_project, current_user, scopes_attributes: [scope_attributes])
- .execute(feature_flag)
-
- if result[:status] == :success
- updated_scope = result[:feature_flag].scopes
- .find { |scope| scope.environment_scope == params[:environment_scope] }
-
- present updated_scope, with: ::API::Entities::FeatureFlag::LegacyScope
- else
- render_api_error!(result[:message], result[:http_status])
- end
- end
-
- desc 'Delete a scope from a feature flag' do
- detail 'This feature was introduced in GitLab 12.5'
- success ::API::Entities::FeatureFlag::LegacyScope
- end
- delete do
- authorize_update_feature_flag!
-
- param = { scopes_attributes: [{ id: scope.id, _destroy: true }] }
-
- result = ::FeatureFlags::UpdateService
- .new(user_project, current_user, param)
- .execute(feature_flag)
-
- if result[:status] == :success
- status :no_content
- else
- render_api_error!(result[:message], result[:http_status])
- end
- end
- end
- end
- end
- end
-
- helpers do
- def authorize_read_feature_flags!
- authorize! :read_feature_flag, user_project
- end
-
- def authorize_update_feature_flag!
- authorize! :update_feature_flag, feature_flag
- end
-
- def feature_flag
- @feature_flag ||= user_project.operations_feature_flags
- .find_by_name!(params[:name])
- end
-
- def scope
- @scope ||= feature_flag.scopes
- .find_by_environment_scope!(CGI.unescape(params[:environment_scope]))
- end
-
- def scopes_for_environment
- Operations::FeatureFlagScope
- .for_unleash_client(user_project, params[:environment])
- end
- end
- end
-end