Class: RSolr::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/rsolr/json.rb

Instance Method Summary collapse

Instance Method Details

#adapt_response(request, response) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/rsolr/json.rb', line 21

def adapt_response request, response
  raise "The response does not have the correct keys => :body, :headers, :status" unless
  %W(body headers status) == response.keys.map{|k|k.to_s}.sort
  raise RSolr::Error::Http.new request, response unless [200,302].include? response[:status]
  case request[:params][:wt]
    when :ruby
      orig_adapt_response request, response
    when :json
      result = evaluate_json_response(request, response)
      result.extend Context
      result.request, result.response = request, response
      result.is_a?(Hash) ? result.extend(RSolr::Response) : result
    else
      orig_adapt_response request, response
  end
end

#build_request(path, opts) ⇒ Object



16
17
18
19
# File 'lib/rsolr/json.rb', line 16

def build_request path, opts
  opts[:params] = opts[:params].nil? ? {:wt => :json} : {:wt => :json}.merge(opts[:params])
  orig_build_request path, opts
end

#evaluate_json_response(request, response) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/rsolr/json.rb', line 38

def evaluate_json_response request, response
  begin
    MultiJson.load response[:body].to_s
  rescue MultiJson::LoadError
    raise RSolr::Error::InvalidRubyResponse.new request, response
  end
end

#orig_adapt_responseObject



14
# File 'lib/rsolr/json.rb', line 14

alias_method :orig_adapt_response, :adapt_response

#orig_build_requestObject



13
# File 'lib/rsolr/json.rb', line 13

alias_method :orig_build_request, :build_request