Class: Committee::Middleware::ResponseValidation
- Defined in:
- lib/committee/middleware/response_validation.rb
Instance Attribute Summary collapse
-
#validate_errors ⇒ Object
readonly
Returns the value of attribute validate_errors.
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.
5 6 7 8 |
# File 'lib/committee/middleware/response_validation.rb', line 5 def initialize(app, = {}) super @validate_errors = [:validate_errors] end |
Instance Attribute Details
#validate_errors ⇒ Object (readonly)
Returns the value of attribute validate_errors.
3 4 5 |
# File 'lib/committee/middleware/response_validation.rb', line 3 def validate_errors @validate_errors end |
Instance Method Details
#handle(request) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/committee/middleware/response_validation.rb', line 10 def handle(request) status, headers, response = @app.call(request.env) link, _ = @router.find_request_link(request) if validate?(status) && link full_body = "" response.each do |chunk| full_body << chunk end data = JSON.parse(full_body) Committee::ResponseValidator.new(link, validate_errors: validate_errors).call(status, headers, data) end [status, headers, response] rescue Committee::InvalidResponse raise if @raise @error_class.new(500, :invalid_response, $!.).render rescue JSON::ParserError raise Committee::InvalidResponse if @raise @error_class.new(500, :invalid_response, "Response wasn't valid JSON.").render end |
#validate?(status) ⇒ Boolean
32 33 34 |
# File 'lib/committee/middleware/response_validation.rb', line 32 def validate?(status) Committee::ResponseValidator.validate?(status, validate_errors: validate_errors) end |