Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/api.rb')
-rw-r--r--lib/api/api.rb26
1 files changed, 25 insertions, 1 deletions
diff --git a/lib/api/api.rb b/lib/api/api.rb
index 7da5f21b21f..8ebd7f83acb 100644
--- a/lib/api/api.rb
+++ b/lib/api/api.rb
@@ -15,6 +15,18 @@ module API
LOG_FORMATTER = Gitlab::GrapeLogging::Formatters::LogrageWithTimestamp.new
LOGGER = Logger.new(LOG_FILENAME)
+ class MovedPermanentlyError < StandardError
+ MSG_PREFIX = 'This resource has been moved permanently to'
+
+ attr_reader :location_url
+
+ def initialize(location_url)
+ @location_url = location_url
+
+ super("#{MSG_PREFIX} #{location_url}")
+ end
+ end
+
insert_before Grape::Middleware::Error,
GrapeLogging::Middleware::RequestLogger,
logger: LOGGER,
@@ -95,6 +107,14 @@ module API
end
after do
+ Gitlab::UsageDataCounters::VisualStudioExtensionActivityUniqueCounter.track_api_request_when_trackable(user_agent: request&.user_agent, user: @current_user)
+ end
+
+ after do
+ Gitlab::UsageDataCounters::NeovimPluginActivityUniqueCounter.track_api_request_when_trackable(user_agent: request&.user_agent, user: @current_user)
+ end
+
+ after do
Gitlab::UsageDataCounters::GitLabCliActivityUniqueCounter.track_api_request_when_trackable(user_agent: request&.user_agent, user: @current_user)
end
@@ -134,6 +154,10 @@ module API
error! e.message, e.status, e.headers
end
+ rescue_from MovedPermanentlyError do |e|
+ rack_response(e.message, 301, { 'Location' => e.location_url })
+ end
+
rescue_from Gitlab::Auth::TooManyIps do |e|
rack_response({ 'message' => '403 Forbidden' }.to_json, 403)
end
@@ -180,6 +204,7 @@ module API
# Keep in alphabetical order
mount ::API::AccessRequests
mount ::API::Admin::BatchedBackgroundMigrations
+ mount ::API::Admin::BroadcastMessages
mount ::API::Admin::Ci::Variables
mount ::API::Admin::Dictionary
mount ::API::Admin::InstanceClusters
@@ -191,7 +216,6 @@ module API
mount ::API::Avatar
mount ::API::Badges
mount ::API::Branches
- mount ::API::BroadcastMessages
mount ::API::BulkImports
mount ::API::Ci::JobArtifacts
mount ::API::Groups