From 2ceccfbe3cfc58a2d06934964af9914c5c0aa5ef Mon Sep 17 00:00:00 2001 From: John Gallagher Date: Mon, 4 Oct 2021 10:09:21 +0100 Subject: [PATCH] [REQ] [RUBY] [FARADAY] Allow middleware to be configured (#10495) * feat: allow configuring middleware in setup * fix: stop requiring Faraday middleware unnecessarily * chore: regenerate petstore samples * chore: regenerate openapi3 client * chore: ci fails so rebuild --- .../api_client_faraday_partial.mustache | 1 + .../ruby-client/configuration.mustache | 35 +++++++++++++++++++ .../ruby-faraday/lib/petstore/api_client.rb | 1 + .../lib/petstore/configuration.rb | 33 +++++++++++++++++ .../ruby/lib/petstore/configuration.rb | 1 + .../lib/x_auth_id_alias/configuration.rb | 1 + .../ruby/lib/dynamic_servers/configuration.rb | 1 + .../ruby-client/lib/petstore/configuration.rb | 1 + 8 files changed, 74 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/ruby-client/api_client_faraday_partial.mustache b/modules/openapi-generator/src/main/resources/ruby-client/api_client_faraday_partial.mustache index 0b35bbbc7c63..6d055d510012 100644 --- a/modules/openapi-generator/src/main/resources/ruby-client/api_client_faraday_partial.mustache +++ b/modules/openapi-generator/src/main/resources/ruby-client/api_client_faraday_partial.mustache @@ -13,6 +13,7 @@ connection = Faraday.new(:url => config.base_url, :ssl => ssl_options) do |conn| conn.basic_auth(config.username, config.password) + @config.configure_middleware(conn) if opts[:header_params]["Content-Type"] == "multipart/form-data" conn.request :multipart conn.request :url_encoded diff --git a/modules/openapi-generator/src/main/resources/ruby-client/configuration.mustache b/modules/openapi-generator/src/main/resources/ruby-client/configuration.mustache index 2d779e04790d..efd628c53900 100644 --- a/modules/openapi-generator/src/main/resources/ruby-client/configuration.mustache +++ b/modules/openapi-generator/src/main/resources/ruby-client/configuration.mustache @@ -117,6 +117,9 @@ module {{moduleName}} @ssl_ca_file = nil @ssl_client_cert = nil @ssl_client_key = nil + @middlewares = [] + @request_middlewares = [] + @response_middlewares = [] @timeout = 60 {{/isFaraday}} {{^isFaraday}} @@ -346,5 +349,37 @@ module {{moduleName}} url end + + {{#isFaraday}} + # Adds middleware to the stack + def use(*middleware) + @middlewares << middleware + end + + # Adds request middleware to the stack + def request(*middleware) + @request_middlewares << middleware + end + + # Adds response middleware to the stack + def response(*middleware) + @response_middlewares << middleware + end + + # Set up middleware on the connection + def configure_middleware(connection) + @middlewares.each do |middleware| + connection.use(*middleware) + end + + @request_middlewares.each do |middleware| + connection.request(*middleware) + end + + @response_middlewares.each do |middleware| + connection.response(*middleware) + end + end + {{/isFaraday}} end end diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb b/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb index 0faad1f70222..457dcc47230a 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/api_client.rb @@ -57,6 +57,7 @@ def call_api(http_method, path, opts = {}) connection = Faraday.new(:url => config.base_url, :ssl => ssl_options) do |conn| conn.basic_auth(config.username, config.password) + @config.configure_middleware(conn) if opts[:header_params]["Content-Type"] == "multipart/form-data" conn.request :multipart conn.request :url_encoded diff --git a/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb b/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb index 27a6c4270da1..64e358411732 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb @@ -148,6 +148,9 @@ def initialize @ssl_ca_file = nil @ssl_client_cert = nil @ssl_client_key = nil + @middlewares = [] + @request_middlewares = [] + @response_middlewares = [] @timeout = 60 @debugging = false @inject_format = false @@ -354,5 +357,35 @@ def server_url(index, variables = {}, servers = nil) url end + + # Adds middleware to the stack + def use(*middleware) + @middlewares << middleware + end + + # Adds request middleware to the stack + def request(*middleware) + @request_middlewares << middleware + end + + # Adds response middleware to the stack + def response(*middleware) + @response_middlewares << middleware + end + + # Set up middleware on the connection + def configure_middleware(connection) + @middlewares.each do |middleware| + connection.use(*middleware) + end + + @request_middlewares.each do |middleware| + connection.request(*middleware) + end + + @response_middlewares.each do |middleware| + connection.response(*middleware) + end + end end end diff --git a/samples/client/petstore/ruby/lib/petstore/configuration.rb b/samples/client/petstore/ruby/lib/petstore/configuration.rb index f99968892f30..c567615f7755 100644 --- a/samples/client/petstore/ruby/lib/petstore/configuration.rb +++ b/samples/client/petstore/ruby/lib/petstore/configuration.rb @@ -359,5 +359,6 @@ def server_url(index, variables = {}, servers = nil) url end + end end diff --git a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb index 2eaaa31535f2..c5e7e3c9bcb8 100644 --- a/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb +++ b/samples/openapi3/client/extensions/x-auth-id-alias/ruby-client/lib/x_auth_id_alias/configuration.rb @@ -313,5 +313,6 @@ def server_url(index, variables = {}, servers = nil) url end + end end diff --git a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb index 09196ad1f81d..d54b42ad4e9f 100644 --- a/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb +++ b/samples/openapi3/client/features/dynamic-servers/ruby/lib/dynamic_servers/configuration.rb @@ -350,5 +350,6 @@ def server_url(index, variables = {}, servers = nil) url end + end end diff --git a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb index 8d5d2824ceb0..631f267d04c9 100644 --- a/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb +++ b/samples/openapi3/client/features/generate-alias-as-model/ruby-client/lib/petstore/configuration.rb @@ -266,5 +266,6 @@ def server_url(index, variables = {}, servers = nil) url end + end end