38 lines
		
	
	
		
			856 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			856 B
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
module API
 | 
						|
  class Geo < ::API::Base
 | 
						|
    feature_category :geo_replication
 | 
						|
    urgency :low
 | 
						|
 | 
						|
    helpers do
 | 
						|
      # Overridden in EE
 | 
						|
      def geo_proxy_response
 | 
						|
        { geo_enabled: false }
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    resource :geo do
 | 
						|
      desc 'Returns a Geo proxy response' do
 | 
						|
        summary "Determine if a Geo site should proxy requests"
 | 
						|
        success code: 200
 | 
						|
        failure [{ code: 403, message: 'Forbidden' }]
 | 
						|
        tags %w[geo]
 | 
						|
      end
 | 
						|
 | 
						|
      # Workhorse calls this to determine if it is a Geo site that should proxy
 | 
						|
      # requests. Workhorse doesn't know if it's in a FOSS/EE context.
 | 
						|
      get '/proxy' do
 | 
						|
        require_gitlab_workhorse!
 | 
						|
 | 
						|
        status :ok
 | 
						|
        content_type Gitlab::Workhorse::INTERNAL_API_CONTENT_TYPE
 | 
						|
 | 
						|
        geo_proxy_response
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
API::Geo.prepend_mod
 |