class ApiProxy::ResponseBuilder
Attributes
config[R]
env[R]
namespace[R]
Public Class Methods
new(env, namespace = :default)
click to toggle source
# File lib/api_proxy/response_builder.rb, line 9 def initialize(env, namespace = :default) @env = env @namespace = namespace @config = ApiProxy.configuration(namespace) end
Public Instance Methods
allow_request?()
click to toggle source
# File lib/api_proxy/response_builder.rb, line 15 def allow_request? return false unless request.path.start_with?(config.request_starts_with) config.request_allowed.call(@env) end
response()
click to toggle source
# File lib/api_proxy/response_builder.rb, line 21 def response Rack::Response.new( result.to_s, result.code, ApiProxy::HeadersFilter.new(result.headers).filter ) end
Private Instance Methods
filtered_params()
click to toggle source
# File lib/api_proxy/response_builder.rb, line 48 def filtered_params params.reject { |key, _value| config.reject_params.include?(key.to_s) } end
headers()
click to toggle source
# File lib/api_proxy/response_builder.rb, line 56 def headers config.custom_headers.call(env) end
options()
click to toggle source
# File lib/api_proxy/response_builder.rb, line 44 def options { namespace: namespace, body: filtered_params, headers: headers } end
params()
click to toggle source
# File lib/api_proxy/response_builder.rb, line 52 def params @params ||= (env['action_dispatch.request.request_parameters'].presence || request.params) end
request()
click to toggle source
# File lib/api_proxy/response_builder.rb, line 31 def request @request ||= Rack::Request.new(env) end
result()
click to toggle source
# File lib/api_proxy/response_builder.rb, line 35 def result @result ||= ApiProxy::SignedRequest.new(request.request_method, url, options).perform end
url()
click to toggle source
# File lib/api_proxy/response_builder.rb, line 39 def url path = request.path.gsub(config.request_starts_with, '') File.join(config.api_url.to_s, path) end