Sha256: 0312bf3e1879bb4cb019d2e6cf11be10f7f029f4a5e54e591ab11e06f1f4ef76

Contents?: true

Size: 701 Bytes

Versions: 1

Compression:

Stored size: 701 Bytes

Contents

# frozen_string_literal: true

module Elasticity
  class MultiSearchResponseParser
    class UnknownError < StandardError; end

    def self.parse(response, search)
      raise error_for(response["status"]), response.to_json if response["error"]

      case
      when search[:documents]
        Search::Results.new(response, search[:search_definition].body, search[:documents].method(:map_hit))
      when search[:active_records]
        Search::ActiveRecordProxy.map_response(search[:active_records], search[:search_definition].body, response)
      end
    end

    private

    def self.error_for(status)
      Elasticsearch::Transport::Transport::ERRORS[status] || UnknownError
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
es-elasticity-1.0.0 lib/elasticity/multi_search_response_parser.rb