forked from loafle/openapi-generator-original
		
	[Ruby] Allow general purpose faraday connection configuration (#14423)
* allow general purpose faraday connection configuration * add spec for Configuration#configure_faraday_connection * run generators * limit changes to ruby client generated using faraday library
This commit is contained in:
		
							parent
							
								
									f6be077efb
								
							
						
					
					
						commit
						a94ad37738
					
				@ -81,6 +81,10 @@ require '{{{gemName}}}'
 | 
				
			|||||||
  config.access_token = 'YOUR ACCESS TOKEN'
 | 
					  config.access_token = 'YOUR ACCESS TOKEN'
 | 
				
			||||||
  # Configure a proc to get access tokens in lieu of the static access_token configuration
 | 
					  # Configure a proc to get access tokens in lieu of the static access_token configuration
 | 
				
			||||||
  config.access_token_getter = -> { 'YOUR TOKEN GETTER PROC' } {{/isOAuth}}
 | 
					  config.access_token_getter = -> { 'YOUR TOKEN GETTER PROC' } {{/isOAuth}}
 | 
				
			||||||
 | 
					  {{#isFaraday}}
 | 
				
			||||||
 | 
					  # Configure faraday connection
 | 
				
			||||||
 | 
					  config.configure_faraday_connection { |connection| 'YOUR CONNECTION CONFIG PROC' }
 | 
				
			||||||
 | 
					  {{/isFaraday}}
 | 
				
			||||||
{{/authMethods}}end
 | 
					{{/authMethods}}end
 | 
				
			||||||
{{/hasAuthMethods}}
 | 
					{{/hasAuthMethods}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -138,6 +138,7 @@
 | 
				
			|||||||
        config.configure_middleware(conn)
 | 
					        config.configure_middleware(conn)
 | 
				
			||||||
        yield(conn) if block_given?
 | 
					        yield(conn) if block_given?
 | 
				
			||||||
        conn.adapter(Faraday.default_adapter)
 | 
					        conn.adapter(Faraday.default_adapter)
 | 
				
			||||||
 | 
					        config.configure_connection(conn)
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -117,6 +117,7 @@ module {{moduleName}}
 | 
				
			|||||||
      @ssl_client_cert = nil
 | 
					      @ssl_client_cert = nil
 | 
				
			||||||
      @ssl_client_key = nil
 | 
					      @ssl_client_key = nil
 | 
				
			||||||
      @middlewares = Hash.new { |h, k| h[k] = [] }
 | 
					      @middlewares = Hash.new { |h, k| h[k] = [] }
 | 
				
			||||||
 | 
					      @configure_connection_blocks = []
 | 
				
			||||||
      @timeout = 60
 | 
					      @timeout = 60
 | 
				
			||||||
      # return data as binary instead of file
 | 
					      # return data as binary instead of file
 | 
				
			||||||
      @return_binary_data = false
 | 
					      @return_binary_data = false
 | 
				
			||||||
@ -357,6 +358,32 @@ module {{moduleName}}
 | 
				
			|||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    {{#isFaraday}}
 | 
					    {{#isFaraday}}
 | 
				
			||||||
 | 
					    # Configure Faraday connection directly.
 | 
				
			||||||
 | 
					    #
 | 
				
			||||||
 | 
					    # ```
 | 
				
			||||||
 | 
					    # c.configure_faraday_connection do |conn|
 | 
				
			||||||
 | 
					    #   conn.use Faraday::HttpCache, shared_cache: false, logger: logger
 | 
				
			||||||
 | 
					    #   conn.response :logger, nil, headers: true, bodies: true, log_level: :debug do |logger|
 | 
				
			||||||
 | 
					    #     logger.filter(/(Authorization: )(.*)/, '\1[REDACTED]')
 | 
				
			||||||
 | 
					    #   end
 | 
				
			||||||
 | 
					    # end
 | 
				
			||||||
 | 
					    #
 | 
				
			||||||
 | 
					    # c.configure_faraday_connection do |conn|
 | 
				
			||||||
 | 
					    #   conn.adapter :typhoeus
 | 
				
			||||||
 | 
					    # end
 | 
				
			||||||
 | 
					    # ```
 | 
				
			||||||
 | 
					    #
 | 
				
			||||||
 | 
					    # @param block [Proc] `#call`able object that takes one arg, the connection
 | 
				
			||||||
 | 
					    def configure_faraday_connection(&block)
 | 
				
			||||||
 | 
					      @configure_connection_blocks << block
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def configure_connection(conn)
 | 
				
			||||||
 | 
					      @configure_connection_blocks.each do |block|
 | 
				
			||||||
 | 
					        block.call(conn)
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Adds middleware to the stack
 | 
					    # Adds middleware to the stack
 | 
				
			||||||
    def use(*middleware)
 | 
					    def use(*middleware)
 | 
				
			||||||
      set_faraday_middleware(:use, *middleware)
 | 
					      set_faraday_middleware(:use, *middleware)
 | 
				
			||||||
 | 
				
			|||||||
@ -31,4 +31,46 @@ describe {{moduleName}}::Configuration do
 | 
				
			|||||||
      end
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					{{#isFaraday}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe '#configure_faraday_connection' do
 | 
				
			||||||
 | 
					    let(:faraday_connection) { Faraday::Connection.new }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    before do
 | 
				
			||||||
 | 
					      stub_const('CustomAdapter', Class.new(Faraday::Adapter))
 | 
				
			||||||
 | 
					      stub_const('AnotherCustomAdapter', Class.new(Faraday::Adapter))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      config.configure_faraday_connection do |conn|
 | 
				
			||||||
 | 
					        conn.adapter CustomAdapter
 | 
				
			||||||
 | 
					        conn.response :logger, nil, headers: true, bodies: true, log_level: :debug do |logger|
 | 
				
			||||||
 | 
					          logger.filter(/(Authorization: )(.*)/, '\1[REDACTED]')
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it 'adds a block that will be used to configure the connection' do
 | 
				
			||||||
 | 
					      expect(faraday_connection.adapter).to eq(Faraday::Adapter::NetHttp)
 | 
				
			||||||
 | 
					      expect(faraday_connection.builder.handlers).to_not include(Faraday::Response::Logger)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      config.configure_connection(faraday_connection)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      expect(faraday_connection.adapter).to eq(CustomAdapter)
 | 
				
			||||||
 | 
					      expect(faraday_connection.builder.handlers).to include(Faraday::Response::Logger)
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it 'supports multiple configuration blocks' do
 | 
				
			||||||
 | 
					      config.configure_faraday_connection do |conn|
 | 
				
			||||||
 | 
					        conn.adapter AnotherCustomAdapter
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      expect(faraday_connection.adapter).to eq(Faraday::Adapter::NetHttp)
 | 
				
			||||||
 | 
					      expect(faraday_connection.builder.handlers).to_not include(Faraday::Response::Logger)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      config.configure_connection(faraday_connection)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      expect(faraday_connection.adapter).to eq(AnotherCustomAdapter)
 | 
				
			||||||
 | 
					      expect(faraday_connection.builder.handlers).to include(Faraday::Response::Logger)
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					{{/isFaraday}}
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
@ -183,6 +183,7 @@ module Petstore
 | 
				
			|||||||
        config.configure_middleware(conn)
 | 
					        config.configure_middleware(conn)
 | 
				
			||||||
        yield(conn) if block_given?
 | 
					        yield(conn) if block_given?
 | 
				
			||||||
        conn.adapter(Faraday.default_adapter)
 | 
					        conn.adapter(Faraday.default_adapter)
 | 
				
			||||||
 | 
					        config.configure_connection(conn)
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -159,6 +159,7 @@ module Petstore
 | 
				
			|||||||
      @ssl_client_cert = nil
 | 
					      @ssl_client_cert = nil
 | 
				
			||||||
      @ssl_client_key = nil
 | 
					      @ssl_client_key = nil
 | 
				
			||||||
      @middlewares = Hash.new { |h, k| h[k] = [] }
 | 
					      @middlewares = Hash.new { |h, k| h[k] = [] }
 | 
				
			||||||
 | 
					      @configure_connection_blocks = []
 | 
				
			||||||
      @timeout = 60
 | 
					      @timeout = 60
 | 
				
			||||||
      # return data as binary instead of file
 | 
					      # return data as binary instead of file
 | 
				
			||||||
      @return_binary_data = false
 | 
					      @return_binary_data = false
 | 
				
			||||||
@ -421,6 +422,32 @@ module Petstore
 | 
				
			|||||||
      url
 | 
					      url
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Configure Faraday connection directly.
 | 
				
			||||||
 | 
					    #
 | 
				
			||||||
 | 
					    # ```
 | 
				
			||||||
 | 
					    # c.configure_faraday_connection do |conn|
 | 
				
			||||||
 | 
					    #   conn.use Faraday::HttpCache, shared_cache: false, logger: logger
 | 
				
			||||||
 | 
					    #   conn.response :logger, nil, headers: true, bodies: true, log_level: :debug do |logger|
 | 
				
			||||||
 | 
					    #     logger.filter(/(Authorization: )(.*)/, '\1[REDACTED]')
 | 
				
			||||||
 | 
					    #   end
 | 
				
			||||||
 | 
					    # end
 | 
				
			||||||
 | 
					    #
 | 
				
			||||||
 | 
					    # c.configure_faraday_connection do |conn|
 | 
				
			||||||
 | 
					    #   conn.adapter :typhoeus
 | 
				
			||||||
 | 
					    # end
 | 
				
			||||||
 | 
					    # ```
 | 
				
			||||||
 | 
					    #
 | 
				
			||||||
 | 
					    # @param block [Proc] `#call`able object that takes one arg, the connection
 | 
				
			||||||
 | 
					    def configure_faraday_connection(&block)
 | 
				
			||||||
 | 
					      @configure_connection_blocks << block
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def configure_connection(conn)
 | 
				
			||||||
 | 
					      @configure_connection_blocks.each do |block|
 | 
				
			||||||
 | 
					        block.call(conn)
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Adds middleware to the stack
 | 
					    # Adds middleware to the stack
 | 
				
			||||||
    def use(*middleware)
 | 
					    def use(*middleware)
 | 
				
			||||||
      set_faraday_middleware(:use, *middleware)
 | 
					      set_faraday_middleware(:use, *middleware)
 | 
				
			||||||
 | 
				
			|||||||
@ -39,4 +39,44 @@ describe Petstore::Configuration do
 | 
				
			|||||||
      end
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe '#configure_faraday_connection' do
 | 
				
			||||||
 | 
					    let(:faraday_connection) { Faraday::Connection.new }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    before do
 | 
				
			||||||
 | 
					      stub_const('CustomAdapter', Class.new(Faraday::Adapter))
 | 
				
			||||||
 | 
					      stub_const('AnotherCustomAdapter', Class.new(Faraday::Adapter))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      config.configure_faraday_connection do |conn|
 | 
				
			||||||
 | 
					        conn.adapter CustomAdapter
 | 
				
			||||||
 | 
					        conn.response :logger, nil, headers: true, bodies: true, log_level: :debug do |logger|
 | 
				
			||||||
 | 
					          logger.filter(/(Authorization: )(.*)/, '\1[REDACTED]')
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it 'adds a block that will be used to configure the connection' do
 | 
				
			||||||
 | 
					      expect(faraday_connection.adapter).to eq(Faraday::Adapter::NetHttp)
 | 
				
			||||||
 | 
					      expect(faraday_connection.builder.handlers).to_not include(Faraday::Response::Logger)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      config.configure_connection(faraday_connection)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      expect(faraday_connection.adapter).to eq(CustomAdapter)
 | 
				
			||||||
 | 
					      expect(faraday_connection.builder.handlers).to include(Faraday::Response::Logger)
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it 'supports multiple configuration blocks' do
 | 
				
			||||||
 | 
					      config.configure_faraday_connection do |conn|
 | 
				
			||||||
 | 
					        conn.adapter AnotherCustomAdapter
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      expect(faraday_connection.adapter).to eq(Faraday::Adapter::NetHttp)
 | 
				
			||||||
 | 
					      expect(faraday_connection.builder.handlers).to_not include(Faraday::Response::Logger)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      config.configure_connection(faraday_connection)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      expect(faraday_connection.adapter).to eq(AnotherCustomAdapter)
 | 
				
			||||||
 | 
					      expect(faraday_connection.builder.handlers).to include(Faraday::Response::Logger)
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user