class Rack::PactBroker::InvalidUriProtection
Attributes
app[R]
Public Class Methods
new(app)
click to toggle source
# File lib/rack/pact_broker/invalid_uri_protection.rb, line 15 def initialize app @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack/pact_broker/invalid_uri_protection.rb, line 19 def call env if (uri = valid_uri?(env)) if (error_message = validate(uri)) [422, {"Content-Type" => "text/plain"}, [error_message]] else app.call(env) end else [404, {}, []] end end
Private Instance Methods
parse(uri)
click to toggle source
# File lib/rack/pact_broker/invalid_uri_protection.rb, line 43 def parse uri URI.parse(uri) end
valid_uri?(env)
click to toggle source
# File lib/rack/pact_broker/invalid_uri_protection.rb, line 35 def valid_uri? env begin parse(::Rack::Request.new(env).url) rescue URI::InvalidURIError, ArgumentError nil end end
validate(uri)
click to toggle source
# File lib/rack/pact_broker/invalid_uri_protection.rb, line 47 def validate(uri) decoded_path = URI.decode(uri.path) if decoded_path.include?("\n") message("errors.new_line_in_url_path") elsif decoded_path.include?("\t") message("errors.tab_in_url_path") end end