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