module Rack::Cargo::BatchProcessor
Constants
- ERROR_INVALID_BATCH
Public Class Methods
process(app, env)
click to toggle source
# File lib/rack/cargo/batch_processor.rb, line 9 def process(app, env) requests = RequestPayloadJSON.from_env(env) if RequestValidator.valid?(requests) results = process_requests(app, env, requests) success(results) else failure([ERROR_INVALID_BATCH]) end end
Private Class Methods
failure(errors)
click to toggle source
# File lib/rack/cargo/batch_processor.rb, line 56 def failure(errors) { success: false, errors: errors } end
process_request(app, env, request, previous_responses)
click to toggle source
# File lib/rack/cargo/batch_processor.rb, line 38 def process_request(app, env, request, previous_responses) initial_state = { app: app, env: env, previous_responses: previous_responses } result = processors.each_with_object(initial_state) do |proc, state| proc.call(request, state) end result[:response] end
process_requests(app, env, requests)
click to toggle source
# File lib/rack/cargo/batch_processor.rb, line 22 def process_requests(app, env, requests) previous_responses = {} requests.each do |request| response = process_request( app, env, request, previous_responses ) previous_responses[response.fetch("name")] = response end previous_responses.values end
processors()
click to toggle source
# File lib/rack/cargo/batch_processor.rb, line 60 def processors Rack::Cargo.config.processors end
success(responses)
click to toggle source
# File lib/rack/cargo/batch_processor.rb, line 52 def success(responses) { success: true, responses: responses } end