From 800291f9d0347d5414a63bd93b45a8042e72a734 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Andreassa?= Date: Tue, 5 May 2026 18:59:49 -0700 Subject: [PATCH] feat(rest): add faraday_config option to client configuration Exposes the internal Faraday::Connection customization hook to the public client layer. This enables advanced HTTP setup, such as mTLS client certificate configuration. Instead of forwarding blocks through the client constructors (which collides with the existing configuration blocks), we introduced a config.faraday_config attribute. This approach isolates transport specific details, allows clean automated propagation to internal subclients (LROs and mixins), and uses a standard respond_to? check to preserve perfect backward compatibility with legacy external gems. Example Usage ```ruby client = Google::Cloud::Language::V1::LanguageService::Rest::Client.new do |config| config.faraday_config = ->(conn) do conn.ssl.client_cert = OpenSSL::X509::Certificate.new cert_pem conn.ssl.client_key = OpenSSL::PKey::RSA.new key_pem end end ``` --- gapic-generator-cloud/Gemfile | 1 + gapic-generator-cloud/Gemfile.lock | 2 ++ gapic-generator/Gemfile | 1 + gapic-generator/Gemfile.lock | 2 ++ .../service/rest/client/_client.text.erb | 5 +++- .../service/rest/client/_config.text.erb | 4 +++ .../service/rest/client/_operations.text.erb | 16 +++++++----- .../rest/service_stub/_service_stub.text.erb | 21 +++++++++------- .../rest/test/method/_configure.text.erb | 25 +++++++++++++++++++ .../cloud/compute/v1/addresses/rest/client.rb | 8 +++++- .../compute/v1/addresses/rest/service_stub.rb | 21 +++++++++------- .../v1/global_operations/rest/client.rb | 7 +++++- .../v1/global_operations/rest/service_stub.rb | 21 +++++++++------- .../cloud/compute/v1/networks/rest/client.rb | 8 +++++- .../compute/v1/networks/rest/service_stub.rb | 21 +++++++++------- .../rest/client.rb | 8 +++++- .../rest/service_stub.rb | 21 +++++++++------- .../v1/region_operations/rest/client.rb | 7 +++++- .../v1/region_operations/rest/service_stub.rb | 21 +++++++++------- .../cloud/compute/v1/addresses_rest_test.rb | 24 ++++++++++++++++++ .../compute/v1/global_operations_rest_test.rb | 24 ++++++++++++++++++ .../cloud/compute/v1/networks_rest_test.rb | 24 ++++++++++++++++++ ...egion_instance_group_managers_rest_test.rb | 24 ++++++++++++++++++ .../compute/v1/region_operations_rest_test.rb | 24 ++++++++++++++++++ .../v1/language_service/rest/client.rb | 7 +++++- .../v1/language_service/rest/service_stub.rb | 21 +++++++++------- .../language/v1/language_service_rest_test.rb | 24 ++++++++++++++++++ .../cloud/location/locations/rest/client.rb | 7 +++++- .../location/locations/rest/service_stub.rb | 21 +++++++++------- .../cloud/location/locations_rest_test.rb | 24 ++++++++++++++++++ .../vision/v1/image_annotator/rest/client.rb | 9 ++++++- .../v1/image_annotator/rest/operations.rb | 20 ++++++++++----- .../v1/image_annotator/rest/service_stub.rb | 21 +++++++++------- .../vision/v1/product_search/rest/client.rb | 9 ++++++- .../v1/product_search/rest/operations.rb | 20 ++++++++++----- .../v1/product_search/rest/service_stub.rb | 21 +++++++++------- .../vision/v1/image_annotator_rest_test.rb | 24 ++++++++++++++++++ .../vision/v1/product_search_rest_test.rb | 24 ++++++++++++++++++ .../v1beta1/compliance/rest/client.rb | 9 ++++++- .../v1beta1/compliance/rest/service_stub.rb | 21 +++++++++------- .../showcase/v1beta1/echo/rest/client.rb | 10 +++++++- .../showcase/v1beta1/echo/rest/operations.rb | 20 ++++++++++----- .../v1beta1/echo/rest/service_stub.rb | 21 +++++++++------- .../showcase/v1beta1/identity/rest/client.rb | 9 ++++++- .../v1beta1/identity/rest/service_stub.rb | 21 +++++++++------- .../showcase/v1beta1/messaging/rest/client.rb | 10 +++++++- .../v1beta1/messaging/rest/operations.rb | 20 ++++++++++----- .../v1beta1/messaging/rest/service_stub.rb | 21 +++++++++------- .../v1beta1/sequence_service/rest/client.rb | 9 ++++++- .../sequence_service/rest/service_stub.rb | 21 +++++++++------- .../showcase/v1beta1/testing/rest/client.rb | 9 ++++++- .../v1beta1/testing/rest/service_stub.rb | 21 +++++++++------- .../showcase/v1beta1/compliance_rest_test.rb | 24 ++++++++++++++++++ .../google/showcase/v1beta1/echo_rest_test.rb | 24 ++++++++++++++++++ .../showcase/v1beta1/identity_rest_test.rb | 24 ++++++++++++++++++ .../showcase/v1beta1/messaging_rest_test.rb | 24 ++++++++++++++++++ .../v1beta1/sequence_service_rest_test.rb | 24 ++++++++++++++++++ .../showcase/v1beta1/testing_rest_test.rb | 24 ++++++++++++++++++ .../service_no_retry/rest/client.rb | 8 +++++- .../service_no_retry/rest/service_stub.rb | 21 +++++++++------- .../service_with_retries/rest/client.rb | 8 +++++- .../service_with_retries/rest/service_stub.rb | 21 +++++++++------- .../mixins/service_with_loc/rest/client.rb | 8 +++++- .../service_with_loc/rest/service_stub.rb | 21 +++++++++------- .../rest/client.rb | 8 +++++- .../rest/service_stub.rb | 21 +++++++++------- .../all_subclients_consumer/rest/client.rb | 11 +++++++- .../rest/operations.rb | 20 ++++++++++----- .../rest/service_stub.rb | 21 +++++++++------- .../another_lro_provider/rest/client.rb | 8 +++++- .../another_lro_provider/rest/service_stub.rb | 21 +++++++++------- .../plain_lro_consumer/rest/client.rb | 9 ++++++- .../plain_lro_consumer/rest/service_stub.rb | 21 +++++++++------- .../plain_lro_provider/rest/client.rb | 8 +++++- .../plain_lro_provider/rest/service_stub.rb | 21 +++++++++------- .../service_explicit_headers/rest/client.rb | 8 +++++- .../rest/service_stub.rb | 21 +++++++++------- .../service_implicit_headers/rest/client.rb | 8 +++++- .../rest/service_stub.rb | 21 +++++++++------- .../service_no_retry_rest_test.rb | 24 ++++++++++++++++++ .../service_with_retries_rest_test.rb | 24 ++++++++++++++++++ ...ice_with_loc_and_non_rest_ops_rest_test.rb | 24 ++++++++++++++++++ .../mixins/service_with_loc_rest_test.rb | 24 ++++++++++++++++++ .../all_subclients_consumer_rest_test.rb | 24 ++++++++++++++++++ .../another_lro_provider_rest_test.rb | 24 ++++++++++++++++++ .../plain_lro_consumer_rest_test.rb | 24 ++++++++++++++++++ .../plain_lro_provider_rest_test.rb | 24 ++++++++++++++++++ .../service_explicit_headers_rest_test.rb | 24 ++++++++++++++++++ .../service_implicit_headers_rest_test.rb | 24 ++++++++++++++++++ 89 files changed, 1216 insertions(+), 296 deletions(-) diff --git a/gapic-generator-cloud/Gemfile b/gapic-generator-cloud/Gemfile index 98e06a5e0..c3079c120 100644 --- a/gapic-generator-cloud/Gemfile +++ b/gapic-generator-cloud/Gemfile @@ -13,6 +13,7 @@ gem "grpc-tools", ">= 1.60.0", "< 1.75.1" gem "minitest", "~> 5.16" gem "minitest-autotest", "~> 1.0" gem "minitest-focus", "~> 1.0" +gem "ostruct", "~> 0.6.3" gem "pry", ">= 0.14" gem "redcarpet", "~> 3.0" gem "yard", "~> 0.9" diff --git a/gapic-generator-cloud/Gemfile.lock b/gapic-generator-cloud/Gemfile.lock index dccf23045..5e8ae3c22 100644 --- a/gapic-generator-cloud/Gemfile.lock +++ b/gapic-generator-cloud/Gemfile.lock @@ -90,6 +90,7 @@ GEM minitest (~> 5.16) nokogiri (1.19.2-x86_64-linux-gnu) racc (~> 1.4) + ostruct (0.6.3) parallel (2.0.1) parser (3.3.11.1) ast (~> 2.4.1) @@ -155,6 +156,7 @@ DEPENDENCIES minitest (~> 5.16) minitest-autotest (~> 1.0) minitest-focus (~> 1.0) + ostruct (~> 0.6.3) pry (>= 0.14) redcarpet (~> 3.0) yard (~> 0.9) diff --git a/gapic-generator/Gemfile b/gapic-generator/Gemfile index c1cb7c70f..0a6123918 100644 --- a/gapic-generator/Gemfile +++ b/gapic-generator/Gemfile @@ -11,6 +11,7 @@ gem "grpc-tools", ">= 1.60.0", "< 1.75.1" gem "minitest", "~> 5.16" gem "minitest-autotest", "~> 1.0" gem "minitest-focus", "~> 1.0" +gem "ostruct", "~> 0.6.3" gem "pry", ">= 0.14" gem "redcarpet", "~> 3.0" gem "yard", "~> 0.9" diff --git a/gapic-generator/Gemfile.lock b/gapic-generator/Gemfile.lock index 284f2e246..86f6db91c 100644 --- a/gapic-generator/Gemfile.lock +++ b/gapic-generator/Gemfile.lock @@ -84,6 +84,7 @@ GEM minitest (~> 5.16) nokogiri (1.19.2-x86_64-linux-gnu) racc (~> 1.4) + ostruct (0.6.3) parallel (2.0.1) parser (3.3.11.1) ast (~> 2.4.1) @@ -148,6 +149,7 @@ DEPENDENCIES minitest (~> 5.16) minitest-autotest (~> 1.0) minitest-focus (~> 1.0) + ostruct (~> 0.6.3) pry (>= 0.14) redcarpet (~> 3.0) yard (~> 0.9) diff --git a/gapic-generator/templates/default/service/rest/client/_client.text.erb b/gapic-generator/templates/default/service/rest/client/_client.text.erb index 5e68bbd01..0c85c808c 100644 --- a/gapic-generator/templates/default/service/rest/client/_client.text.erb +++ b/gapic-generator/templates/default/service/rest/client/_client.text.erb @@ -137,6 +137,7 @@ class <%= service.rest.client_name %> <%- if subclient.respond_to?(:bindings_override) && !subclient.bindings_override.empty? -%> config.bindings_override = @config.bindings_override <%- end -%> + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end <%- end -%> @@ -145,7 +146,8 @@ class <%= service.rest.client_name %> endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @<%= service.stub_name %>.logger(stub: true)&.info do |entry| @@ -168,6 +170,7 @@ class <%= service.rest.client_name %> config.bindings_override = @config.bindings_override <%- end -%> config.logger = @<%= service.stub_name %>.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end <%- end -%> end diff --git a/gapic-generator/templates/default/service/rest/client/_config.text.erb b/gapic-generator/templates/default/service/rest/client/_config.text.erb index 364e6d8cd..c48bbc373 100644 --- a/gapic-generator/templates/default/service/rest/client/_config.text.erb +++ b/gapic-generator/templates/default/service/rest/client/_config.text.erb @@ -89,6 +89,9 @@ # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] +# @!attribute [rw] faraday_config +# A Proc to configure the underlying Faraday connection object. +# @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -120,6 +123,7 @@ class Configuration config_attr :bindings_override, {}, ::Hash, nil <%- end -%> config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/gapic-generator/templates/default/service/rest/client/_operations.text.erb b/gapic-generator/templates/default/service/rest/client/_operations.text.erb index 087102fa6..f2208a480 100644 --- a/gapic-generator/templates/default/service/rest/client/_operations.text.erb +++ b/gapic-generator/templates/default/service/rest/client/_operations.text.erb @@ -80,7 +80,8 @@ class <%= service.operations_name %> endpoint: @config.endpoint, endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, - credentials: credentials + credentials: credentials, + faraday_config: @config.faraday_config ) # Used by an LRO wrapper for some methods of this service @@ -102,15 +103,18 @@ end # Service stub contains baseline method implementations # including transcoding, making the REST call, and deserialing the response. class <%= service.operations_stub_name %> - def initialize endpoint:, endpoint_template:, universe_domain:, credentials: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + &faraday_config + ) end <%- service.lro_service.rest.methods.each do |method| -%> diff --git a/gapic-generator/templates/default/service/rest/service_stub/_service_stub.text.erb b/gapic-generator/templates/default/service/rest/service_stub/_service_stub.text.erb index 7fc6bd10a..5b5d0d80f 100644 --- a/gapic-generator/templates/default/service/rest/service_stub/_service_stub.text.erb +++ b/gapic-generator/templates/default/service/rest/service_stub/_service_stub.text.erb @@ -10,19 +10,22 @@ require "<%= service.proto_service_require %>" <%= render partial: "proto_docs/deprecated", locals: { presenter: service } -%> class <%= service.rest.service_stub_name %> # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: <%= service.rest.numeric_enums? %>, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: <%= service.rest.numeric_enums? %>, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/gapic-generator/templates/default/service/rest/test/method/_configure.text.erb b/gapic-generator/templates/default/service/rest/test/method/_configure.text.erb index 03f150d86..6b04210bd 100644 --- a/gapic-generator/templates/default/service/rest/test/method/_configure.text.erb +++ b/gapic-generator/templates/default/service/rest/test/method/_configure.text.erb @@ -18,3 +18,28 @@ def test_configure assert_same block_config, config assert_kind_of <%= full_client_name %>::Configuration, config end + +def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + <%= full_client_name %>.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc +end + diff --git a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/addresses/rest/client.rb b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/addresses/rest/client.rb index edadd7df9..8a85d3e46 100644 --- a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/addresses/rest/client.rb +++ b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/addresses/rest/client.rb @@ -150,6 +150,7 @@ def initialize config.quota_project = @quota_project_id config.endpoint = @config.endpoint config.universe_domain = @config.universe_domain + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @addresses_stub = ::Google::Cloud::Compute::V1::Addresses::Rest::ServiceStub.new( @@ -157,7 +158,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @addresses_stub.logger(stub: true)&.info do |entry| @@ -758,6 +760,9 @@ def list request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -780,6 +785,7 @@ class Configuration config_attr :quota_project, nil, ::String, nil config_attr :universe_domain, nil, ::String, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/addresses/rest/service_stub.rb b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/addresses/rest/service_stub.rb index 377069bf3..b77469e9d 100644 --- a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/addresses/rest/service_stub.rb +++ b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/addresses/rest/service_stub.rb @@ -31,19 +31,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/global_operations/rest/client.rb b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/global_operations/rest/client.rb index 7605d2c27..0b3302b31 100644 --- a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/global_operations/rest/client.rb +++ b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/global_operations/rest/client.rb @@ -149,7 +149,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @global_operations_stub.logger(stub: true)&.info do |entry| @@ -421,6 +422,9 @@ def get request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -443,6 +447,7 @@ class Configuration config_attr :quota_project, nil, ::String, nil config_attr :universe_domain, nil, ::String, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/global_operations/rest/service_stub.rb b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/global_operations/rest/service_stub.rb index 5e1361f0f..81de61f56 100644 --- a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/global_operations/rest/service_stub.rb +++ b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/global_operations/rest/service_stub.rb @@ -31,19 +31,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/networks/rest/client.rb b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/networks/rest/client.rb index e0476447e..9e7832b04 100644 --- a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/networks/rest/client.rb +++ b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/networks/rest/client.rb @@ -150,6 +150,7 @@ def initialize config.quota_project = @quota_project_id config.endpoint = @config.endpoint config.universe_domain = @config.universe_domain + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @networks_stub = ::Google::Cloud::Compute::V1::Networks::Rest::ServiceStub.new( @@ -157,7 +158,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @networks_stub.logger(stub: true)&.info do |entry| @@ -481,6 +483,9 @@ def remove_peering request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -503,6 +508,7 @@ class Configuration config_attr :quota_project, nil, ::String, nil config_attr :universe_domain, nil, ::String, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/networks/rest/service_stub.rb b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/networks/rest/service_stub.rb index 73c7dfba5..eb880577e 100644 --- a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/networks/rest/service_stub.rb +++ b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/networks/rest/service_stub.rb @@ -31,19 +31,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_instance_group_managers/rest/client.rb b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_instance_group_managers/rest/client.rb index eb9a4393a..883ed6beb 100644 --- a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_instance_group_managers/rest/client.rb +++ b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_instance_group_managers/rest/client.rb @@ -150,6 +150,7 @@ def initialize config.quota_project = @quota_project_id config.endpoint = @config.endpoint config.universe_domain = @config.universe_domain + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @region_instance_group_managers_stub = ::Google::Cloud::Compute::V1::RegionInstanceGroupManagers::Rest::ServiceStub.new( @@ -157,7 +158,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @region_instance_group_managers_stub.logger(stub: true)&.info do |entry| @@ -380,6 +382,9 @@ def resize request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -402,6 +407,7 @@ class Configuration config_attr :quota_project, nil, ::String, nil config_attr :universe_domain, nil, ::String, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_instance_group_managers/rest/service_stub.rb b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_instance_group_managers/rest/service_stub.rb index 59abdcc4d..6c3673805 100644 --- a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_instance_group_managers/rest/service_stub.rb +++ b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_instance_group_managers/rest/service_stub.rb @@ -31,19 +31,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_operations/rest/client.rb b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_operations/rest/client.rb index 550f4fa86..a1cbabc3d 100644 --- a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_operations/rest/client.rb +++ b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_operations/rest/client.rb @@ -149,7 +149,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @region_operations_stub.logger(stub: true)&.info do |entry| @@ -613,6 +614,9 @@ def wait request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -635,6 +639,7 @@ class Configuration config_attr :quota_project, nil, ::String, nil config_attr :universe_domain, nil, ::String, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_operations/rest/service_stub.rb b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_operations/rest/service_stub.rb index 593f13951..667ce21e3 100644 --- a/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_operations/rest/service_stub.rb +++ b/shared/output/cloud/compute_small/lib/google/cloud/compute/v1/region_operations/rest/service_stub.rb @@ -31,19 +31,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/cloud/compute_small/test/google/cloud/compute/v1/addresses_rest_test.rb b/shared/output/cloud/compute_small/test/google/cloud/compute/v1/addresses_rest_test.rb index 8a13d0b53..21b453124 100644 --- a/shared/output/cloud/compute_small/test/google/cloud/compute/v1/addresses_rest_test.rb +++ b/shared/output/cloud/compute_small/test/google/cloud/compute/v1/addresses_rest_test.rb @@ -386,4 +386,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Google::Cloud::Compute::V1::Addresses::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Google::Cloud::Compute::V1::Addresses::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/cloud/compute_small/test/google/cloud/compute/v1/global_operations_rest_test.rb b/shared/output/cloud/compute_small/test/google/cloud/compute/v1/global_operations_rest_test.rb index 2c57c664b..9f117d052 100644 --- a/shared/output/cloud/compute_small/test/google/cloud/compute/v1/global_operations_rest_test.rb +++ b/shared/output/cloud/compute_small/test/google/cloud/compute/v1/global_operations_rest_test.rb @@ -206,4 +206,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Google::Cloud::Compute::V1::GlobalOperations::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Google::Cloud::Compute::V1::GlobalOperations::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/cloud/compute_small/test/google/cloud/compute/v1/networks_rest_test.rb b/shared/output/cloud/compute_small/test/google/cloud/compute/v1/networks_rest_test.rb index 360dbc7b7..a01b59229 100644 --- a/shared/output/cloud/compute_small/test/google/cloud/compute/v1/networks_rest_test.rb +++ b/shared/output/cloud/compute_small/test/google/cloud/compute/v1/networks_rest_test.rb @@ -216,4 +216,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Google::Cloud::Compute::V1::Networks::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Google::Cloud::Compute::V1::Networks::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/cloud/compute_small/test/google/cloud/compute/v1/region_instance_group_managers_rest_test.rb b/shared/output/cloud/compute_small/test/google/cloud/compute/v1/region_instance_group_managers_rest_test.rb index e4ac00684..5ef9d32eb 100644 --- a/shared/output/cloud/compute_small/test/google/cloud/compute/v1/region_instance_group_managers_rest_test.rb +++ b/shared/output/cloud/compute_small/test/google/cloud/compute/v1/region_instance_group_managers_rest_test.rb @@ -154,4 +154,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Google::Cloud::Compute::V1::RegionInstanceGroupManagers::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Google::Cloud::Compute::V1::RegionInstanceGroupManagers::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/cloud/compute_small/test/google/cloud/compute/v1/region_operations_rest_test.rb b/shared/output/cloud/compute_small/test/google/cloud/compute/v1/region_operations_rest_test.rb index 3619c7a47..2e2c895a3 100644 --- a/shared/output/cloud/compute_small/test/google/cloud/compute/v1/region_operations_rest_test.rb +++ b/shared/output/cloud/compute_small/test/google/cloud/compute/v1/region_operations_rest_test.rb @@ -324,4 +324,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Google::Cloud::Compute::V1::RegionOperations::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Google::Cloud::Compute::V1::RegionOperations::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/cloud/language_v1/lib/google/cloud/language/v1/language_service/rest/client.rb b/shared/output/cloud/language_v1/lib/google/cloud/language/v1/language_service/rest/client.rb index 7e8a62e23..a98993722 100644 --- a/shared/output/cloud/language_v1/lib/google/cloud/language/v1/language_service/rest/client.rb +++ b/shared/output/cloud/language_v1/lib/google/cloud/language/v1/language_service/rest/client.rb @@ -180,7 +180,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @language_service_stub.logger(stub: true)&.info do |entry| @@ -861,6 +862,9 @@ def annotate_text request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -883,6 +887,7 @@ class Configuration config_attr :quota_project, nil, ::String, nil config_attr :universe_domain, nil, ::String, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/cloud/language_v1/lib/google/cloud/language/v1/language_service/rest/service_stub.rb b/shared/output/cloud/language_v1/lib/google/cloud/language/v1/language_service/rest/service_stub.rb index ff8b42e3e..4ad56ddc8 100644 --- a/shared/output/cloud/language_v1/lib/google/cloud/language/v1/language_service/rest/service_stub.rb +++ b/shared/output/cloud/language_v1/lib/google/cloud/language/v1/language_service/rest/service_stub.rb @@ -31,19 +31,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/cloud/language_v1/test/google/cloud/language/v1/language_service_rest_test.rb b/shared/output/cloud/language_v1/test/google/cloud/language/v1/language_service_rest_test.rb index 6414c0e29..0ba35bf31 100644 --- a/shared/output/cloud/language_v1/test/google/cloud/language/v1/language_service_rest_test.rb +++ b/shared/output/cloud/language_v1/test/google/cloud/language/v1/language_service_rest_test.rb @@ -481,4 +481,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Google::Cloud::Language::V1::LanguageService::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Google::Cloud::Language::V1::LanguageService::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/cloud/location/lib/google/cloud/location/locations/rest/client.rb b/shared/output/cloud/location/lib/google/cloud/location/locations/rest/client.rb index c98103165..11134fc9b 100644 --- a/shared/output/cloud/location/lib/google/cloud/location/locations/rest/client.rb +++ b/shared/output/cloud/location/lib/google/cloud/location/locations/rest/client.rb @@ -150,7 +150,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @locations_stub.logger(stub: true)&.info do |entry| @@ -434,6 +435,9 @@ def get_location request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -463,6 +467,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/cloud/location/lib/google/cloud/location/locations/rest/service_stub.rb b/shared/output/cloud/location/lib/google/cloud/location/locations/rest/service_stub.rb index 6dc6bd627..db2186830 100644 --- a/shared/output/cloud/location/lib/google/cloud/location/locations/rest/service_stub.rb +++ b/shared/output/cloud/location/lib/google/cloud/location/locations/rest/service_stub.rb @@ -30,19 +30,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/cloud/location/test/google/cloud/location/locations_rest_test.rb b/shared/output/cloud/location/test/google/cloud/location/locations_rest_test.rb index 0c1f63c22..3a0898204 100644 --- a/shared/output/cloud/location/test/google/cloud/location/locations_rest_test.rb +++ b/shared/output/cloud/location/test/google/cloud/location/locations_rest_test.rb @@ -207,4 +207,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Google::Cloud::Location::Locations::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Google::Cloud::Location::Locations::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/image_annotator/rest/client.rb b/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/image_annotator/rest/client.rb index 7f5c0c020..3769ebc1a 100644 --- a/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/image_annotator/rest/client.rb +++ b/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/image_annotator/rest/client.rb @@ -154,6 +154,7 @@ def initialize config.quota_project = @quota_project_id config.endpoint = @config.endpoint config.universe_domain = @config.universe_domain + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @image_annotator_stub = ::Google::Cloud::Vision::V1::ImageAnnotator::Rest::ServiceStub.new( @@ -161,7 +162,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @image_annotator_stub.logger(stub: true)&.info do |entry| @@ -181,6 +183,7 @@ def initialize config.universe_domain = @image_annotator_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @image_annotator_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -728,6 +731,9 @@ def async_batch_annotate_files request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -757,6 +763,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/image_annotator/rest/operations.rb b/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/image_annotator/rest/operations.rb index e452e4628..dda83e2ef 100644 --- a/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/image_annotator/rest/operations.rb +++ b/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/image_annotator/rest/operations.rb @@ -102,7 +102,8 @@ def initialize endpoint: @config.endpoint, endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, - credentials: credentials + credentials: credentials, + faraday_config: @config.faraday_config ) # Used by an LRO wrapper for some methods of this service @@ -558,6 +559,9 @@ def cancel_operation request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -580,6 +584,7 @@ class Configuration config_attr :quota_project, nil, ::String, nil config_attr :universe_domain, nil, ::String, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil @@ -663,15 +668,18 @@ def initialize parent_rpcs = nil # Service stub contains baseline method implementations # including transcoding, making the REST call, and deserialing the response. class OperationsServiceStub - def initialize endpoint:, endpoint_template:, universe_domain:, credentials: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + &faraday_config + ) end ## diff --git a/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/image_annotator/rest/service_stub.rb b/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/image_annotator/rest/service_stub.rb index e625edb5c..a335c23a6 100644 --- a/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/image_annotator/rest/service_stub.rb +++ b/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/image_annotator/rest/service_stub.rb @@ -31,19 +31,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/product_search/rest/client.rb b/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/product_search/rest/client.rb index d5337f528..eeaa4f1ad 100644 --- a/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/product_search/rest/client.rb +++ b/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/product_search/rest/client.rb @@ -167,6 +167,7 @@ def initialize config.quota_project = @quota_project_id config.endpoint = @config.endpoint config.universe_domain = @config.universe_domain + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @product_search_stub = ::Google::Cloud::Vision::V1::ProductSearch::Rest::ServiceStub.new( @@ -174,7 +175,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @product_search_stub.logger(stub: true)&.info do |entry| @@ -194,6 +196,7 @@ def initialize config.universe_domain = @product_search_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @product_search_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -2096,6 +2099,9 @@ def purge_products request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -2125,6 +2131,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/product_search/rest/operations.rb b/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/product_search/rest/operations.rb index cf5f9fd3f..ad3573517 100644 --- a/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/product_search/rest/operations.rb +++ b/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/product_search/rest/operations.rb @@ -102,7 +102,8 @@ def initialize endpoint: @config.endpoint, endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, - credentials: credentials + credentials: credentials, + faraday_config: @config.faraday_config ) # Used by an LRO wrapper for some methods of this service @@ -558,6 +559,9 @@ def cancel_operation request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -580,6 +584,7 @@ class Configuration config_attr :quota_project, nil, ::String, nil config_attr :universe_domain, nil, ::String, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil @@ -663,15 +668,18 @@ def initialize parent_rpcs = nil # Service stub contains baseline method implementations # including transcoding, making the REST call, and deserialing the response. class OperationsServiceStub - def initialize endpoint:, endpoint_template:, universe_domain:, credentials: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + &faraday_config + ) end ## diff --git a/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/product_search/rest/service_stub.rb b/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/product_search/rest/service_stub.rb index 06642c416..67d153619 100644 --- a/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/product_search/rest/service_stub.rb +++ b/shared/output/cloud/vision_v1/lib/google/cloud/vision/v1/product_search/rest/service_stub.rb @@ -31,19 +31,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/cloud/vision_v1/test/google/cloud/vision/v1/image_annotator_rest_test.rb b/shared/output/cloud/vision_v1/test/google/cloud/vision/v1/image_annotator_rest_test.rb index 258d6f324..a39a22187 100644 --- a/shared/output/cloud/vision_v1/test/google/cloud/vision/v1/image_annotator_rest_test.rb +++ b/shared/output/cloud/vision_v1/test/google/cloud/vision/v1/image_annotator_rest_test.rb @@ -321,4 +321,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Google::Cloud::Vision::V1::ImageAnnotator::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Google::Cloud::Vision::V1::ImageAnnotator::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/cloud/vision_v1/test/google/cloud/vision/v1/product_search_rest_test.rb b/shared/output/cloud/vision_v1/test/google/cloud/vision/v1/product_search_rest_test.rb index 5bcc71106..707f4eb95 100644 --- a/shared/output/cloud/vision_v1/test/google/cloud/vision/v1/product_search_rest_test.rb +++ b/shared/output/cloud/vision_v1/test/google/cloud/vision/v1/product_search_rest_test.rb @@ -1143,4 +1143,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Google::Cloud::Vision::V1::ProductSearch::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Google::Cloud::Vision::V1::ProductSearch::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/compliance/rest/client.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/compliance/rest/client.rb index 57d521421..08c4bec50 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/compliance/rest/client.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/compliance/rest/client.rb @@ -152,7 +152,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @compliance_stub.logger(stub: true)&.info do |entry| @@ -172,6 +173,7 @@ def initialize config.universe_domain = @compliance_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @compliance_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @iam_policy_client = Google::Iam::V1::IAMPolicy::Rest::Client.new do |config| @@ -181,6 +183,7 @@ def initialize config.universe_domain = @compliance_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @compliance_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -1198,6 +1201,9 @@ def verify_enum request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -1228,6 +1234,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/compliance/rest/service_stub.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/compliance/rest/service_stub.rb index b805b9bba..dcd673bd3 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/compliance/rest/service_stub.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/compliance/rest/service_stub.rb @@ -38,19 +38,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/echo/rest/client.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/echo/rest/client.rb index 60829521e..af4ba3067 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/echo/rest/client.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/echo/rest/client.rb @@ -159,6 +159,7 @@ def initialize config.quota_project = @quota_project_id config.endpoint = @config.endpoint config.universe_domain = @config.universe_domain + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @echo_stub = ::Google::Showcase::V1beta1::Echo::Rest::ServiceStub.new( @@ -166,7 +167,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @echo_stub.logger(stub: true)&.info do |entry| @@ -186,6 +188,7 @@ def initialize config.universe_domain = @echo_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @echo_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @iam_policy_client = Google::Iam::V1::IAMPolicy::Rest::Client.new do |config| @@ -195,6 +198,7 @@ def initialize config.universe_domain = @echo_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @echo_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -1149,6 +1153,9 @@ def block request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -1179,6 +1186,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/echo/rest/operations.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/echo/rest/operations.rb index 903ff9c12..461a72bbb 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/echo/rest/operations.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/echo/rest/operations.rb @@ -109,7 +109,8 @@ def initialize endpoint: @config.endpoint, endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, - credentials: credentials + credentials: credentials, + faraday_config: @config.faraday_config ) # Used by an LRO wrapper for some methods of this service @@ -566,6 +567,9 @@ def cancel_operation request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -589,6 +593,7 @@ class Configuration config_attr :quota_project, nil, ::String, nil config_attr :universe_domain, nil, ::String, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil @@ -672,15 +677,18 @@ def initialize parent_rpcs = nil # Service stub contains baseline method implementations # including transcoding, making the REST call, and deserialing the response. class OperationsServiceStub - def initialize endpoint:, endpoint_template:, universe_domain:, credentials: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/echo/rest/service_stub.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/echo/rest/service_stub.rb index 27a9611f7..6aaaaa0d3 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/echo/rest/service_stub.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/echo/rest/service_stub.rb @@ -38,19 +38,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/identity/rest/client.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/identity/rest/client.rb index 9845576b3..31fb28a12 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/identity/rest/client.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/identity/rest/client.rb @@ -152,7 +152,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @identity_stub.logger(stub: true)&.info do |entry| @@ -172,6 +173,7 @@ def initialize config.universe_domain = @identity_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @identity_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @iam_policy_client = Google::Iam::V1::IAMPolicy::Rest::Client.new do |config| @@ -181,6 +183,7 @@ def initialize config.universe_domain = @identity_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @identity_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -701,6 +704,9 @@ def list_users request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -731,6 +737,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/identity/rest/service_stub.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/identity/rest/service_stub.rb index 3d276b813..66eee474e 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/identity/rest/service_stub.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/identity/rest/service_stub.rb @@ -38,19 +38,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/messaging/rest/client.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/messaging/rest/client.rb index 556e4a277..600d84f77 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/messaging/rest/client.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/messaging/rest/client.rb @@ -155,6 +155,7 @@ def initialize config.quota_project = @quota_project_id config.endpoint = @config.endpoint config.universe_domain = @config.universe_domain + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @messaging_stub = ::Google::Showcase::V1beta1::Messaging::Rest::ServiceStub.new( @@ -162,7 +163,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @messaging_stub.logger(stub: true)&.info do |entry| @@ -182,6 +184,7 @@ def initialize config.universe_domain = @messaging_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @messaging_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @iam_policy_client = Google::Iam::V1::IAMPolicy::Rest::Client.new do |config| @@ -191,6 +194,7 @@ def initialize config.universe_domain = @messaging_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @messaging_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -1320,6 +1324,9 @@ def stream_blurbs request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -1350,6 +1357,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/messaging/rest/operations.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/messaging/rest/operations.rb index 616f3cfd9..770b89e2b 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/messaging/rest/operations.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/messaging/rest/operations.rb @@ -109,7 +109,8 @@ def initialize endpoint: @config.endpoint, endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, - credentials: credentials + credentials: credentials, + faraday_config: @config.faraday_config ) # Used by an LRO wrapper for some methods of this service @@ -566,6 +567,9 @@ def cancel_operation request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -589,6 +593,7 @@ class Configuration config_attr :quota_project, nil, ::String, nil config_attr :universe_domain, nil, ::String, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil @@ -672,15 +677,18 @@ def initialize parent_rpcs = nil # Service stub contains baseline method implementations # including transcoding, making the REST call, and deserialing the response. class OperationsServiceStub - def initialize endpoint:, endpoint_template:, universe_domain:, credentials: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/messaging/rest/service_stub.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/messaging/rest/service_stub.rb index 7d96ae460..f2efdd1d6 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/messaging/rest/service_stub.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/messaging/rest/service_stub.rb @@ -38,19 +38,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest/client.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest/client.rb index 6600191ec..c7f749f7c 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest/client.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest/client.rb @@ -150,7 +150,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @sequence_service_stub.logger(stub: true)&.info do |entry| @@ -170,6 +171,7 @@ def initialize config.universe_domain = @sequence_service_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @sequence_service_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @iam_policy_client = Google::Iam::V1::IAMPolicy::Rest::Client.new do |config| @@ -179,6 +181,7 @@ def initialize config.universe_domain = @sequence_service_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @sequence_service_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -767,6 +770,9 @@ def attempt_streaming_sequence request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -797,6 +803,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest/service_stub.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest/service_stub.rb index 85f78fd0c..c4fa6c032 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest/service_stub.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/sequence_service/rest/service_stub.rb @@ -38,19 +38,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/testing/rest/client.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/testing/rest/client.rb index 18e344408..4b055f0d2 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/testing/rest/client.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/testing/rest/client.rb @@ -156,7 +156,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @testing_stub.logger(stub: true)&.info do |entry| @@ -176,6 +177,7 @@ def initialize config.universe_domain = @testing_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @testing_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @iam_policy_client = Google::Iam::V1::IAMPolicy::Rest::Client.new do |config| @@ -185,6 +187,7 @@ def initialize config.universe_domain = @testing_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @testing_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -963,6 +966,9 @@ def verify_test request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -993,6 +999,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/testing/rest/service_stub.rb b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/testing/rest/service_stub.rb index fd33e867b..1573286c7 100644 --- a/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/testing/rest/service_stub.rb +++ b/shared/output/gapic/templates/showcase/lib/google/showcase/v1beta1/testing/rest/service_stub.rb @@ -38,19 +38,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/compliance_rest_test.rb b/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/compliance_rest_test.rb index 7a2eb9f05..94afb386c 100644 --- a/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/compliance_rest_test.rb +++ b/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/compliance_rest_test.rb @@ -717,4 +717,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Google::Showcase::V1beta1::Compliance::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Google::Showcase::V1beta1::Compliance::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/echo_rest_test.rb b/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/echo_rest_test.rb index 281aa2f02..aa0a41990 100644 --- a/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/echo_rest_test.rb +++ b/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/echo_rest_test.rb @@ -606,4 +606,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Google::Showcase::V1beta1::Echo::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Google::Showcase::V1beta1::Echo::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/identity_rest_test.rb b/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/identity_rest_test.rb index c57c5074e..f470a3e08 100644 --- a/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/identity_rest_test.rb +++ b/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/identity_rest_test.rb @@ -376,4 +376,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Google::Showcase::V1beta1::Identity::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Google::Showcase::V1beta1::Identity::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/messaging_rest_test.rb b/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/messaging_rest_test.rb index 4eb9f5cb1..d48eed621 100644 --- a/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/messaging_rest_test.rb +++ b/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/messaging_rest_test.rb @@ -762,4 +762,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Google::Showcase::V1beta1::Messaging::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Google::Showcase::V1beta1::Messaging::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/sequence_service_rest_test.rb b/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/sequence_service_rest_test.rb index d470d6a33..f77a5931b 100644 --- a/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/sequence_service_rest_test.rb +++ b/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/sequence_service_rest_test.rb @@ -429,4 +429,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Google::Showcase::V1beta1::SequenceService::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Google::Showcase::V1beta1::SequenceService::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/testing_rest_test.rb b/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/testing_rest_test.rb index 689414648..0253b013d 100644 --- a/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/testing_rest_test.rb +++ b/shared/output/gapic/templates/showcase/test/google/showcase/v1beta1/testing_rest_test.rb @@ -541,4 +541,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Google::Showcase::V1beta1::Testing::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Google::Showcase::V1beta1::Testing::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_no_retry/rest/client.rb b/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_no_retry/rest/client.rb index 01b734ea6..3c396cf43 100644 --- a/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_no_retry/rest/client.rb +++ b/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_no_retry/rest/client.rb @@ -146,7 +146,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @service_no_retry_stub.logger(stub: true)&.info do |entry| @@ -166,6 +167,7 @@ def initialize config.universe_domain = @service_no_retry_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @service_no_retry_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -342,6 +344,9 @@ def no_retry_method request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -372,6 +377,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_no_retry/rest/service_stub.rb b/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_no_retry/rest/service_stub.rb index f5d35c856..0833be0c2 100644 --- a/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_no_retry/rest/service_stub.rb +++ b/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_no_retry/rest/service_stub.rb @@ -37,19 +37,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_with_retries/rest/client.rb b/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_with_retries/rest/client.rb index 9c449f071..45541c466 100644 --- a/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_with_retries/rest/client.rb +++ b/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_with_retries/rest/client.rb @@ -156,7 +156,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @service_with_retries_stub.logger(stub: true)&.info do |entry| @@ -176,6 +177,7 @@ def initialize config.universe_domain = @service_with_retries_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @service_with_retries_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -420,6 +422,9 @@ def method_level_retry_method request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -450,6 +455,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_with_retries/rest/service_stub.rb b/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_with_retries/rest/service_stub.rb index 93f0a18da..6635f961a 100644 --- a/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_with_retries/rest/service_stub.rb +++ b/shared/output/gapic/templates/testing/lib/testing/grpc_service_config/service_with_retries/rest/service_stub.rb @@ -37,19 +37,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc/rest/client.rb b/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc/rest/client.rb index ee953821c..5cbf382ae 100644 --- a/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc/rest/client.rb +++ b/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc/rest/client.rb @@ -146,7 +146,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @service_with_loc_stub.logger(stub: true)&.info do |entry| @@ -166,6 +167,7 @@ def initialize config.universe_domain = @service_with_loc_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @service_with_loc_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -342,6 +344,9 @@ def call_method request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -372,6 +377,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc/rest/service_stub.rb b/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc/rest/service_stub.rb index b982af754..805c1af51 100644 --- a/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc/rest/service_stub.rb +++ b/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc/rest/service_stub.rb @@ -37,19 +37,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc_and_non_rest_ops/rest/client.rb b/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc_and_non_rest_ops/rest/client.rb index 7ac24adc4..670bbfc64 100644 --- a/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc_and_non_rest_ops/rest/client.rb +++ b/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc_and_non_rest_ops/rest/client.rb @@ -146,7 +146,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @service_with_loc_and_non_rest_ops_stub.logger(stub: true)&.info do |entry| @@ -166,6 +167,7 @@ def initialize config.universe_domain = @service_with_loc_and_non_rest_ops_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @service_with_loc_and_non_rest_ops_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -342,6 +344,9 @@ def call_method request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -372,6 +377,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc_and_non_rest_ops/rest/service_stub.rb b/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc_and_non_rest_ops/rest/service_stub.rb index ec7c2088a..df56d192c 100644 --- a/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc_and_non_rest_ops/rest/service_stub.rb +++ b/shared/output/gapic/templates/testing/lib/testing/mixins/service_with_loc_and_non_rest_ops/rest/service_stub.rb @@ -37,19 +37,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/all_subclients_consumer/rest/client.rb b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/all_subclients_consumer/rest/client.rb index 97656de6f..2a6881be1 100644 --- a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/all_subclients_consumer/rest/client.rb +++ b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/all_subclients_consumer/rest/client.rb @@ -148,6 +148,7 @@ def initialize config.quota_project = @quota_project_id config.endpoint = @config.endpoint config.universe_domain = @config.universe_domain + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @plain_lro_provider = ::Testing::NonstandardLroGrpc::PlainLroProvider::Rest::Client.new do |config| @@ -155,6 +156,7 @@ def initialize config.quota_project = @quota_project_id config.endpoint = @config.endpoint config.universe_domain = @config.universe_domain + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @another_lro_provider = ::Testing::NonstandardLroGrpc::AnotherLroProvider::Rest::Client.new do |config| @@ -162,6 +164,7 @@ def initialize config.quota_project = @quota_project_id config.endpoint = @config.endpoint config.universe_domain = @config.universe_domain + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @all_subclients_consumer_stub = ::Testing::NonstandardLroGrpc::AllSubclientsConsumer::Rest::ServiceStub.new( @@ -169,7 +172,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @all_subclients_consumer_stub.logger(stub: true)&.info do |entry| @@ -189,6 +193,7 @@ def initialize config.universe_domain = @all_subclients_consumer_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @all_subclients_consumer_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -732,6 +737,9 @@ def no_lro request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -762,6 +770,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/all_subclients_consumer/rest/operations.rb b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/all_subclients_consumer/rest/operations.rb index 550424e22..4366559eb 100644 --- a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/all_subclients_consumer/rest/operations.rb +++ b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/all_subclients_consumer/rest/operations.rb @@ -108,7 +108,8 @@ def initialize endpoint: @config.endpoint, endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, - credentials: credentials + credentials: credentials, + faraday_config: @config.faraday_config ) # Used by an LRO wrapper for some methods of this service @@ -565,6 +566,9 @@ def cancel_operation request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -588,6 +592,7 @@ class Configuration config_attr :quota_project, nil, ::String, nil config_attr :universe_domain, nil, ::String, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil @@ -671,15 +676,18 @@ def initialize parent_rpcs = nil # Service stub contains baseline method implementations # including transcoding, making the REST call, and deserialing the response. class OperationsServiceStub - def initialize endpoint:, endpoint_template:, universe_domain:, credentials: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/all_subclients_consumer/rest/service_stub.rb b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/all_subclients_consumer/rest/service_stub.rb index 631a5af7c..15f426514 100644 --- a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/all_subclients_consumer/rest/service_stub.rb +++ b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/all_subclients_consumer/rest/service_stub.rb @@ -37,19 +37,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/another_lro_provider/rest/client.rb b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/another_lro_provider/rest/client.rb index 3227bdd02..667f38bc0 100644 --- a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/another_lro_provider/rest/client.rb +++ b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/another_lro_provider/rest/client.rb @@ -146,7 +146,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @another_lro_provider_stub.logger(stub: true)&.info do |entry| @@ -166,6 +167,7 @@ def initialize config.universe_domain = @another_lro_provider_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @another_lro_provider_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -350,6 +352,9 @@ def get_another request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -380,6 +385,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/another_lro_provider/rest/service_stub.rb b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/another_lro_provider/rest/service_stub.rb index 35cf6d00c..216aa4003 100644 --- a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/another_lro_provider/rest/service_stub.rb +++ b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/another_lro_provider/rest/service_stub.rb @@ -37,19 +37,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_consumer/rest/client.rb b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_consumer/rest/client.rb index 52d1a8c46..1f049a9d0 100644 --- a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_consumer/rest/client.rb +++ b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_consumer/rest/client.rb @@ -147,6 +147,7 @@ def initialize config.quota_project = @quota_project_id config.endpoint = @config.endpoint config.universe_domain = @config.universe_domain + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end @plain_lro_consumer_stub = ::Testing::NonstandardLroGrpc::PlainLroConsumer::Rest::ServiceStub.new( @@ -154,7 +155,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @plain_lro_consumer_stub.logger(stub: true)&.info do |entry| @@ -174,6 +176,7 @@ def initialize config.universe_domain = @plain_lro_consumer_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @plain_lro_consumer_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -373,6 +376,9 @@ def plain_lro_rpc request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -403,6 +409,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_consumer/rest/service_stub.rb b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_consumer/rest/service_stub.rb index 2bdeb2509..9895ce4a1 100644 --- a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_consumer/rest/service_stub.rb +++ b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_consumer/rest/service_stub.rb @@ -37,19 +37,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_provider/rest/client.rb b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_provider/rest/client.rb index c735f4074..fc01675ee 100644 --- a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_provider/rest/client.rb +++ b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_provider/rest/client.rb @@ -146,7 +146,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @plain_lro_provider_stub.logger(stub: true)&.info do |entry| @@ -166,6 +167,7 @@ def initialize config.universe_domain = @plain_lro_provider_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @plain_lro_provider_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -350,6 +352,9 @@ def get request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -380,6 +385,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_provider/rest/service_stub.rb b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_provider/rest/service_stub.rb index a2ecb3aae..8dead0140 100644 --- a/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_provider/rest/service_stub.rb +++ b/shared/output/gapic/templates/testing/lib/testing/nonstandard_lro_grpc/plain_lro_provider/rest/service_stub.rb @@ -37,19 +37,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_explicit_headers/rest/client.rb b/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_explicit_headers/rest/client.rb index 118c67d70..aa9992557 100644 --- a/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_explicit_headers/rest/client.rb +++ b/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_explicit_headers/rest/client.rb @@ -146,7 +146,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @service_explicit_headers_stub.logger(stub: true)&.info do |entry| @@ -166,6 +167,7 @@ def initialize config.universe_domain = @service_explicit_headers_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @service_explicit_headers_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -704,6 +706,9 @@ def with_sub_message request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -734,6 +739,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_explicit_headers/rest/service_stub.rb b/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_explicit_headers/rest/service_stub.rb index 951694852..7cd465298 100644 --- a/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_explicit_headers/rest/service_stub.rb +++ b/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_explicit_headers/rest/service_stub.rb @@ -37,19 +37,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_implicit_headers/rest/client.rb b/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_implicit_headers/rest/client.rb index a77907952..22e892254 100644 --- a/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_implicit_headers/rest/client.rb +++ b/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_implicit_headers/rest/client.rb @@ -146,7 +146,8 @@ def initialize endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, universe_domain: @config.universe_domain, credentials: credentials, - logger: @config.logger + logger: @config.logger, + faraday_config: @config.faraday_config ) @service_implicit_headers_stub.logger(stub: true)&.info do |entry| @@ -166,6 +167,7 @@ def initialize config.universe_domain = @service_implicit_headers_stub.universe_domain config.bindings_override = @config.bindings_override config.logger = @service_implicit_headers_stub.logger if config.respond_to? :logger= + config.faraday_config = @config.faraday_config if config.respond_to? :faraday_config= end end @@ -532,6 +534,9 @@ def with_multiple_levels request, options = nil # `:default` (the default) to construct a default logger, or `nil` to # explicitly disable logging. # @return [::Logger,:default,nil] + # @!attribute [rw] faraday_config + # A Proc to configure the underlying Faraday connection object. + # @return [::Proc,nil] # class Configuration extend ::Gapic::Config @@ -562,6 +567,7 @@ class Configuration # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}] config_attr :bindings_override, {}, ::Hash, nil config_attr :logger, :default, ::Logger, nil, :default + config_attr :faraday_config, nil, ::Proc, nil # @private def initialize parent_config = nil diff --git a/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_implicit_headers/rest/service_stub.rb b/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_implicit_headers/rest/service_stub.rb index 3337cfde8..504ce3461 100644 --- a/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_implicit_headers/rest/service_stub.rb +++ b/shared/output/gapic/templates/testing/lib/testing/routing_headers/service_implicit_headers/rest/service_stub.rb @@ -37,19 +37,22 @@ module Rest # class ServiceStub # @private - def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:, faraday_config: nil # These require statements are intentionally placed here to initialize # the REST modules only when it's required. require "gapic/rest" - @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, - endpoint_template: endpoint_template, - universe_domain: universe_domain, - credentials: credentials, - numeric_enums: false, - service_name: self.class, - raise_faraday_errors: false, - logger: logger + @client_stub = ::Gapic::Rest::ClientStub.new( + endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: false, + service_name: self.class, + raise_faraday_errors: false, + logger: logger, + &faraday_config + ) end ## diff --git a/shared/output/gapic/templates/testing/test/testing/grpc_service_config/service_no_retry_rest_test.rb b/shared/output/gapic/templates/testing/test/testing/grpc_service_config/service_no_retry_rest_test.rb index fc16eed39..0182c8452 100644 --- a/shared/output/gapic/templates/testing/test/testing/grpc_service_config/service_no_retry_rest_test.rb +++ b/shared/output/gapic/templates/testing/test/testing/grpc_service_config/service_no_retry_rest_test.rb @@ -152,4 +152,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Testing::GrpcServiceConfig::ServiceNoRetry::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Testing::GrpcServiceConfig::ServiceNoRetry::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/testing/test/testing/grpc_service_config/service_with_retries_rest_test.rb b/shared/output/gapic/templates/testing/test/testing/grpc_service_config/service_with_retries_rest_test.rb index a794b4e45..a50f8e989 100644 --- a/shared/output/gapic/templates/testing/test/testing/grpc_service_config/service_with_retries_rest_test.rb +++ b/shared/output/gapic/templates/testing/test/testing/grpc_service_config/service_with_retries_rest_test.rb @@ -200,4 +200,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Testing::GrpcServiceConfig::ServiceWithRetries::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Testing::GrpcServiceConfig::ServiceWithRetries::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/testing/test/testing/mixins/service_with_loc_and_non_rest_ops_rest_test.rb b/shared/output/gapic/templates/testing/test/testing/mixins/service_with_loc_and_non_rest_ops_rest_test.rb index 5cc479a88..89df7cb01 100644 --- a/shared/output/gapic/templates/testing/test/testing/mixins/service_with_loc_and_non_rest_ops_rest_test.rb +++ b/shared/output/gapic/templates/testing/test/testing/mixins/service_with_loc_and_non_rest_ops_rest_test.rb @@ -152,4 +152,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Testing::Mixins::ServiceWithLocAndNonRestOps::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Testing::Mixins::ServiceWithLocAndNonRestOps::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/testing/test/testing/mixins/service_with_loc_rest_test.rb b/shared/output/gapic/templates/testing/test/testing/mixins/service_with_loc_rest_test.rb index d2d0d7d50..5572e7cc9 100644 --- a/shared/output/gapic/templates/testing/test/testing/mixins/service_with_loc_rest_test.rb +++ b/shared/output/gapic/templates/testing/test/testing/mixins/service_with_loc_rest_test.rb @@ -152,4 +152,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Testing::Mixins::ServiceWithLoc::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Testing::Mixins::ServiceWithLoc::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/all_subclients_consumer_rest_test.rb b/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/all_subclients_consumer_rest_test.rb index 607573c3e..54f1d9e5b 100644 --- a/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/all_subclients_consumer_rest_test.rb +++ b/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/all_subclients_consumer_rest_test.rb @@ -368,4 +368,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Testing::NonstandardLroGrpc::AllSubclientsConsumer::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Testing::NonstandardLroGrpc::AllSubclientsConsumer::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/another_lro_provider_rest_test.rb b/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/another_lro_provider_rest_test.rb index 802e11cf9..026769ac1 100644 --- a/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/another_lro_provider_rest_test.rb +++ b/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/another_lro_provider_rest_test.rb @@ -159,4 +159,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Testing::NonstandardLroGrpc::AnotherLroProvider::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Testing::NonstandardLroGrpc::AnotherLroProvider::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/plain_lro_consumer_rest_test.rb b/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/plain_lro_consumer_rest_test.rb index 7c9530a7f..f0fb8fe66 100644 --- a/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/plain_lro_consumer_rest_test.rb +++ b/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/plain_lro_consumer_rest_test.rb @@ -158,4 +158,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Testing::NonstandardLroGrpc::PlainLroConsumer::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Testing::NonstandardLroGrpc::PlainLroConsumer::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/plain_lro_provider_rest_test.rb b/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/plain_lro_provider_rest_test.rb index 2af15e2b6..499d8f87b 100644 --- a/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/plain_lro_provider_rest_test.rb +++ b/shared/output/gapic/templates/testing/test/testing/nonstandard_lro_grpc/plain_lro_provider_rest_test.rb @@ -159,4 +159,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Testing::NonstandardLroGrpc::PlainLroProvider::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Testing::NonstandardLroGrpc::PlainLroProvider::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/testing/test/testing/routing_headers/service_explicit_headers_rest_test.rb b/shared/output/gapic/templates/testing/test/testing/routing_headers/service_explicit_headers_rest_test.rb index 836681cdb..f4124ccaa 100644 --- a/shared/output/gapic/templates/testing/test/testing/routing_headers/service_explicit_headers_rest_test.rb +++ b/shared/output/gapic/templates/testing/test/testing/routing_headers/service_explicit_headers_rest_test.rb @@ -384,4 +384,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Testing::RoutingHeaders::ServiceExplicitHeaders::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Testing::RoutingHeaders::ServiceExplicitHeaders::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end diff --git a/shared/output/gapic/templates/testing/test/testing/routing_headers/service_implicit_headers_rest_test.rb b/shared/output/gapic/templates/testing/test/testing/routing_headers/service_implicit_headers_rest_test.rb index 2426bbe5d..00974e824 100644 --- a/shared/output/gapic/templates/testing/test/testing/routing_headers/service_implicit_headers_rest_test.rb +++ b/shared/output/gapic/templates/testing/test/testing/routing_headers/service_implicit_headers_rest_test.rb @@ -272,4 +272,28 @@ def test_configure assert_same block_config, config assert_kind_of ::Testing::RoutingHeaders::ServiceImplicitHeaders::Rest::Client::Configuration, config end + + def test_faraday_config + # Create test objects. + credentials_token = :dummy_value + captured_blocks = [] + + faraday_config_proc = ->(conn) { conn.ssl.client_cert = "cert" } + + stub_proc = ->(**kwargs, &block) do + captured_blocks << block + ClientStub.new nil + end + + # Create client with faraday_config option. + Gapic::Rest::ClientStub.stub :new, stub_proc do + ::Testing::RoutingHeaders::ServiceImplicitHeaders::Rest::Client.new do |config| + config.credentials = credentials_token + config.faraday_config = faraday_config_proc + end + end + + # Verify faraday_config block passthrough. + assert_includes captured_blocks, faraday_config_proc + end end