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_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