class PactBroker::Webhooks::WebhookRequestTemplate
Constants
- HEADERS_TO_REDACT
Attributes
body[RW]
headers[R]
http_method[RW]
method[RW]
password[RW]
url[RW]
username[RW]
uuid[RW]
Public Class Methods
new(attributes = {})
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 23 def initialize attributes = {} attributes.each do | (name, value) | instance_variable_set("@#{name}", value) if respond_to?(name) end @headers = Rack::Utils::HeaderHash.new(attributes[:headers] || {}) end
Public Instance Methods
body_string()
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 67 def body_string String === body ? body : body&.to_json end
body_template_parameters(scope = nil)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 79 def body_template_parameters(scope = nil) body_string.scan(parameter_pattern(scope)).flatten.uniq end
build(template_params, user_agent)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 30 def build(template_params, user_agent) attributes = { method: http_method, url: build_url(template_params), headers: build_headers(template_params), username: build_string(username, template_params), password: build_string(password, template_params), uuid: uuid, body: build_body(template_params), user_agent: user_agent } PactBroker::Domain::WebhookRequest.new(attributes) end
credentials_template_parameters(scope = nil)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 92 def credentials_template_parameters(scope = nil) pattern = parameter_pattern(scope) [username, password].compact.collect do | credential | credential.scan(pattern) end.flatten.uniq end
description()
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 44 def description "#{http_method.upcase} #{URI(PactBroker::Webhooks::Render.render_with_placeholder(url)).host}" end
display_password()
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 48 def display_password password.nil? ? nil : (PactBroker::Webhooks::Render.includes_parameter?(password) ? password : "**********") end
header_template_parameters(scope = nil)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 83 def header_template_parameters(scope = nil) pattern = parameter_pattern(scope) headers.values.collect { |value| value.scan(pattern) }.flatten.uniq end
headers=(headers)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 59 def headers= headers @headers = Rack::Utils::HeaderHash.new(headers) end
redacted_headers()
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 52 def redacted_headers headers.each_with_object({}) do | (name, value), new_headers | redact = HEADERS_TO_REDACT.any?{ | pattern | name =~ pattern } && !PactBroker::Webhooks::Render.includes_parameter?(value) new_headers[name] = redact ? "**********" : value end end
template_parameters(scope = nil)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 75 def template_parameters(scope = nil) body_template_parameters(scope) + url_template_parameters(scope) + header_template_parameters(scope) + credentials_template_parameters(scope) end
to_s()
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 71 def to_s "#{method.upcase} #{url}, username=#{username}, password=#{display_password}, headers=#{redacted_headers}, body=#{body}" end
url_template_parameters(scope = nil)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 88 def url_template_parameters(scope = nil) url.scan(parameter_pattern(scope)).flatten.uniq end
uses_parameter?(parameter_name)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 63 def uses_parameter?(parameter_name) !!body_string&.include?("${" + parameter_name + "}") end
Private Instance Methods
build_body(template_params)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 109 def build_body(template_params) body_string = String === body ? body : body.to_json build_string(body_string, template_params) end
build_headers(template_params)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 114 def build_headers(template_params) headers.each_with_object(Rack::Utils::HeaderHash.new) do | (key, value), new_headers | new_headers[key] = build_string(value, template_params) end end
build_string(string, template_params)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 120 def build_string(string, template_params) return string if string.nil? || string.blank? PactBroker::Webhooks::Render.call(string, template_params) end
build_url(template_params)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 105 def build_url(template_params) URI(PactBroker::Webhooks::Render.call(url, template_params){ | value | CGI::escape(value) if !value.nil? } ).to_s end
parameter_pattern(scope)
click to toggle source
# File lib/pact_broker/webhooks/webhook_request_template.rb, line 101 def parameter_pattern(scope) scope ? /\${(#{scope}\.[a-zA-z]+)}/ : /\${([a-zA-z]+\.[a-zA-z]+)}/ end