Sha256: d9fb844de3c6500cfaeb61db73252a4ab9e51d868ce8b52b934082e9b7522fa3

Contents?: true

Size: 1.25 KB

Versions: 8

Compression:

Stored size: 1.25 KB

Contents

require 'excon'

module Inquisitio
  class Indexer

    def self.index(documents)
      new(documents).index
    end

    def initialize(documents)
      raise InquisitioError.new("Document(s) is null") if documents.nil?
      raise InquisitioError.new("Document(s) is empty") unless documents.any?

      @documents = documents
    end

    def index
      Inquisitio.config.logger.info "Indexer posting to #{batch_index_url}"
      if Inquisitio.config.dry_run
        Inquisitio.config.logger.info "Skipping POST as running in dry-run mode"
      else
        post_to_endpoint
      end
    end

    private

    def body
      @body ||= "[#{@documents.map(&:to_SDF).join(", ")}]"
    end

    def batch_index_url
      "#{Inquisitio.config.document_endpoint}/#{Inquisitio.config.api_version}/documents/batch"
    end
      
    def post_to_endpoint
      response = Excon.post(batch_index_url,
                           :body => body,
                           :headers => {"Content-Type" =>"application/json"})
      Inquisitio.config.logger.info "Response - status: #{response.status}"
      raise InquisitioError.new("Index failed with status code: #{response.status} Message: #{response.body}") unless response.status == 200
      response.body
    end    
    
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
inquisitio-1.5.0 lib/inquisitio/indexer.rb
inquisitio-1.4.1 lib/inquisitio/indexer.rb
inquisitio-1.4.0 lib/inquisitio/indexer.rb
inquisitio-1.3.1 lib/inquisitio/indexer.rb
inquisitio-1.3.0 lib/inquisitio/indexer.rb
inquisitio-1.2.4 lib/inquisitio/indexer.rb
inquisitio-1.2.3 lib/inquisitio/indexer.rb
inquisitio-1.2.2 lib/inquisitio/indexer.rb