From 6efdc50d300aa72c2c1f961f01e8486a26dfa5b4 Mon Sep 17 00:00:00 2001 From: John Gallagher Date: Wed, 29 Sep 2021 09:48:32 +0100 Subject: [PATCH 1/5] feat: allow configuring middleware in setup --- .../resources/ruby-client/api_client.mustache | 9 +++++ .../api_client_faraday_partial.mustache | 1 + .../ruby-client/configuration.mustache | 35 +++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache b/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache index 2741a73794ed..fe173d790d8d 100644 --- a/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache @@ -12,6 +12,15 @@ require 'typhoeus' {{/isFaraday}} {{#isFaraday}} require 'faraday' +require 'faraday/request/authorization' +require 'faraday/request/basic_authentication' +require 'faraday/request/instrumentation' +require 'faraday/request/multipart' +require 'faraday/request/retry' +require 'faraday/request/token_authentication' +require 'faraday/request/url_encoded' +require 'faraday/response/logger' +require 'faraday/response/raise_error' {{/isFaraday}} module {{moduleName}} 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 96e1e1142ad7..aa77b8e8e04d 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 26d324489b9d..5a06981cb1b4 100644 --- a/modules/openapi-generator/src/main/resources/ruby-client/configuration.mustache +++ b/modules/openapi-generator/src/main/resources/ruby-client/configuration.mustache @@ -118,6 +118,9 @@ module {{moduleName}} @ssl_ca_file = nil @ssl_client_cert = nil @ssl_client_key = nil + @middlewares = [] + @request_middlewares = [] + @response_middlewares = [] {{/isFaraday}} {{^isFaraday}} @verify_ssl = true @@ -345,5 +348,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 From 7a2f8ecf5bb96614b306aecd48481eda37ca3c67 Mon Sep 17 00:00:00 2001 From: John Gallagher Date: Wed, 29 Sep 2021 10:30:44 +0100 Subject: [PATCH 2/5] fix: stop requiring Faraday middleware unnecessarily --- .../src/main/resources/ruby-client/api_client.mustache | 9 --------- 1 file changed, 9 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache b/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache index fe173d790d8d..2741a73794ed 100644 --- a/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/ruby-client/api_client.mustache @@ -12,15 +12,6 @@ require 'typhoeus' {{/isFaraday}} {{#isFaraday}} require 'faraday' -require 'faraday/request/authorization' -require 'faraday/request/basic_authentication' -require 'faraday/request/instrumentation' -require 'faraday/request/multipart' -require 'faraday/request/retry' -require 'faraday/request/token_authentication' -require 'faraday/request/url_encoded' -require 'faraday/response/logger' -require 'faraday/response/raise_error' {{/isFaraday}} module {{moduleName}} From 4644c1139b2a17601defe95eab19f163a0e73069 Mon Sep 17 00:00:00 2001 From: John Gallagher Date: Wed, 29 Sep 2021 15:34:10 +0100 Subject: [PATCH 3/5] chore: regenerate petstore samples --- .../ruby-faraday/lib/petstore/api_client.rb | 1 + .../lib/petstore/configuration.rb | 33 +++++++++++++++++++ .../ruby/lib/petstore/configuration.rb | 1 + 3 files changed, 35 insertions(+) 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 c2e65aa104c8..cb467c6bf58d 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 a8f4570e56e1..4972c0a78c69 100644 --- a/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb +++ b/samples/client/petstore/ruby-faraday/lib/petstore/configuration.rb @@ -149,6 +149,9 @@ def initialize @ssl_ca_file = nil @ssl_client_cert = nil @ssl_client_key = nil + @middlewares = [] + @request_middlewares = [] + @response_middlewares = [] @debugging = false @inject_format = false @force_ending_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 12a52ebd2c5c..ef29d59e5431 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 From e9d07bf4e0aa7f46d986beb57e62d8ae399059aa Mon Sep 17 00:00:00 2001 From: John Gallagher Date: Wed, 29 Sep 2021 15:34:29 +0100 Subject: [PATCH 4/5] chore: regenerate openapi3 client --- .../ruby-client/lib/x_auth_id_alias/configuration.rb | 1 + .../dynamic-servers/ruby/lib/dynamic_servers/configuration.rb | 1 + .../ruby-client/lib/petstore/configuration.rb | 1 + 3 files changed, 3 insertions(+) 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 615cfc8f10c7..3ecfc9264b71 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 ef4d3ada5dba..132934e81539 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 f8557cbb5199..1633504ed470 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 From 99d774ca81a72f74156c3f96b37766e7e908d5a5 Mon Sep 17 00:00:00 2001 From: John Gallagher Date: Thu, 30 Sep 2021 15:49:50 +0100 Subject: [PATCH 5/5] chore: ci fails so rebuild