module Jekyll::Algolia::ErrorHandler

def self.record_too_big?(error, context = {})

informations about it so the user can debug it.
means that one of the records is too big, so we'll try to give
Records cannot weight more that 10Kb. If we're getting this error it

context[:records] - list of records sent in the batch

Public: Check if the sent records are not too big
def self.record_too_big?(error, context = {})
  details = error_hash(error.message)
  return false if details == false
  message = details['message']
  return false if message !~ /^Record .* is too big .*/
  # Getting the record size
  size, = /.*size=(.*) bytes.*/.match(message).captures
  size = Filesize.from("#{size} B").to_s('Kb')
  object_id = details['objectID']
  # Finding the record in all the operations
  operation = context[:operations].find do |o|
    o[:action] == 'addObject' && o[:body][:objectID] == object_id
  end
  record = operation[:body]
  probable_wrong_keys = readable_largest_record_keys(record)
  # Writing the full record to disk for inspection
  record_log_path = Logger.write_to_file(
    "jekyll-algolia-record-too-big-#{object_id}.log",
    JSON.pretty_generate(record)
  )
  {
    'object_id' => object_id,
    'object_title' => record[:title],
    'object_url' => record[:url],
    'probable_wrong_keys' => probable_wrong_keys,
    'record_log_path' => record_log_path,
    'nodes_to_index' => Configurator.algolia('nodes_to_index'),
    'size' => size,
    'size_limit' => '10 Kb'
  }
end