class CMIS::Connection::ResponseParser
Constants
- JSON_CONTENT_TYPE
Public Instance Methods
call(env)
click to toggle source
# File lib/cmis/connection/response_parser.rb, line 9 def call(env) response = @app.call(env) response.on_complete do |env| # Remove Authorization header when following redirects # This hack should be removed when issue #81 is merged # Cf. https://github.com/lostisland/faraday_middleware/pull/81 if [301, 302, 303, 307].include?(response.status) env[:request_headers].delete('Authorization') end case env[:status] when 401 raise Exceptions::Unauthorized else if env[:response_headers][:content_type] =~ JSON_CONTENT_TYPE parse_body(env) check_for_cmis_exception!(env[:body]) end end end rescue Faraday::ConnectionFailed raise Exceptions::Timeout end
Private Instance Methods
check_for_cmis_exception!(body)
click to toggle source
# File lib/cmis/connection/response_parser.rb, line 44 def check_for_cmis_exception!(body) return unless body.is_a?(Hash) if body.key?('exception') e, m, s = body.values_at('exception', 'message', 'stacktrace') raise exception_class(e), "[#{e}] #{m}\n#{s}" end end
exception_class(exception)
click to toggle source
# File lib/cmis/connection/response_parser.rb, line 53 def exception_class(exception) clazz = exception.dup clazz[0] = clazz[0].upcase CMIS::Exceptions.const_get(clazz) rescue Exception end
parse_body(env)
click to toggle source
# File lib/cmis/connection/response_parser.rb, line 38 def parse_body(env) unless env[:response_headers][:content_disposition] env[:body] = JSON.parse(env[:body]) end end