[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
This commit is contained in:
John Gallagher
2021-10-04 10:09:21 +01:00
committed by GitHub
parent 45e0b461ba
commit 2ceccfbe3c
8 changed files with 74 additions and 0 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -57,6 +57,7 @@ module Petstore
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

View File

@@ -148,6 +148,9 @@ module Petstore
@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 @@ module Petstore
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

View File

@@ -359,5 +359,6 @@ module Petstore
url
end
end
end

View File

@@ -313,5 +313,6 @@ module XAuthIDAlias
url
end
end
end

View File

@@ -350,5 +350,6 @@ module DynamicServers
url
end
end
end

View File

@@ -266,5 +266,6 @@ module Petstore
url
end
end
end