Class: Pact::Provider::PactBrokerProxy
- Defined in:
- lib/pact/provider/pact_broker_proxy.rb
Constant Summary collapse
- PACT_FILE_REQUEST_PATH_REGEX =
e.g. /pacts/provider/paas-stand-seeker/consumer/paas-stand-placer/pact-version/2967a9343bd8fdd28a286c4b8322380020618892/metadata/c1tdW2VdPXByb2R1Y3Rpb24mc1tdW2N2XT03MzIy # rubocop:disable Layout/LineLength
%r{/pacts/provider/.+?/consumer/.+?/pact-version/.+}.freeze
Instance Attribute Summary collapse
-
#backend_uri ⇒ Object
readonly
Returns the value of attribute backend_uri.
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
Instance Method Summary collapse
-
#initialize(app = nil, opts = {}) ⇒ PactBrokerProxy
constructor
A new instance of PactBrokerProxy.
- #perform_request(env) ⇒ Object
- #rewrite_env(env) ⇒ Object
- #rewrite_response(triplet) ⇒ Object
Constructor Details
#initialize(app = nil, opts = {}) ⇒ PactBrokerProxy
Returns a new instance of PactBrokerProxy.
13 14 15 16 17 18 |
# File 'lib/pact/provider/pact_broker_proxy.rb', line 13 def initialize(app = nil, opts = {}) super @backend_uri = URI(opts[:backend]) @path = nil @logger = opts[:logger] || Logger.new($stdout) end |
Instance Attribute Details
#backend_uri ⇒ Object (readonly)
Returns the value of attribute backend_uri.
8 9 10 |
# File 'lib/pact/provider/pact_broker_proxy.rb', line 8 def backend_uri @backend_uri end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
8 9 10 |
# File 'lib/pact/provider/pact_broker_proxy.rb', line 8 def logger @logger end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
8 9 10 |
# File 'lib/pact/provider/pact_broker_proxy.rb', line 8 def path @path end |
Instance Method Details
#perform_request(env) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/pact/provider/pact_broker_proxy.rb', line 20 def perform_request(env) request = Rack::Request.new(env) env['rack.timeout'] ||= ENV.fetch('PACT_BROKER_REQUEST_TIMEOUT', 5).to_i @path = request.path super end |
#rewrite_env(env) ⇒ Object
28 29 30 31 |
# File 'lib/pact/provider/pact_broker_proxy.rb', line 28 def rewrite_env(env) env['HTTP_HOST'] = backend_uri.host env end |
#rewrite_response(triplet) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/pact/provider/pact_broker_proxy.rb', line 33 def rewrite_response(triplet) status, headers, body = triplet if status == '200' && PACT_FILE_REQUEST_PATH_REGEX.match?(path) patched_body = patch_response(body.first) # we need to recalculate content length headers[Rack::CONTENT_LENGTH] = patched_body.bytesize.to_s return [status, headers, [patched_body]] end triplet end |