class AlgoliaSearchErrorHandler
Helps in displaying useful error messages to users, to help them debug their issues
Public Instance Methods
display(file)
click to toggle source
Will output the specified error file. First line is displayed as error, next ones as warning
# File lib/error_handler.rb, line 9 def display(file) file = File.expand_path(File.join(File.dirname(__FILE__), '../txt', file)) content = File.open(file).readlines.map(&:chomp) content.each_with_index do |line, index| if index == 0 Jekyll.logger.error line next end Jekyll.logger.warn line end end
error_tester()
click to toggle source
# File lib/error_handler.rb, line 21 def error_tester # Ex: Cannot PUT to https://appid.algolia.net/1/indexes/index_name/settings: # {"message":"Invalid Application-ID or API key","status":403} (403) VerEx.new do find 'Cannot ' capture('verb') { word } find ' to ' capture('scheme') { word } find '://' capture('app_id') { word } anything_but '/' find '/' capture('api_version') { digit } find '/' capture('api_section') { word } find '/' capture('index_name') { word } find '/' capture('api_action') { word } find ': ' capture('json') do find '{' anything_but('}') find '}' end find ' (' capture('http_error') { word } find ')' end end
parse_algolia_error(error)
click to toggle source
# File lib/error_handler.rb, line 52 def parse_algolia_error(error) error.delete!("\n") tester = error_tester matches = tester.match(error) return false unless matches hash = {} matches.names.each do |match| hash[match] = matches[match] end # Cast integers hash['api_version'] = hash['api_version'].to_i hash['http_error'] = hash['http_error'].to_i # Parse JSON hash['json'] = JSON.parse(hash['json']) hash end
readable_algolia_error(error)
click to toggle source
Given an Algolia API error message, will return the best error message
# File lib/error_handler.rb, line 76 def readable_algolia_error(error) error = parse_algolia_error(error) return false unless error # Given API key does not have rights on the _tmp index if error['http_error'] == 403 && error['index_name'] =~ /_tmp$/ return 'check_key_acl_to_tmp_index' end false end