class Solr::Connection

low-level connection that can do network requests to Solr

Constants

INSTRUMENT_KEY

Public Class Methods

call(url:, method:, body:) click to toggle source
# File lib/solr/connection.rb, line 14
def self.call(url:, method:, body:)
  raise "HTTP method not supported: #{method}" unless [:get, :post].include?(method.to_sym)
  new(url).public_send(method, body)
end
new(url, faraday_options: Solr.configuration.faraday_options, faraday_configuration: Solr.configuration.faraday_configuration) click to toggle source
# File lib/solr/connection.rb, line 6
def initialize(url, faraday_options: Solr.configuration.faraday_options,
    faraday_configuration: Solr.configuration.faraday_configuration)
  # Allow mock the connection for testing
  @raw_connection = Solr.configuration.test_connection
  @raw_connection ||= build_faraday_connection(url, faraday_options, faraday_configuration)
  freeze
end

Public Instance Methods

get(_) click to toggle source
# File lib/solr/connection.rb, line 19
def get(_)
  Solr.instrument(name: INSTRUMENT_KEY) { @raw_connection.get }
end
post(data) click to toggle source
# File lib/solr/connection.rb, line 23
def post(data)
  Solr.instrument(name: INSTRUMENT_KEY, data: data) do
    @raw_connection.post do |req|
      req.headers['Content-Type'] = 'application/json'.freeze
      req.body = JSON.generate(data)
    end
  end
end

Private Instance Methods

build_faraday_connection(url, faraday_options, faraday_configuration) click to toggle source
# File lib/solr/connection.rb, line 34
def build_faraday_connection(url, faraday_options, faraday_configuration)
  connection = Faraday.new(url, faraday_options, &faraday_configuration)
  if Solr.configuration.auth_user && Solr.configuration.auth_password
    connection.basic_auth(Solr.configuration.auth_user, Solr.configuration.auth_password)
  end
  connection
end