class ParallelBatchApi::RackProcessor
Attributes
app[R]
env[R]
headers[R]
method[R]
params[R]
url[R]
Public Class Methods
new(env, options, app)
click to toggle source
# File lib/parallel_batch_api/rack_processor.rb, line 8 def initialize(env, options, app) @method = options['method'] || ParallelBatchApi::HTTP_METHOD_GET @url = options['url'] @params = options['params'] || {} @env = env @headers = options['headers'] || {} @app = app @params = params_for_rails end
Public Instance Methods
build()
click to toggle source
set value into @env
# File lib/parallel_batch_api/rack_processor.rb, line 30 def build path, qs = url.split('?') headrs = (headers || {}).inject({}) do |heads, (k, v)| heads.tap { |h| h["HTTP_#{k.gsub(/\-/, '_').upcase}"] = v } end env.merge!(headrs) env['REQUEST_METHOD'] = method.upcase if env['REQUEST_URI'] env['REQUEST_URI'] = env['REQUEST_URI'].gsub(/#{ParallelBatchApi.batch_path}.*/, url) end env['REQUEST_PATH'] = env['PATH_INFO'] = path env['ORIGINAL_FULLPATH'] = url env['rack.request.query_string'] = qs env['QUERY_STRING'] = qs env['rack.request.form_hash'] = params env['rack.request.query_hash'] = method == ParallelBatchApi::HTTP_METHOD_GET ? params : nil env['action_dispatch.request.parameters'] = params env['action_dispatch.request.request_parameters'] = params env['CONTENT_TYPE'] = 'text/plain' env['HTTP_CONTENT_TYPE'] = 'text/plain' env['ROW_POST_DATA'] = '' end
process()
click to toggle source
# File lib/parallel_batch_api/rack_processor.rb, line 18 def process build res = begin app.call(env) rescue => er ParallelBatchApi::ErrorResponse.new(er).execute end ParallelBatchApi::Response.new(res, url, params).execute end
Private Instance Methods
params_for_rails()
click to toggle source
# File lib/parallel_batch_api/rack_processor.rb, line 64 def params_for_rails path_params = Rails.application.routes.recognize_path(url) params.merge(path_params) rescue params end