class Solr4R::Request
Constants
- DEFAULT_METHOD
- DEFAULT_USER_AGENT
Attributes
base_uri[RW]
client[R]
http[RW]
http_options[RW]
last_response[RW]
Public Class Methods
new(client, base_uri, http_options = {})
click to toggle source
# File lib/solr4r/request.rb 40 def initialize(client, base_uri, http_options = {}) 41 @client, self.base_uri, self.http_options = client, 42 URI(base_uri).extend(BaseUriExtension), http_options 43 end
Public Instance Methods
execute(path, options = {}, &block)
click to toggle source
# File lib/solr4r/request.rb 65 def execute(path, options = {}, &block) 66 start unless started? 67 68 self.last_response = nil 69 70 req = prepare_request(path, options, &block) 71 res = http.request(req) 72 73 self.last_response = Response.new(self, req, res) 74 end
finish()
click to toggle source
# File lib/solr4r/request.rb 56 def finish 57 http.finish if started? 58 self 59 end
inspect()
click to toggle source
# File lib/solr4r/request.rb 80 def inspect 81 '#<%s:0x%x %s>' % [self.class, object_id, request_line] 82 end
request_line()
click to toggle source
# File lib/solr4r/request.rb 76 def request_line 77 last_response ? last_response.request_line : "[#{base_uri}]" 78 end
start()
click to toggle source
# File lib/solr4r/request.rb 49 def start 50 self.http = Net::HTTP.start(base_uri.hostname, base_uri.port, 51 { use_ssl: base_uri.scheme == 'https' }.merge(http_options)) 52 53 self 54 end
started?()
click to toggle source
# File lib/solr4r/request.rb 61 def started? 62 http && http.started? 63 end
Private Instance Methods
make_request(uri, method)
click to toggle source
# File lib/solr4r/request.rb 102 def make_request(uri, method) 103 req = Net::HTTP.const_get(method.to_s.capitalize).new(uri) 104 req.uri.extend(RequestUriExtension).params = uri.params 105 req 106 end
make_uri(path, params)
click to toggle source
# File lib/solr4r/request.rb 98 def make_uri(path, params) 99 base_uri.merge(path).extend(RequestUriExtension).with_params(params) 100 end
prepare_request(path, options) { |req| ... }
click to toggle source
# File lib/solr4r/request.rb 86 def prepare_request(path, options) 87 uri = make_uri(path, options.fetch(:params, {})) 88 req = make_request(uri, options.fetch(:method, DEFAULT_METHOD)) 89 90 set_data(req, options.fetch(:data, {})) if req.request_body_permitted? 91 set_headers(req, options.fetch(:headers, {})) 92 93 yield req if block_given? 94 95 req 96 end
set_data(req, data)
click to toggle source
# File lib/solr4r/request.rb 115 def set_data(req, data) 116 data.is_a?(String) ? req.body = data : req.form_data = data 117 end
set_headers(req, headers)
click to toggle source
# File lib/solr4r/request.rb 108 def set_headers(req, headers) 109 req['User-Agent'] = DEFAULT_USER_AGENT 110 111 headers.each { |key, value| 112 Array(value).each { |val| req.add_field(key, val) } } 113 end