class Committee::Middleware::ResponseValidation
Attributes
Public Class Methods
Source
# File lib/committee/middleware/response_validation.rb, line 8 def initialize(app, options = {}) super @strict = options[:strict] @validate_success_only = @schema.validator_option.validate_success_only end
Calls superclass method
Committee::Middleware::Base::new
Source
# File lib/committee/middleware/response_validation.rb, line 37 def validate?(status, validate_success_only) case status when 204 false when 200..299 true when 304 false else !validate_success_only end end
Public Instance Methods
Source
# File lib/committee/middleware/response_validation.rb, line 14 def handle(request) status, headers, response = @app.call(request.env) begin v = build_schema_validator(request) v.response_validate(status, headers, response, @strict) if v.link_exist? && self.class.validate?(status, validate_success_only) rescue Committee::InvalidResponse handle_exception($!, request.env) raise if @raise return @error_class.new(500, :invalid_response, $!.message).render unless @ignore_error rescue JSON::ParserError handle_exception($!, request.env) raise Committee::InvalidResponse if @raise return @error_class.new(500, :invalid_response, "Response wasn't valid JSON.").render unless @ignore_error end [status, headers, response] end
Private Instance Methods
Source
# File lib/committee/middleware/response_validation.rb, line 53 def handle_exception(e, env) @error_handler.call(e, env) if @error_handler end