Class: Committee::Middleware::ResponseValidation
- Defined in:
- lib/committee/middleware/response_validation.rb
Instance Method Summary collapse
- #handle(request) ⇒ Object
-
#initialize(app, options = {}) ⇒ ResponseValidation
constructor
A new instance of ResponseValidation.
- #validate?(status) ⇒ Boolean
Methods inherited from Base
Constructor Details
#initialize(app, options = {}) ⇒ ResponseValidation
Returns a new instance of ResponseValidation.
3 4 5 6 7 |
# File 'lib/committee/middleware/response_validation.rb', line 3 def initialize(app, ={}) super @raise = [:raise] @validate_errors = [:validate_errors] end |
Instance Method Details
#handle(request) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/committee/middleware/response_validation.rb', line 9 def handle(request) status, headers, response = @app.call(request.env) if validate?(status) && link = @router.find_request_link(request) full_body = "" response.each do |chunk| full_body << chunk end data = MultiJson.decode(full_body) Committee::ResponseValidator.new(link).call(status, headers, data) end [status, headers, response] rescue Committee::InvalidResponse raise if @raise render_error(500, :invalid_response, $!.) rescue MultiJson::LoadError raise Committee::InvalidResponse if @raise render_error(500, :invalid_response, "Response wasn't valid JSON.") end |
#validate?(status) ⇒ Boolean
30 31 32 |
# File 'lib/committee/middleware/response_validation.rb', line 30 def validate?(status) status != 204 and @validate_errors || (200...300).include?(status) end |