rsolr 1.1.1.pre1 → 1.1.1.pre2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/rsolr/client.rb +41 -38
 - data/lib/rsolr/connection.rb +15 -17
 - data/lib/rsolr/version.rb +1 -1
 - data/lib/rsolr/xml.rb +6 -3
 - data/spec/api/client_spec.rb +81 -50
 - data/spec/api/connection_spec.rb +33 -7
 - data/spec/api/pagination_spec.rb +7 -0
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: bb1fa153ec3008beae75f53b9bb5e278bd68e2c3
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: ba02544b8e06337e000b58c659d0d253b7c1315d
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 3c4d111f9477a3f7d3e4b47295e33153e3c1579cc3814fc4d85245ee862f255c3b69e1e350d2d1464c0411d8d8a8aee0a3c0c307f0d47981c67cf239b3df8bd6
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: be60888b05bd5184e61c090e80d82a3b7389abb06af77eea06d75c1ea45c50eda1d2672cadcd2432f8e02d6a33f12895e9dbd55981857f7106c593499f35b3fb
         
     | 
    
        data/lib/rsolr/client.rb
    CHANGED
    
    | 
         @@ -14,9 +14,9 @@ class RSolr::Client 
     | 
|
| 
       14 
14 
     | 
    
         
             
                  @default_wt = value
         
     | 
| 
       15 
15 
     | 
    
         
             
                end
         
     | 
| 
       16 
16 
     | 
    
         
             
              end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
       18 
18 
     | 
    
         
             
              attr_reader :connection, :uri, :proxy, :options, :update_path
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
       20 
20 
     | 
    
         
             
              def initialize connection, options = {}
         
     | 
| 
       21 
21 
     | 
    
         
             
                @proxy = @uri = nil
         
     | 
| 
       22 
22 
     | 
    
         
             
                @connection = connection
         
     | 
| 
         @@ -28,23 +28,24 @@ class RSolr::Client 
     | 
|
| 
       28 
28 
     | 
    
         
             
                    proxy_url = options[:proxy].dup
         
     | 
| 
       29 
29 
     | 
    
         
             
                    proxy_url << "/" unless proxy_url.nil? or proxy_url[-1] == ?/
         
     | 
| 
       30 
30 
     | 
    
         
             
                    @proxy = RSolr::Uri.create proxy_url if proxy_url
         
     | 
| 
      
 31 
     | 
    
         
            +
                  elsif options[:proxy] == false
         
     | 
| 
      
 32 
     | 
    
         
            +
                    @proxy = false  # used to avoid setting the proxy from the environment.
         
     | 
| 
       31 
33 
     | 
    
         
             
                  end
         
     | 
| 
       32 
34 
     | 
    
         
             
                end
         
     | 
| 
       33 
35 
     | 
    
         
             
                @update_path = options.fetch(:update_path, 'update')
         
     | 
| 
       34 
36 
     | 
    
         
             
                @options = options
         
     | 
| 
       35 
37 
     | 
    
         
             
              end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
       37 
39 
     | 
    
         
             
              # returns the request uri object.
         
     | 
| 
       38 
40 
     | 
    
         
             
              def base_request_uri
         
     | 
| 
       39 
41 
     | 
    
         
             
                base_uri.request_uri if base_uri
         
     | 
| 
       40 
42 
     | 
    
         
             
              end
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
              # returns the uri  
     | 
| 
       43 
     | 
    
         
            -
              # otherwise just the uri object.
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
              # returns the RSolr::URI uri object.
         
     | 
| 
       44 
45 
     | 
    
         
             
              def base_uri
         
     | 
| 
       45 
     | 
    
         
            -
                @ 
     | 
| 
      
 46 
     | 
    
         
            +
                @uri
         
     | 
| 
       46 
47 
     | 
    
         
             
              end
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
       48 
49 
     | 
    
         
             
              # Create the get, post, and head methods
         
     | 
| 
       49 
50 
     | 
    
         
             
              %W(get post head).each do |meth|
         
     | 
| 
       50 
51 
     | 
    
         
             
                class_eval <<-RUBY
         
     | 
| 
         @@ -53,7 +54,7 @@ class RSolr::Client 
     | 
|
| 
       53 
54 
     | 
    
         
             
                end
         
     | 
| 
       54 
55 
     | 
    
         
             
                RUBY
         
     | 
| 
       55 
56 
     | 
    
         
             
              end
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
       57 
58 
     | 
    
         
             
              # A paginated request method.
         
     | 
| 
       58 
59 
     | 
    
         
             
              # Converts the page and per_page
         
     | 
| 
       59 
60 
     | 
    
         
             
              # arguments into "rows" and "start".
         
     | 
| 
         @@ -63,9 +64,9 @@ class RSolr::Client 
     | 
|
| 
       63 
64 
     | 
    
         
             
                raise "'rows' or 'start' params should not be set when using +paginate+" if ["start", "rows"].include?(opts[:params].keys)
         
     | 
| 
       64 
65 
     | 
    
         
             
                execute build_paginated_request(page, per_page, path, opts)
         
     | 
| 
       65 
66 
     | 
    
         
             
              end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
       67 
68 
     | 
    
         
             
              # POST XML messages to /update with optional params.
         
     | 
| 
       68 
     | 
    
         
            -
              # 
     | 
| 
      
 69 
     | 
    
         
            +
              #
         
     | 
| 
       69 
70 
     | 
    
         
             
              # http://wiki.apache.org/solr/UpdateXmlMessages#add.2BAC8-update
         
     | 
| 
       70 
71 
     | 
    
         
             
              #
         
     | 
| 
       71 
72 
     | 
    
         
             
              # If not set, opts[:headers] will be set to a hash with the key
         
     | 
| 
         @@ -82,22 +83,22 @@ class RSolr::Client 
     | 
|
| 
       82 
83 
     | 
    
         
             
                opts[:headers]['Content-Type'] ||= 'text/xml'
         
     | 
| 
       83 
84 
     | 
    
         
             
                post opts.fetch(:path, update_path), opts
         
     | 
| 
       84 
85 
     | 
    
         
             
              end
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
              # 
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
              #
         
     | 
| 
       87 
88 
     | 
    
         
             
              # +add+ creates xml "add" documents and sends the xml data to the +update+ method
         
     | 
| 
       88 
     | 
    
         
            -
              # 
     | 
| 
      
 89 
     | 
    
         
            +
              #
         
     | 
| 
       89 
90 
     | 
    
         
             
              # http://wiki.apache.org/solr/UpdateXmlMessages#add.2BAC8-update
         
     | 
| 
       90 
     | 
    
         
            -
              # 
     | 
| 
      
 91 
     | 
    
         
            +
              #
         
     | 
| 
       91 
92 
     | 
    
         
             
              # single record:
         
     | 
| 
       92 
     | 
    
         
            -
              # solr. 
     | 
| 
      
 93 
     | 
    
         
            +
              # solr.add(:id=>1, :name=>'one')
         
     | 
| 
      
 94 
     | 
    
         
            +
              #
         
     | 
| 
      
 95 
     | 
    
         
            +
              # add using an array
         
     | 
| 
       93 
96 
     | 
    
         
             
              #
         
     | 
| 
       94 
     | 
    
         
            -
              #  
     | 
| 
       95 
     | 
    
         
            -
              # 
         
     | 
| 
       96 
     | 
    
         
            -
              # solr.update(
         
     | 
| 
      
 97 
     | 
    
         
            +
              # solr.add(
         
     | 
| 
       97 
98 
     | 
    
         
             
              #   [{:id=>1, :name=>'one'}, {:id=>2, :name=>'two'}],
         
     | 
| 
       98 
99 
     | 
    
         
             
              #   :add_attributes => {:boost=>5.0, :commitWithin=>10}
         
     | 
| 
       99 
100 
     | 
    
         
             
              # )
         
     | 
| 
       100 
     | 
    
         
            -
              # 
     | 
| 
      
 101 
     | 
    
         
            +
              #
         
     | 
| 
       101 
102 
     | 
    
         
             
              def add doc, opts = {}
         
     | 
| 
       102 
103 
     | 
    
         
             
                add_attributes = opts.delete :add_attributes
         
     | 
| 
       103 
104 
     | 
    
         
             
                update opts.merge(:data => xml.add(doc, add_attributes))
         
     | 
| 
         @@ -120,16 +121,16 @@ class RSolr::Client 
     | 
|
| 
       120 
121 
     | 
    
         
             
                optimize_attributes = opts.delete :optimize_attributes
         
     | 
| 
       121 
122 
     | 
    
         
             
                update opts.merge(:data => xml.optimize(optimize_attributes))
         
     | 
| 
       122 
123 
     | 
    
         
             
              end
         
     | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
       124 
125 
     | 
    
         
             
              # send </rollback>
         
     | 
| 
       125 
     | 
    
         
            -
              # 
     | 
| 
      
 126 
     | 
    
         
            +
              #
         
     | 
| 
       126 
127 
     | 
    
         
             
              # http://wiki.apache.org/solr/UpdateXmlMessages#A.22rollback.22
         
     | 
| 
       127 
     | 
    
         
            -
              # 
     | 
| 
      
 128 
     | 
    
         
            +
              #
         
     | 
| 
       128 
129 
     | 
    
         
             
              # NOTE: solr 1.4 only
         
     | 
| 
       129 
130 
     | 
    
         
             
              def rollback opts = {}
         
     | 
| 
       130 
131 
     | 
    
         
             
                update opts.merge(:data => xml.rollback)
         
     | 
| 
       131 
132 
     | 
    
         
             
              end
         
     | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
       133 
134 
     | 
    
         
             
              # Delete one or many documents by id
         
     | 
| 
       134 
135 
     | 
    
         
             
              #   solr.delete_by_id 10
         
     | 
| 
       135 
136 
     | 
    
         
             
              #   solr.delete_by_id([12, 41, 199])
         
     | 
| 
         @@ -138,22 +139,22 @@ class RSolr::Client 
     | 
|
| 
       138 
139 
     | 
    
         
             
              end
         
     | 
| 
       139 
140 
     | 
    
         | 
| 
       140 
141 
     | 
    
         
             
              # delete one or many documents by query.
         
     | 
| 
       141 
     | 
    
         
            -
              # 
     | 
| 
      
 142 
     | 
    
         
            +
              #
         
     | 
| 
       142 
143 
     | 
    
         
             
              # http://wiki.apache.org/solr/UpdateXmlMessages#A.22delete.22_by_ID_and_by_Query
         
     | 
| 
       143 
     | 
    
         
            -
              # 
     | 
| 
      
 144 
     | 
    
         
            +
              #
         
     | 
| 
       144 
145 
     | 
    
         
             
              #   solr.delete_by_query 'available:0'
         
     | 
| 
       145 
146 
     | 
    
         
             
              #   solr.delete_by_query ['quantity:0', 'manu:"FQ"']
         
     | 
| 
       146 
147 
     | 
    
         
             
              def delete_by_query query, opts = {}
         
     | 
| 
       147 
148 
     | 
    
         
             
                update opts.merge(:data => xml.delete_by_query(query))
         
     | 
| 
       148 
149 
     | 
    
         
             
              end
         
     | 
| 
       149 
     | 
    
         
            -
             
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
       150 
151 
     | 
    
         
             
              # shortcut to RSolr::Xml::Generator
         
     | 
| 
       151 
152 
     | 
    
         
             
              def xml
         
     | 
| 
       152 
153 
     | 
    
         
             
                @xml ||= RSolr::Xml::Generator.new
         
     | 
| 
       153 
154 
     | 
    
         
             
              end
         
     | 
| 
       154 
     | 
    
         
            -
             
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
       155 
156 
     | 
    
         
             
              # +send_and_receive+ is the main request method responsible for sending requests to the +connection+ object.
         
     | 
| 
       156 
     | 
    
         
            -
              # 
     | 
| 
      
 157 
     | 
    
         
            +
              #
         
     | 
| 
       157 
158 
     | 
    
         
             
              # "path" : A string value that usually represents a solr request handler
         
     | 
| 
       158 
159 
     | 
    
         
             
              # "opts" : A hash, which can contain the following keys:
         
     | 
| 
       159 
160 
     | 
    
         
             
              #   :method : required - the http method (:get, :post or :head)
         
     | 
| 
         @@ -161,7 +162,7 @@ class RSolr::Client 
     | 
|
| 
       161 
162 
     | 
    
         
             
              #   :data : optional - post data -- if a hash is given, it's sent as "application/x-www-form-urlencoded; charset=UTF-8"
         
     | 
| 
       162 
163 
     | 
    
         
             
              #   :headers : optional - hash of request headers
         
     | 
| 
       163 
164 
     | 
    
         
             
              # All other options are passed right along to the connection's +send_and_receive+ method (:get, :post, or :head)
         
     | 
| 
       164 
     | 
    
         
            -
              # 
     | 
| 
      
 165 
     | 
    
         
            +
              #
         
     | 
| 
       165 
166 
     | 
    
         
             
              # +send_and_receive+ returns either a string or hash on a successful ruby request.
         
     | 
| 
       166 
167 
     | 
    
         
             
              # When the :params[:wt] => :ruby, the response will be a hash, else a string.
         
     | 
| 
       167 
168 
     | 
    
         
             
              #
         
     | 
| 
         @@ -171,13 +172,10 @@ class RSolr::Client 
     | 
|
| 
       171 
172 
     | 
    
         
             
              # then passes the request/response into +adapt_response+.
         
     | 
| 
       172 
173 
     | 
    
         
             
              def send_and_receive path, opts
         
     | 
| 
       173 
174 
     | 
    
         
             
                request_context = build_request path, opts
         
     | 
| 
       174 
     | 
    
         
            -
                [:open_timeout, :read_timeout, :retry_503, :retry_after_limit].each do |k|
         
     | 
| 
       175 
     | 
    
         
            -
                  request_context[k] = @options[k]
         
     | 
| 
       176 
     | 
    
         
            -
                end
         
     | 
| 
       177 
175 
     | 
    
         
             
                execute request_context
         
     | 
| 
       178 
176 
     | 
    
         
             
              end
         
     | 
| 
       179 
     | 
    
         
            -
             
     | 
| 
       180 
     | 
    
         
            -
              # 
     | 
| 
      
 177 
     | 
    
         
            +
             
     | 
| 
      
 178 
     | 
    
         
            +
              #
         
     | 
| 
       181 
179 
     | 
    
         
             
              def execute request_context
         
     | 
| 
       182 
180 
     | 
    
         | 
| 
       183 
181 
     | 
    
         
             
                raw_response = connection.execute self, request_context
         
     | 
| 
         @@ -214,13 +212,13 @@ class RSolr::Client 
     | 
|
| 
       214 
212 
     | 
    
         
             
                    retry_after_date = DateTime.parse(retry_after)
         
     | 
| 
       215 
213 
     | 
    
         
             
                    retry_after = retry_after_date.to_time - Time.now
         
     | 
| 
       216 
214 
     | 
    
         
             
                    retry_after = nil if retry_after < 0
         
     | 
| 
       217 
     | 
    
         
            -
                  rescue ArgumentError 
     | 
| 
      
 215 
     | 
    
         
            +
                  rescue ArgumentError
         
     | 
| 
       218 
216 
     | 
    
         
             
                    retry_after = retry_after.to_i
         
     | 
| 
       219 
217 
     | 
    
         
             
                  end
         
     | 
| 
       220 
218 
     | 
    
         
             
                end
         
     | 
| 
       221 
219 
     | 
    
         
             
                retry_after
         
     | 
| 
       222 
220 
     | 
    
         
             
              end
         
     | 
| 
       223 
     | 
    
         
            -
             
     | 
| 
      
 221 
     | 
    
         
            +
             
     | 
| 
       224 
222 
     | 
    
         
             
              # +build_request+ accepts a path and options hash,
         
     | 
| 
       225 
223 
     | 
    
         
             
              # then prepares a normalized hash to return for sending
         
     | 
| 
       226 
224 
     | 
    
         
             
              # to a solr connection driver.
         
     | 
| 
         @@ -251,6 +249,11 @@ class RSolr::Client 
     | 
|
| 
       251 
249 
     | 
    
         
             
                end
         
     | 
| 
       252 
250 
     | 
    
         
             
                opts[:path] = path
         
     | 
| 
       253 
251 
     | 
    
         
             
                opts[:uri] = base_uri.merge(path.to_s + (query ? "?#{query}" : "")) if base_uri
         
     | 
| 
      
 252 
     | 
    
         
            +
             
     | 
| 
      
 253 
     | 
    
         
            +
                [:open_timeout, :read_timeout, :retry_503, :retry_after_limit].each do |k|
         
     | 
| 
      
 254 
     | 
    
         
            +
                  opts[k] = @options[k]
         
     | 
| 
      
 255 
     | 
    
         
            +
                end
         
     | 
| 
      
 256 
     | 
    
         
            +
             
     | 
| 
       254 
257 
     | 
    
         
             
                opts
         
     | 
| 
       255 
258 
     | 
    
         
             
              end
         
     | 
| 
       256 
259 
     | 
    
         | 
| 
         @@ -307,7 +310,7 @@ class RSolr::Client 
     | 
|
| 
       307 
310 
     | 
    
         
             
                  send_and_receive name, *args
         
     | 
| 
       308 
311 
     | 
    
         
             
                end
         
     | 
| 
       309 
312 
     | 
    
         
             
              end
         
     | 
| 
       310 
     | 
    
         
            -
             
     | 
| 
      
 313 
     | 
    
         
            +
             
     | 
| 
       311 
314 
     | 
    
         
             
              # evaluates the response[:body],
         
     | 
| 
       312 
315 
     | 
    
         
             
              # attempts to bring the ruby string to life.
         
     | 
| 
       313 
316 
     | 
    
         
             
              # If a SyntaxError is raised, then
         
     | 
    
        data/lib/rsolr/connection.rb
    CHANGED
    
    | 
         @@ -15,7 +15,7 @@ class RSolr::Connection 
     | 
|
| 
       15 
15 
     | 
    
         
             
                  response = h.request request
         
     | 
| 
       16 
16 
     | 
    
         
             
                  charset = response.type_params["charset"]
         
     | 
| 
       17 
17 
     | 
    
         
             
                  {:status => response.code.to_i, :headers => response.to_hash, :body => force_charset(response.body, charset)}
         
     | 
| 
       18 
     | 
    
         
            -
                rescue Errno::ECONNREFUSED 
     | 
| 
      
 18 
     | 
    
         
            +
                rescue Errno::ECONNREFUSED
         
     | 
| 
       19 
19 
     | 
    
         
             
                  raise RSolr::Error::ConnectionRefused, request_context.inspect
         
     | 
| 
       20 
20 
     | 
    
         
             
                # catch the undefined closed? exception -- this is a confirmed ruby bug
         
     | 
| 
       21 
21 
     | 
    
         
             
                rescue NoMethodError => e
         
     | 
| 
         @@ -29,22 +29,20 @@ class RSolr::Connection 
     | 
|
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
              # This returns a singleton of a Net::HTTP or Net::HTTP.Proxy request object.
         
     | 
| 
       31 
31 
     | 
    
         
             
              def http uri, proxy = nil, read_timeout = nil, open_timeout = nil
         
     | 
| 
       32 
     | 
    
         
            -
                 
     | 
| 
       33 
     | 
    
         
            -
                   
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                   
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                   
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                  http
         
     | 
| 
       47 
     | 
    
         
            -
                )
         
     | 
| 
      
 32 
     | 
    
         
            +
                http = if proxy
         
     | 
| 
      
 33 
     | 
    
         
            +
                  proxy_user, proxy_pass = proxy.userinfo.split(/:/) if proxy.userinfo
         
     | 
| 
      
 34 
     | 
    
         
            +
                  Net::HTTP.Proxy(proxy.host, proxy.port, proxy_user, proxy_pass).new uri.host, uri.port
         
     | 
| 
      
 35 
     | 
    
         
            +
                elsif proxy == false
         
     | 
| 
      
 36 
     | 
    
         
            +
                  # If explicitly passing in false, make sure we set proxy_addr to nil
         
     | 
| 
      
 37 
     | 
    
         
            +
                  # to tell Net::HTTP to *not* use the environment proxy variables.
         
     | 
| 
      
 38 
     | 
    
         
            +
                  Net::HTTP.new uri.host, uri.port, nil
         
     | 
| 
      
 39 
     | 
    
         
            +
                else
         
     | 
| 
      
 40 
     | 
    
         
            +
                  Net::HTTP.new uri.host, uri.port
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
                http.use_ssl = uri.port == 443 || uri.instance_of?(URI::HTTPS)
         
     | 
| 
      
 43 
     | 
    
         
            +
                http.read_timeout = read_timeout if read_timeout
         
     | 
| 
      
 44 
     | 
    
         
            +
                http.open_timeout = open_timeout if open_timeout
         
     | 
| 
      
 45 
     | 
    
         
            +
                http
         
     | 
| 
       48 
46 
     | 
    
         
             
              end
         
     | 
| 
       49 
47 
     | 
    
         | 
| 
       50 
48 
     | 
    
         
             
              #
         
     | 
    
        data/lib/rsolr/version.rb
    CHANGED
    
    
    
        data/lib/rsolr/xml.rb
    CHANGED
    
    | 
         @@ -51,10 +51,13 @@ module RSolr::Xml 
     | 
|
| 
       51 
51 
     | 
    
         
             
                private
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
       53 
53 
     | 
    
         
             
                def format_value(v)
         
     | 
| 
       54 
     | 
    
         
            -
                   
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
      
 54 
     | 
    
         
            +
                  case v
         
     | 
| 
      
 55 
     | 
    
         
            +
                  when Time
         
     | 
| 
      
 56 
     | 
    
         
            +
                    v.getutc.iso8601
         
     | 
| 
      
 57 
     | 
    
         
            +
                  when DateTime
         
     | 
| 
       57 
58 
     | 
    
         
             
                    v.to_time.getutc.iso8601
         
     | 
| 
      
 59 
     | 
    
         
            +
                  when Date
         
     | 
| 
      
 60 
     | 
    
         
            +
                    Time.utc(v.year, v.mon, v.mday).iso8601
         
     | 
| 
       58 
61 
     | 
    
         
             
                  else
         
     | 
| 
       59 
62 
     | 
    
         
             
                    v.to_s
         
     | 
| 
       60 
63 
     | 
    
         
             
                  end
         
     | 
    
        data/spec/api/client_spec.rb
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       2 
2 
     | 
    
         
             
            describe "RSolr::Client" do
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       4 
4 
     | 
    
         
             
              module ClientHelper
         
     | 
| 
       5 
5 
     | 
    
         
             
                def client
         
     | 
| 
       6 
6 
     | 
    
         
             
                  @client ||= (
         
     | 
| 
         @@ -8,30 +8,52 @@ describe "RSolr::Client" do 
     | 
|
| 
       8 
8 
     | 
    
         
             
                    RSolr::Client.new connection, :url => "http://localhost:9999/solr", :read_timeout => 42, :open_timeout=>43
         
     | 
| 
       9 
9 
     | 
    
         
             
                  )
         
     | 
| 
       10 
10 
     | 
    
         
             
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                def client_with_proxy
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @client_with_proxy ||= (
         
     | 
| 
      
 14 
     | 
    
         
            +
                    connection = RSolr::Connection.new
         
     | 
| 
      
 15 
     | 
    
         
            +
                    RSolr::Client.new connection, :url => "http://localhost:9999/solr", :proxy => 'http://localhost:8080', :read_timeout => 42, :open_timeout=>43
         
     | 
| 
      
 16 
     | 
    
         
            +
                  )
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
       11 
18 
     | 
    
         
             
              end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
       13 
20 
     | 
    
         
             
              context "initialize" do
         
     | 
| 
       14 
21 
     | 
    
         
             
                it "should accept whatevs and set it as the @connection" do
         
     | 
| 
       15 
22 
     | 
    
         
             
                  expect(RSolr::Client.new(:whatevs).connection).to eq(:whatevs)
         
     | 
| 
       16 
23 
     | 
    
         
             
                end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       18 
25 
     | 
    
         
             
                it "should use :update_path from options" do
         
     | 
| 
       19 
26 
     | 
    
         
             
                  client = RSolr::Client.new(:whatevs, { update_path: 'update_test' })
         
     | 
| 
       20 
27 
     | 
    
         
             
                  expect(client.update_path).to eql('update_test')
         
     | 
| 
       21 
28 
     | 
    
         
             
                end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
       23 
30 
     | 
    
         
             
                it "should use 'update' for update_path by default" do
         
     | 
| 
       24 
31 
     | 
    
         
             
                  client = RSolr::Client.new(:whatevs)
         
     | 
| 
       25 
32 
     | 
    
         
             
                  expect(client.update_path).to eql('update')
         
     | 
| 
       26 
33 
     | 
    
         
             
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                it "should use :proxy from options" do
         
     | 
| 
      
 36 
     | 
    
         
            +
                  client = RSolr::Client.new(:whatevs, { proxy: 'http://my.proxy/' })
         
     | 
| 
      
 37 
     | 
    
         
            +
                  expect(client.proxy.to_s).to eql('http://my.proxy/')
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                it "should use 'nil' for proxy by default" do
         
     | 
| 
      
 41 
     | 
    
         
            +
                  client = RSolr::Client.new(:whatevs)
         
     | 
| 
      
 42 
     | 
    
         
            +
                  expect(client.proxy).to be_nil
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                it "should use 'false' for proxy if passed 'false'" do
         
     | 
| 
      
 46 
     | 
    
         
            +
                  client = RSolr::Client.new(:whatevs, { proxy: false })
         
     | 
| 
      
 47 
     | 
    
         
            +
                  expect(client.proxy).to eq(false)
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
       27 
49 
     | 
    
         
             
              end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
       29 
51 
     | 
    
         
             
              context "send_and_receive" do
         
     | 
| 
       30 
52 
     | 
    
         
             
                include ClientHelper
         
     | 
| 
       31 
53 
     | 
    
         
             
                it "should forward these method calls the #connection object" do
         
     | 
| 
       32 
54 
     | 
    
         
             
                  [:get, :post, :head].each do |meth|
         
     | 
| 
       33 
55 
     | 
    
         
             
                    expect(client.connection).to receive(:execute).
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
      
 56 
     | 
    
         
            +
                      and_return({:status => 200, :body => "{}", :headers => {}})
         
     | 
| 
       35 
57 
     | 
    
         
             
                    client.send_and_receive '', :method => meth, :params => {}, :data => nil, :headers => {}
         
     | 
| 
       36 
58 
     | 
    
         
             
                  end
         
     | 
| 
       37 
59 
     | 
    
         
             
                end
         
     | 
| 
         @@ -87,17 +109,17 @@ describe "RSolr::Client" do 
     | 
|
| 
       87 
109 
     | 
    
         
             
                      :status => 200,
         
     | 
| 
       88 
110 
     | 
    
         
             
                      :headers => {"Content-Type"=>"text/plain"}
         
     | 
| 
       89 
111 
     | 
    
         
             
                    )
         
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
      
 112 
     | 
    
         
            +
                    client.post "update", request_opts
         
     | 
| 
       91 
113 
     | 
    
         
             
                end
         
     | 
| 
       92 
114 
     | 
    
         
             
              end
         
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
       94 
116 
     | 
    
         
             
              context "xml" do
         
     | 
| 
       95 
117 
     | 
    
         
             
                include ClientHelper
         
     | 
| 
       96 
118 
     | 
    
         
             
                it "should return an instance of RSolr::Xml::Generator" do
         
     | 
| 
       97 
119 
     | 
    
         
             
                  expect(client.xml).to be_a RSolr::Xml::Generator
         
     | 
| 
       98 
120 
     | 
    
         
             
                end
         
     | 
| 
       99 
121 
     | 
    
         
             
              end
         
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
       101 
123 
     | 
    
         
             
              context "add" do
         
     | 
| 
       102 
124 
     | 
    
         
             
                include ClientHelper
         
     | 
| 
       103 
125 
     | 
    
         
             
                it "should send xml to the connection's #post method" do
         
     | 
| 
         @@ -109,19 +131,19 @@ describe "RSolr::Client" do 
     | 
|
| 
       109 
131 
     | 
    
         
             
                        :method => :post,
         
     | 
| 
       110 
132 
     | 
    
         
             
                        :data => "<xml/>"
         
     | 
| 
       111 
133 
     | 
    
         
             
                      })
         
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
      
 134 
     | 
    
         
            +
                  ).
         
     | 
| 
      
 135 
     | 
    
         
            +
                  and_return(
         
     | 
| 
      
 136 
     | 
    
         
            +
                    :body => "",
         
     | 
| 
      
 137 
     | 
    
         
            +
                    :status => 200,
         
     | 
| 
      
 138 
     | 
    
         
            +
                    :headers => {"Content-Type"=>"text/xml"}
         
     | 
| 
      
 139 
     | 
    
         
            +
                  )
         
     | 
| 
       118 
140 
     | 
    
         
             
                  expect(client.xml).to receive(:add).
         
     | 
| 
       119 
141 
     | 
    
         
             
                    with({:id=>1}, {:commitWith=>10}).
         
     | 
| 
       120 
     | 
    
         
            -
             
     | 
| 
      
 142 
     | 
    
         
            +
                    and_return("<xml/>")
         
     | 
| 
       121 
143 
     | 
    
         
             
                  client.add({:id=>1}, :add_attributes => {:commitWith=>10})
         
     | 
| 
       122 
144 
     | 
    
         
             
                end
         
     | 
| 
       123 
145 
     | 
    
         
             
              end
         
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
       125 
147 
     | 
    
         
             
              context "update" do
         
     | 
| 
       126 
148 
     | 
    
         
             
                include ClientHelper
         
     | 
| 
       127 
149 
     | 
    
         
             
                it "should send data to the connection's #post method" do
         
     | 
| 
         @@ -133,12 +155,12 @@ describe "RSolr::Client" do 
     | 
|
| 
       133 
155 
     | 
    
         
             
                        :method => :post,
         
     | 
| 
       134 
156 
     | 
    
         
             
                        :data => "<optimize/>"
         
     | 
| 
       135 
157 
     | 
    
         
             
                      })
         
     | 
| 
       136 
     | 
    
         
            -
             
     | 
| 
       137 
     | 
    
         
            -
             
     | 
| 
       138 
     | 
    
         
            -
             
     | 
| 
       139 
     | 
    
         
            -
             
     | 
| 
       140 
     | 
    
         
            -
             
     | 
| 
       141 
     | 
    
         
            -
             
     | 
| 
      
 158 
     | 
    
         
            +
                  ).
         
     | 
| 
      
 159 
     | 
    
         
            +
                  and_return(
         
     | 
| 
      
 160 
     | 
    
         
            +
                    :body => "",
         
     | 
| 
      
 161 
     | 
    
         
            +
                    :status => 200,
         
     | 
| 
      
 162 
     | 
    
         
            +
                    :headers => {"Content-Type"=>"text/xml"}
         
     | 
| 
      
 163 
     | 
    
         
            +
                  )
         
     | 
| 
       142 
164 
     | 
    
         
             
                  client.update(:data => "<optimize/>")
         
     | 
| 
       143 
165 
     | 
    
         
             
                end
         
     | 
| 
       144 
166 
     | 
    
         | 
| 
         @@ -147,14 +169,14 @@ describe "RSolr::Client" do 
     | 
|
| 
       147 
169 
     | 
    
         
             
                  expect(client).to receive(:update_path).and_return('update_test')
         
     | 
| 
       148 
170 
     | 
    
         
             
                  client.update({})
         
     | 
| 
       149 
171 
     | 
    
         
             
                end
         
     | 
| 
       150 
     | 
    
         
            -
             
     | 
| 
      
 172 
     | 
    
         
            +
             
     | 
| 
       151 
173 
     | 
    
         
             
                it "should use path from opts" do
         
     | 
| 
       152 
174 
     | 
    
         
             
                  expect(client).to receive(:post).with('update_opts', any_args)
         
     | 
| 
       153 
175 
     | 
    
         
             
                  allow(client).to receive(:update_path).and_return('update_test')
         
     | 
| 
       154 
176 
     | 
    
         
             
                  client.update({path: 'update_opts'})
         
     | 
| 
       155 
177 
     | 
    
         
             
                end
         
     | 
| 
       156 
178 
     | 
    
         
             
              end
         
     | 
| 
       157 
     | 
    
         
            -
             
     | 
| 
      
 179 
     | 
    
         
            +
             
     | 
| 
       158 
180 
     | 
    
         
             
              context "post based helper methods:" do
         
     | 
| 
       159 
181 
     | 
    
         
             
                include ClientHelper
         
     | 
| 
       160 
182 
     | 
    
         
             
                [:commit, :optimize, :rollback].each do |meth|
         
     | 
| 
         @@ -167,17 +189,17 @@ describe "RSolr::Client" do 
     | 
|
| 
       167 
189 
     | 
    
         
             
                          :method => :post,
         
     | 
| 
       168 
190 
     | 
    
         
             
                          :data => "<?xml version=\"1.0\" encoding=\"UTF-8\"?><#{meth}/>"
         
     | 
| 
       169 
191 
     | 
    
         
             
                        })
         
     | 
| 
       170 
     | 
    
         
            -
             
     | 
| 
       171 
     | 
    
         
            -
             
     | 
| 
       172 
     | 
    
         
            -
             
     | 
| 
       173 
     | 
    
         
            -
             
     | 
| 
       174 
     | 
    
         
            -
             
     | 
| 
       175 
     | 
    
         
            -
             
     | 
| 
      
 192 
     | 
    
         
            +
                    ).
         
     | 
| 
      
 193 
     | 
    
         
            +
                    and_return(
         
     | 
| 
      
 194 
     | 
    
         
            +
                      :body => "",
         
     | 
| 
      
 195 
     | 
    
         
            +
                      :status => 200,
         
     | 
| 
      
 196 
     | 
    
         
            +
                      :headers => {"Content-Type"=>"text/xml"}
         
     | 
| 
      
 197 
     | 
    
         
            +
                    )
         
     | 
| 
       176 
198 
     | 
    
         
             
                    client.send meth
         
     | 
| 
       177 
199 
     | 
    
         
             
                  end
         
     | 
| 
       178 
200 
     | 
    
         
             
                end
         
     | 
| 
       179 
201 
     | 
    
         
             
              end
         
     | 
| 
       180 
     | 
    
         
            -
             
     | 
| 
      
 202 
     | 
    
         
            +
             
     | 
| 
       181 
203 
     | 
    
         
             
              context "delete_by_id" do
         
     | 
| 
       182 
204 
     | 
    
         
             
                include ClientHelper
         
     | 
| 
       183 
205 
     | 
    
         
             
                it "should send data to the connection's #post method" do
         
     | 
| 
         @@ -189,16 +211,16 @@ describe "RSolr::Client" do 
     | 
|
| 
       189 
211 
     | 
    
         
             
                        :method => :post,
         
     | 
| 
       190 
212 
     | 
    
         
             
                        :data => "<?xml version=\"1.0\" encoding=\"UTF-8\"?><delete><id>1</id></delete>"
         
     | 
| 
       191 
213 
     | 
    
         
             
                      })
         
     | 
| 
       192 
     | 
    
         
            -
             
     | 
| 
       193 
     | 
    
         
            -
             
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
       195 
     | 
    
         
            -
             
     | 
| 
       196 
     | 
    
         
            -
             
     | 
| 
       197 
     | 
    
         
            -
             
     | 
| 
      
 214 
     | 
    
         
            +
                  ).
         
     | 
| 
      
 215 
     | 
    
         
            +
                  and_return(
         
     | 
| 
      
 216 
     | 
    
         
            +
                    :body => "",
         
     | 
| 
      
 217 
     | 
    
         
            +
                    :status => 200,
         
     | 
| 
      
 218 
     | 
    
         
            +
                    :headers => {"Content-Type"=>"text/xml"}
         
     | 
| 
      
 219 
     | 
    
         
            +
                  )
         
     | 
| 
       198 
220 
     | 
    
         
             
                  client.delete_by_id 1
         
     | 
| 
       199 
221 
     | 
    
         
             
                end
         
     | 
| 
       200 
222 
     | 
    
         
             
              end
         
     | 
| 
       201 
     | 
    
         
            -
             
     | 
| 
      
 223 
     | 
    
         
            +
             
     | 
| 
       202 
224 
     | 
    
         
             
              context "delete_by_query" do
         
     | 
| 
       203 
225 
     | 
    
         
             
                include ClientHelper
         
     | 
| 
       204 
226 
     | 
    
         
             
                it "should send data to the connection's #post method" do
         
     | 
| 
         @@ -210,16 +232,16 @@ describe "RSolr::Client" do 
     | 
|
| 
       210 
232 
     | 
    
         
             
                        :method => :post,
         
     | 
| 
       211 
233 
     | 
    
         
             
                        :data => "<?xml version=\"1.0\" encoding=\"UTF-8\"?><delete><query fq=\"category:"trash"\"/></delete>"
         
     | 
| 
       212 
234 
     | 
    
         
             
                      })
         
     | 
| 
       213 
     | 
    
         
            -
             
     | 
| 
       214 
     | 
    
         
            -
             
     | 
| 
       215 
     | 
    
         
            -
             
     | 
| 
       216 
     | 
    
         
            -
             
     | 
| 
       217 
     | 
    
         
            -
             
     | 
| 
       218 
     | 
    
         
            -
             
     | 
| 
      
 235 
     | 
    
         
            +
                  ).
         
     | 
| 
      
 236 
     | 
    
         
            +
                  and_return(
         
     | 
| 
      
 237 
     | 
    
         
            +
                    :body => "",
         
     | 
| 
      
 238 
     | 
    
         
            +
                    :status => 200,
         
     | 
| 
      
 239 
     | 
    
         
            +
                    :headers => {"Content-Type"=>"text/xml"}
         
     | 
| 
      
 240 
     | 
    
         
            +
                  )
         
     | 
| 
       219 
241 
     | 
    
         
             
                  client.delete_by_query :fq => "category:\"trash\""
         
     | 
| 
       220 
242 
     | 
    
         
             
                end
         
     | 
| 
       221 
243 
     | 
    
         
             
              end
         
     | 
| 
       222 
     | 
    
         
            -
             
     | 
| 
      
 244 
     | 
    
         
            +
             
     | 
| 
       223 
245 
     | 
    
         
             
              context "adapt_response" do
         
     | 
| 
       224 
246 
     | 
    
         
             
                include ClientHelper
         
     | 
| 
       225 
247 
     | 
    
         
             
                it 'should not try to evaluate ruby when the :qt is not :ruby' do
         
     | 
| 
         @@ -227,13 +249,13 @@ describe "RSolr::Client" do 
     | 
|
| 
       227 
249 
     | 
    
         
             
                  result = client.adapt_response({:params=>{}}, {:status => 200, :body => body, :headers => {}})
         
     | 
| 
       228 
250 
     | 
    
         
             
                  expect(result).to eq(body)
         
     | 
| 
       229 
251 
     | 
    
         
             
                end
         
     | 
| 
       230 
     | 
    
         
            -
             
     | 
| 
      
 252 
     | 
    
         
            +
             
     | 
| 
       231 
253 
     | 
    
         
             
                it 'should evaluate ruby responses when the :wt is :ruby' do
         
     | 
| 
       232 
254 
     | 
    
         
             
                  body = '{"time"=>"NOW"}'
         
     | 
| 
       233 
255 
     | 
    
         
             
                  result = client.adapt_response({:params=>{:wt=>:ruby}}, {:status => 200, :body => body, :headers => {}})
         
     | 
| 
       234 
256 
     | 
    
         
             
                  expect(result).to eq({"time"=>"NOW"})
         
     | 
| 
       235 
257 
     | 
    
         
             
                end
         
     | 
| 
       236 
     | 
    
         
            -
             
     | 
| 
      
 258 
     | 
    
         
            +
             
     | 
| 
       237 
259 
     | 
    
         
             
                it 'should evaluate json responses when the :wt is :json' do
         
     | 
| 
       238 
260 
     | 
    
         
             
                  body = '{"time": "NOW"}'
         
     | 
| 
       239 
261 
     | 
    
         
             
                  result = client.adapt_response({:params=>{:wt=>:json}}, {:status => 200, :body => body, :headers => {}})
         
     | 
| 
         @@ -255,9 +277,9 @@ describe "RSolr::Client" do 
     | 
|
| 
       255 
277 
     | 
    
         
             
                    client.adapt_response({:params=>{:wt => :ruby}}, {:status => 200, :body => "<woops/>", :headers => {}})
         
     | 
| 
       256 
278 
     | 
    
         
             
                  }.to raise_error RSolr::Error::InvalidRubyResponse
         
     | 
| 
       257 
279 
     | 
    
         
             
                end
         
     | 
| 
       258 
     | 
    
         
            -
             
     | 
| 
      
 280 
     | 
    
         
            +
             
     | 
| 
       259 
281 
     | 
    
         
             
              end
         
     | 
| 
       260 
     | 
    
         
            -
             
     | 
| 
      
 282 
     | 
    
         
            +
             
     | 
| 
       261 
283 
     | 
    
         
             
              context "indifferent access" do
         
     | 
| 
       262 
284 
     | 
    
         
             
                include ClientHelper
         
     | 
| 
       263 
285 
     | 
    
         
             
                it "should raise a RuntimeError if the #with_indifferent_access extension isn't loaded" do
         
     | 
| 
         @@ -322,5 +344,14 @@ describe "RSolr::Client" do 
     | 
|
| 
       322 
344 
     | 
    
         
             
                    expect(subject[:headers]).to eq({"Content-Type" => "application/x-www-form-urlencoded; charset=UTF-8"})
         
     | 
| 
       323 
345 
     | 
    
         
             
                  end
         
     | 
| 
       324 
346 
     | 
    
         
             
                end
         
     | 
| 
      
 347 
     | 
    
         
            +
               
         
     | 
| 
      
 348 
     | 
    
         
            +
                it "should properly handle proxy configuration" do
         
     | 
| 
      
 349 
     | 
    
         
            +
                  result = client_with_proxy.build_request('select',
         
     | 
| 
      
 350 
     | 
    
         
            +
                    :method => :post,
         
     | 
| 
      
 351 
     | 
    
         
            +
                    :data => {:q=>'test', :fq=>[0,1]},
         
     | 
| 
      
 352 
     | 
    
         
            +
                    :headers => {}
         
     | 
| 
      
 353 
     | 
    
         
            +
                  )
         
     | 
| 
      
 354 
     | 
    
         
            +
                  result[:uri].to_s.should match /^http:\/\/localhost:9999\/solr\//
         
     | 
| 
      
 355 
     | 
    
         
            +
                end 
         
     | 
| 
       325 
356 
     | 
    
         
             
              end
         
     | 
| 
       326 
357 
     | 
    
         
             
            end
         
     | 
    
        data/spec/api/connection_spec.rb
    CHANGED
    
    | 
         @@ -2,7 +2,7 @@ require 'spec_helper' 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'base64'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            describe "RSolr::Connection" do
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
       6 
6 
     | 
    
         
             
              context "setup_raw_request" do
         
     | 
| 
       7 
7 
     | 
    
         
             
                it "should set the correct request parameters" do
         
     | 
| 
       8 
8 
     | 
    
         
             
                  c = RSolr::Connection.new
         
     | 
| 
         @@ -35,7 +35,7 @@ describe "RSolr::Connection" do 
     | 
|
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
                let(:http) { double(Net::HTTP).as_null_object }
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
                subject { RSolr::Connection.new } 
     | 
| 
      
 38 
     | 
    
         
            +
                subject { RSolr::Connection.new }
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
                before do
         
     | 
| 
       41 
41 
     | 
    
         
             
                  allow(Net::HTTP).to receive(:new) { http }
         
     | 
| 
         @@ -57,7 +57,7 @@ describe "RSolr::Connection" do 
     | 
|
| 
       57 
57 
     | 
    
         | 
| 
       58 
58 
     | 
    
         
             
                let(:http) { double(Net::HTTP).as_null_object }
         
     | 
| 
       59 
59 
     | 
    
         | 
| 
       60 
     | 
    
         
            -
                subject { RSolr::Connection.new } 
     | 
| 
      
 60 
     | 
    
         
            +
                subject { RSolr::Connection.new }
         
     | 
| 
       61 
61 
     | 
    
         | 
| 
       62 
62 
     | 
    
         
             
                before do
         
     | 
| 
       63 
63 
     | 
    
         
             
                  allow(Net::HTTP).to receive(:new) { http }
         
     | 
| 
         @@ -74,6 +74,32 @@ describe "RSolr::Connection" do 
     | 
|
| 
       74 
74 
     | 
    
         
             
                end
         
     | 
| 
       75 
75 
     | 
    
         
             
              end
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
      
 77 
     | 
    
         
            +
              context "proxy configuration" do
         
     | 
| 
      
 78 
     | 
    
         
            +
                let(:client) { double.as_null_object }
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
                let(:http) { double(Net::HTTP).as_null_object }
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                let(:uri) { URI.parse("http://localhost/some_url") }
         
     | 
| 
      
 83 
     | 
    
         
            +
                let(:proxy) { URI.parse("http://my.proxy/") }
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                subject { RSolr::Connection.new }
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
                it "should use the default if no proxy is provided" do
         
     | 
| 
      
 88 
     | 
    
         
            +
                  expect(Net::HTTP).to receive(:new).with(uri.host, uri.port) { http }
         
     | 
| 
      
 89 
     | 
    
         
            +
                  subject.execute client, { :uri => uri, :method => :get }
         
     | 
| 
      
 90 
     | 
    
         
            +
                end
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                it "should use the proxy if one is provided" do
         
     | 
| 
      
 93 
     | 
    
         
            +
                  expect(Net::HTTP).to receive(:Proxy).with(proxy.host, proxy.port, nil, nil) { http }
         
     | 
| 
      
 94 
     | 
    
         
            +
                  subject.execute client, { :uri => uri, :proxy => proxy, :method => :get }
         
     | 
| 
      
 95 
     | 
    
         
            +
                end
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                it "should not use a proxy if proxy setting is false" do
         
     | 
| 
      
 98 
     | 
    
         
            +
                  expect(Net::HTTP).to receive(:new).with(uri.host, uri.port, nil) { http }
         
     | 
| 
      
 99 
     | 
    
         
            +
                  subject.execute client, { :uri => uri, :proxy => false, :method => :get }
         
     | 
| 
      
 100 
     | 
    
         
            +
                end
         
     | 
| 
      
 101 
     | 
    
         
            +
              end
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
       77 
103 
     | 
    
         
             
              context "connection refused" do
         
     | 
| 
       78 
104 
     | 
    
         
             
                let(:client) { double.as_null_object }
         
     | 
| 
       79 
105 
     | 
    
         | 
| 
         @@ -81,7 +107,7 @@ describe "RSolr::Connection" do 
     | 
|
| 
       81 
107 
     | 
    
         
             
                let(:request_context) {
         
     | 
| 
       82 
108 
     | 
    
         
             
                  {:uri => URI.parse("http://localhost/some_uri"), :method => :get, :open_timeout => 42}
         
     | 
| 
       83 
109 
     | 
    
         
             
                }
         
     | 
| 
       84 
     | 
    
         
            -
                subject { RSolr::Connection.new } 
     | 
| 
      
 110 
     | 
    
         
            +
                subject { RSolr::Connection.new }
         
     | 
| 
       85 
111 
     | 
    
         | 
| 
       86 
112 
     | 
    
         
             
                before do
         
     | 
| 
       87 
113 
     | 
    
         
             
                  allow(Net::HTTP).to receive(:new) { http }
         
     | 
| 
         @@ -95,14 +121,14 @@ describe "RSolr::Connection" do 
     | 
|
| 
       95 
121 
     | 
    
         
             
                  }.to raise_error(Errno::ECONNREFUSED, /#{request_context}/)
         
     | 
| 
       96 
122 
     | 
    
         
             
                end
         
     | 
| 
       97 
123 
     | 
    
         
             
              end
         
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
       99 
125 
     | 
    
         
             
              describe "basic auth support" do
         
     | 
| 
       100 
126 
     | 
    
         
             
                let(:http) { double(Net::HTTP).as_null_object }
         
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
       102 
128 
     | 
    
         
             
                before do
         
     | 
| 
       103 
129 
     | 
    
         
             
                  allow(Net::HTTP).to receive(:new) { http }
         
     | 
| 
       104 
130 
     | 
    
         
             
                end
         
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
       106 
132 
     | 
    
         
             
                it "sets the authorization header" do
         
     | 
| 
       107 
133 
     | 
    
         
             
                  expect(http).to receive(:request) do |request|
         
     | 
| 
       108 
134 
     | 
    
         
             
                    expect(request.fetch('authorization')).to eq("Basic #{Base64.encode64("joe:pass")}".strip)
         
     | 
    
        data/spec/api/pagination_spec.rb
    CHANGED
    
    | 
         @@ -11,6 +11,13 @@ describe "RSolr::Pagination" do 
     | 
|
| 
       11 
11 
     | 
    
         
             
                  expect(r[:uri].query).to match(/rows=25/)
         
     | 
| 
       12 
12 
     | 
    
         
             
                  expect(r[:uri].query).to match(/start=50/)
         
     | 
| 
       13 
13 
     | 
    
         
             
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                it 'passes through client options' do
         
     | 
| 
      
 16 
     | 
    
         
            +
                  c = RSolr::Client.new(nil, open_timeout: 5, read_timeout: 7)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  r = c.build_paginated_request 3, 25, "select", {:params => {:q => "test"}}
         
     | 
| 
      
 18 
     | 
    
         
            +
                  expect(r[:open_timeout]).to eq(5)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  expect(r[:read_timeout]).to eq(7)
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
       14 
21 
     | 
    
         
             
              end
         
     | 
| 
       15 
22 
     | 
    
         
             
              context "paginate" do
         
     | 
| 
       16 
23 
     | 
    
         
             
                it "should build a paginated request context and call execute" do
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rsolr
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.1.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.1.1.pre2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Antoine Latter
         
     | 
| 
         @@ -29,7 +29,7 @@ authors: 
     | 
|
| 
       29 
29 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       30 
30 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       31 
31 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       32 
     | 
    
         
            -
            date: 2016-02- 
     | 
| 
      
 32 
     | 
    
         
            +
            date: 2016-02-22 00:00:00.000000000 Z
         
     | 
| 
       33 
33 
     | 
    
         
             
            dependencies:
         
     | 
| 
       34 
34 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       35 
35 
     | 
    
         
             
              name: builder
         
     |