module Rack::PactBroker::RequestTarget
Constants
- API_CONTENT_TYPES
- WEB_ASSET_EXTENSIONS
Public Instance Methods
request_for_api?(env)
click to toggle source
# File lib/rack/pact_broker/request_target.rb, line 16 def request_for_api?(env) explicit_request_for_api(env) || no_accept_header(env) || is_badge_request?(env) || (accept_all(env) && !is_web_extension(env)) end
request_for_ui?(env)
click to toggle source
# File lib/rack/pact_broker/request_target.rb, line 12 def request_for_ui?(env) !(request_for_api?(env)) end
Private Instance Methods
accept_all(env)
click to toggle source
default curl Accept header Also used by browsers to request various web assets like woff files
# File lib/rack/pact_broker/request_target.rb, line 48 def accept_all(env) env["HTTP_ACCEPT"] == "*/*" end
accepts_api_content_type(env)
click to toggle source
# File lib/rack/pact_broker/request_target.rb, line 30 def accepts_api_content_type(env) is_api_content_type((env["HTTP_ACCEPT"]&.downcase) || "") end
body_is_api_content_type(env)
click to toggle source
# File lib/rack/pact_broker/request_target.rb, line 34 def body_is_api_content_type(env) is_api_content_type((env["CONTENT_TYPE"]&.downcase) || "") end
body_is_json(env)
click to toggle source
# File lib/rack/pact_broker/request_target.rb, line 22 def body_is_json(env) env["CONTENT_TYPE"]&.include?("json") end
explicit_request_for_api(env)
click to toggle source
# File lib/rack/pact_broker/request_target.rb, line 26 def explicit_request_for_api(env) accepts_api_content_type(env) || body_is_api_content_type(env) end
is_api_content_type(header)
click to toggle source
# File lib/rack/pact_broker/request_target.rb, line 38 def is_api_content_type(header) API_CONTENT_TYPES.any?{ |content_type| header.include?(content_type) } end
is_badge_request?(env)
click to toggle source
# File lib/rack/pact_broker/request_target.rb, line 42 def is_badge_request?(env) env["HTTP_ACCEPT"].include?("svg") && ::PactBroker::Api::Paths.is_badge_path?(env["PATH_INFO"]) end
is_web_extension(env)
click to toggle source
# File lib/rack/pact_broker/request_target.rb, line 58 def is_web_extension(env) env["PATH_INFO"].end_with?(*WEB_ASSET_EXTENSIONS) end
no_accept_header(env)
click to toggle source
No browser ever makes a request without an accept header, so it must be an API request if there is no Accept header
# File lib/rack/pact_broker/request_target.rb, line 54 def no_accept_header(env) env["HTTP_ACCEPT"] == nil || env["HTTP_ACCEPT"] == "" end