class Europeana::API::Response
Attributes
error_message[R]
faraday_response[R]
request[R]
Public Class Methods
new(request, faraday_response)
click to toggle source
@param request [Europeana::API::Request] @param faraday_response
[Faraday::Response]
# File lib/europeana/api/response.rb, line 12 def initialize(request, faraday_response) @request = request @faraday_response = faraday_response @error_message = detect_error_message end
Public Instance Methods
detect_error_message()
click to toggle source
# File lib/europeana/api/response.rb, line 37 def detect_error_message return nil unless (400..599).cover?(status) if body.is_a?(Hash) && body.key?(:error) body[:error] else Rack::Utils::HTTP_STATUS_CODES[status] end end
validate!()
click to toggle source
# File lib/europeana/api/response.rb, line 18 def validate! return if body.is_a?(Hash) && body[:success] validate_endpoint_errors! validate_generic_errors! end
validate_endpoint_errors!()
click to toggle source
# File lib/europeana/api/response.rb, line 24 def validate_endpoint_errors! (endpoint[:errors] || {}).each_pair do |error_pattern, exception_class| fail exception_class.new(faraday_response), error_message if error_message =~ Regexp.new(error_pattern) end end
validate_generic_errors!()
click to toggle source
# File lib/europeana/api/response.rb, line 30 def validate_generic_errors! fail Errors::ResourceNotFoundError.new(faraday_response), error_message if status == 404 fail Errors::MissingAPIKeyError.new(faraday_response), error_message if status == 403 && error_message =~ /No API key/ fail Errors::ClientError.new(faraday_response), error_message if (400..499).cover?(status) fail Errors::ServerError.new(faraday_response), error_message if (500..599).cover?(status) end