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