Use discovered 'rootUrl' as base URI for services
This commit is contained in:
		
							parent
							
								
									ae8a15ce76
								
							
						
					
					
						commit
						1ed677b796
					
				| 
						 | 
				
			
			@ -30,7 +30,7 @@ module Google
 | 
			
		|||
      # Creates a description of a particular version of a service.
 | 
			
		||||
      #
 | 
			
		||||
      # @param [String] document_base
 | 
			
		||||
      #   Base URI for the service
 | 
			
		||||
      #   Base URI for the discovery document.
 | 
			
		||||
      # @param [Hash] discovery_document
 | 
			
		||||
      #   The section of the discovery document that applies to this service
 | 
			
		||||
      #   version.
 | 
			
		||||
| 
						 | 
				
			
			@ -126,6 +126,16 @@ module Google
 | 
			
		|||
        return @discovery_document['features'] || []
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      ##
 | 
			
		||||
      # Returns the root URI for this service.
 | 
			
		||||
      #
 | 
			
		||||
      # @return [Addressable::URI] The root URI.
 | 
			
		||||
      def root_uri
 | 
			
		||||
        return @root_uri ||= (
 | 
			
		||||
          Addressable::URI.parse(self.discovery_document['rootUrl'])
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      ##
 | 
			
		||||
      # Returns true if this API uses a data wrapper.
 | 
			
		||||
      #
 | 
			
		||||
| 
						 | 
				
			
			@ -148,7 +158,7 @@ module Google
 | 
			
		|||
      def method_base
 | 
			
		||||
        if @discovery_document['basePath']
 | 
			
		||||
          return @method_base ||= (
 | 
			
		||||
            self.document_base.join(Addressable::URI.parse(@discovery_document['basePath']))
 | 
			
		||||
            self.root_uri.join(Addressable::URI.parse(@discovery_document['basePath']))
 | 
			
		||||
          ).normalize
 | 
			
		||||
        else
 | 
			
		||||
          return nil
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -473,6 +473,10 @@ RSpec.describe Google::APIClient do
 | 
			
		|||
        ).to_env(CLIENT.connection)
 | 
			
		||||
      end).to raise_error(ArgumentError)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it 'should correctly determine the service root_uri' do
 | 
			
		||||
      expect(@plus.root_uri.to_s).to eq('https://www.googleapis.com/')
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'with the adsense API' do
 | 
			
		||||
| 
						 | 
				
			
			@ -659,4 +663,30 @@ RSpec.describe Google::APIClient do
 | 
			
		|||
      expect(@drive.files.insert.media_upload.max_size).not_to eq(nil)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'with the Pub/Sub API' do
 | 
			
		||||
    before do
 | 
			
		||||
      CLIENT.authorization = nil
 | 
			
		||||
      @pubsub = CLIENT.discovered_api('pubsub', 'v1beta2')
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it 'should generate requests against the correct URIs' do
 | 
			
		||||
      conn = stub_connection do |stub|
 | 
			
		||||
        stub.get('/v1beta2/projects/12345/topics') do |env|
 | 
			
		||||
          expect(env[:url].host).to eq('pubsub.googleapis.com')
 | 
			
		||||
          [200, {}, '{}']
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
      request = CLIENT.execute(
 | 
			
		||||
        :api_method => @pubsub.projects.topics.list,
 | 
			
		||||
        :parameters => {'project' => 'projects/12345'},
 | 
			
		||||
        :connection => conn
 | 
			
		||||
      )
 | 
			
		||||
      conn.verify
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it 'should correctly determine the service root_uri' do
 | 
			
		||||
      expect(@pubsub.root_uri.to_s).to eq('https://pubsub.googleapis.com/')
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue