class Solr4R::Response

Constants

DEFAULT_CHARSET

Attributes

request[R]
request_body[RW]
request_headers[RW]
request_method[RW]
request_params[RW]
request_url[RW]
response_body[RW]
response_charset[RW]
response_code[RW]
response_headers[RW]

Public Class Methods

new(request, req = nil, res = nil) click to toggle source
   # File lib/solr4r/response.rb
37 def initialize(request, req = nil, res = nil)
38   @request, @evaluate = request, req && req.response_body_permitted?
39 
40   if req
41     self.request_body    = req.body
42     self.request_headers = req.to_hash
43     self.request_method  = req.method.downcase.to_sym
44     self.request_params  = req.uri.params
45     self.request_url     = req.uri.to_s
46   end
47 
48   if res
49     self.response_body    = res.body
50     self.response_headers = res.to_hash
51     self.response_charset = res.type_params['charset']
52     self.response_code    = res.code.to_i
53   end
54 end

Public Instance Methods

inspect() click to toggle source
   # File lib/solr4r/response.rb
85 def inspect
86   '#<%s:0x%x @request_url=%p, @request_headers=%p, @response_headers=%p, @response_code=%p>' % [
87     self.class, object_id, request_url, request_headers, response_headers, response_code
88   ]
89 end
num_found() click to toggle source
   # File lib/solr4r/response.rb
75 def num_found
76   @num_found ||= evaluate_count('numFound') if @evaluate
77 end
Also aliased as: to_i
request_line() click to toggle source
   # File lib/solr4r/response.rb
63 def request_line
64   '"%s %s" %d' % [request_method.upcase, request_url, response_code]
65 end
result() click to toggle source
   # File lib/solr4r/response.rb
71 def result
72   @result ||= evaluate_result if @evaluate
73 end
success?() click to toggle source
   # File lib/solr4r/response.rb
67 def success?
68   response_code / 100 == 2
69 end
to_i()
Alias for: num_found
to_s() click to toggle source
   # File lib/solr4r/response.rb
81 def to_s
82   @to_s ||= response_body.to_s.force_encoding(response_charset || DEFAULT_CHARSET)
83 end

Private Instance Methods

evaluate_count(name) click to toggle source
    # File lib/solr4r/response.rb
102 def evaluate_count(name)
103   case wt = request_params[:wt]
104     when 'xml'  then extract_int(name, '\s%s="%s"')  #  numFound="35"
105     when 'ruby' then extract_int(name, "'%s'=>%s")   # 'numFound'=>35
106     when 'json' then extract_int(name, '"%s":%s')    # "numFound":35
107     when Symbol then result % ['response', name]     # {"response"=>{"numFound"=>35}}
108     else raise 'The count cannot be extracted: wt=%p not supported.' % wt
109   end
110 end
evaluate_result() click to toggle source
    # File lib/solr4r/response.rb
 93 def evaluate_result
 94   case wt = request_params[:wt]
 95     when String then to_s
 96     when :ruby  then result_object(eval(to_s))
 97     when :json  then result_object(JSON.parse(to_s))
 98     else raise 'The response cannot be evaluated: wt=%p not supported.' % wt
 99   end
100 end
extract_int(name, pattern) click to toggle source
    # File lib/solr4r/response.rb
112 def extract_int(name, pattern)
113   Integer(result[Regexp.new(pattern % [name, '(\d+)']), 1])
114 end
result_object(object) click to toggle source
    # File lib/solr4r/response.rb
116 def result_object(object)
117   object.is_a?(Hash) ? Result.new(self, object) : object
118 end