solr4r 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,7 +7,7 @@
7
7
  # #
8
8
  # Copyright (C) 2014-2015 Jens Wille #
9
9
  # #
10
- # Mir is free software: you can redistribute it and/or modify it under the #
10
+ # solr4r is free software: you can redistribute it and/or modify it under the #
11
11
  # terms of the GNU Affero General Public License as published by the Free #
12
12
  # Software Foundation, either version 3 of the License, or (at your option) #
13
13
  # any later version. #
@@ -55,12 +55,13 @@ module Solr4R
55
55
 
56
56
  def query_pairs(key, value, pairs = [])
57
57
  if value.is_a?(Hash)
58
- pairs << [key, true]
58
+ kv = value.fetch(vk = :_, true)
59
+ pairs << [key, kv] unless kv.nil?
59
60
 
60
61
  value.each { |sub, val|
61
- query_pairs("#{key}.#{sub}", val, pairs) }
62
+ query_pairs("#{key}.#{sub}", val, pairs) unless sub == vk }
62
63
  else
63
- Array(value).each { |val| pairs << [key, val] }
64
+ Array(value).each { |val| pairs << [key, val] unless val.nil? }
64
65
  end
65
66
 
66
67
  pairs
@@ -4,7 +4,7 @@ module Solr4R
4
4
 
5
5
  MAJOR = 0
6
6
  MINOR = 0
7
- TINY = 5
7
+ TINY = 6
8
8
 
9
9
  class << self
10
10
 
data/lib/solr4r.rb CHANGED
@@ -5,9 +5,9 @@
5
5
  # #
6
6
  # solr4r -- A Ruby client for Apache Solr #
7
7
  # #
8
- # Copyright (C) 2014 Jens Wille #
8
+ # Copyright (C) 2014-2015 Jens Wille #
9
9
  # #
10
- # Mir is free software: you can redistribute it and/or modify it under the #
10
+ # solr4r is free software: you can redistribute it and/or modify it under the #
11
11
  # terms of the GNU Affero General Public License as published by the Free #
12
12
  # Software Foundation, either version 3 of the License, or (at your option) #
13
13
  # any later version. #
@@ -40,4 +40,5 @@ require_relative 'solr4r/logging'
40
40
  require_relative 'solr4r/builder'
41
41
  require_relative 'solr4r/request'
42
42
  require_relative 'solr4r/response'
43
+ require_relative 'solr4r/endpoints'
43
44
  require_relative 'solr4r/client'
@@ -1,13 +1,9 @@
1
1
  describe Solr4R::Builder do
2
2
 
3
- before :all do
4
- @builder = Solr4R::Builder.new
5
- end
6
-
7
3
  describe '#add' do
8
4
 
9
5
  example do
10
- @builder.add(employeeId: '05991', office: 'Bridgewater', skills: %w[Perl Java]).should == <<-EOT
6
+ expect(subject.add(employeeId: '05991', office: 'Bridgewater', skills: %w[Perl Java])).to eq(<<-EOT)
11
7
  <?xml version="1.0" encoding="UTF-8"?>
12
8
  <add>
13
9
  <doc>
@@ -21,7 +17,7 @@ describe Solr4R::Builder do
21
17
  end
22
18
 
23
19
  example do
24
- @builder.add([{ employeeId: '05992', office: 'Blackwater' }, { employeeId: '05993', skills: 'Ruby' }]).should == <<-EOT
20
+ expect(subject.add([{ employeeId: '05992', office: 'Blackwater' }, { employeeId: '05993', skills: 'Ruby' }])).to eq(<<-EOT)
25
21
  <?xml version="1.0" encoding="UTF-8"?>
26
22
  <add>
27
23
  <doc>
@@ -37,7 +33,7 @@ describe Solr4R::Builder do
37
33
  end
38
34
 
39
35
  example do
40
- @builder.add([id: 42, text: 'blah'], commitWithin: 23).should == <<-EOT
36
+ expect(subject.add([id: 42, text: 'blah'], commitWithin: 23)).to eq(<<-EOT)
41
37
  <?xml version="1.0" encoding="UTF-8"?>
42
38
  <add commitWithin="23">
43
39
  <doc>
@@ -49,7 +45,7 @@ describe Solr4R::Builder do
49
45
  end
50
46
 
51
47
  example do
52
- @builder.add([[{ id: 42, text: 'blah' }, { boost: 10.0 }]]).should == <<-EOT
48
+ expect(subject.add([[{ id: 42, text: 'blah' }, boost: 10.0]])).to eq(<<-EOT)
53
49
  <?xml version="1.0" encoding="UTF-8"?>
54
50
  <add>
55
51
  <doc boost="10.0">
@@ -61,7 +57,7 @@ describe Solr4R::Builder do
61
57
  end
62
58
 
63
59
  example do
64
- @builder.add(id: 42, text: ['blah', boost: 2.0]).should == <<-EOT
60
+ expect(subject.add(id: 42, text: ['blah', boost: 2.0])).to eq(<<-EOT)
65
61
  <?xml version="1.0" encoding="UTF-8"?>
66
62
  <add>
67
63
  <doc>
@@ -73,7 +69,7 @@ describe Solr4R::Builder do
73
69
  end
74
70
 
75
71
  example do
76
- @builder.add([[{ id: 42, text: ['blah', boost: 2.0] }, { boost: 10.0 }]], commitWithin: 23).should == <<-EOT
72
+ expect(subject.add([[{ id: 42, text: ['blah', boost: 2.0] }, boost: 10.0]], commitWithin: 23)).to eq(<<-EOT)
77
73
  <?xml version="1.0" encoding="UTF-8"?>
78
74
  <add commitWithin="23">
79
75
  <doc boost="10.0">
@@ -85,7 +81,7 @@ describe Solr4R::Builder do
85
81
  end
86
82
 
87
83
  example do
88
- @builder.add(employeeId: '05991', office: "\fBridgew\ate\r", skills: %w[Perl Java]).should == <<-EOT
84
+ expect(subject.add(employeeId: '05991', office: "\fBridgew\ate\r", skills: %w[Perl Java])).to eq(<<-EOT)
89
85
  <?xml version="1.0" encoding="UTF-8"?>
90
86
  <add>
91
87
  <doc>
@@ -103,14 +99,14 @@ describe Solr4R::Builder do
103
99
  describe '#commit' do
104
100
 
105
101
  example do
106
- @builder.commit.should == <<-EOT
102
+ expect(subject.commit).to eq(<<-EOT)
107
103
  <?xml version="1.0" encoding="UTF-8"?>
108
104
  <commit/>
109
105
  EOT
110
106
  end
111
107
 
112
108
  example do
113
- @builder.commit(softCommit: true).should == <<-EOT
109
+ expect(subject.commit(softCommit: true)).to eq(<<-EOT)
114
110
  <?xml version="1.0" encoding="UTF-8"?>
115
111
  <commit softCommit="true"/>
116
112
  EOT
@@ -121,14 +117,14 @@ describe Solr4R::Builder do
121
117
  describe '#optimize' do
122
118
 
123
119
  example do
124
- @builder.optimize.should == <<-EOT
120
+ expect(subject.optimize).to eq(<<-EOT)
125
121
  <?xml version="1.0" encoding="UTF-8"?>
126
122
  <optimize/>
127
123
  EOT
128
124
  end
129
125
 
130
126
  example do
131
- @builder.optimize(maxSegments: 42).should == <<-EOT
127
+ expect(subject.optimize(maxSegments: 42)).to eq(<<-EOT)
132
128
  <?xml version="1.0" encoding="UTF-8"?>
133
129
  <optimize maxSegments="42"/>
134
130
  EOT
@@ -139,7 +135,7 @@ describe Solr4R::Builder do
139
135
  describe '#rollback' do
140
136
 
141
137
  example do
142
- @builder.rollback.should == <<-EOT
138
+ expect(subject.rollback).to eq(<<-EOT)
143
139
  <?xml version="1.0" encoding="UTF-8"?>
144
140
  <rollback/>
145
141
  EOT
@@ -150,7 +146,7 @@ describe Solr4R::Builder do
150
146
  describe '#delete' do
151
147
 
152
148
  example do
153
- @builder.delete(id: '05991').should == <<-EOT
149
+ expect(subject.delete(id: '05991')).to eq(<<-EOT)
154
150
  <?xml version="1.0" encoding="UTF-8"?>
155
151
  <delete>
156
152
  <id>05991</id>
@@ -159,7 +155,7 @@ describe Solr4R::Builder do
159
155
  end
160
156
 
161
157
  example do
162
- @builder.delete(id: %w[05991 06000]).should == <<-EOT
158
+ expect(subject.delete(id: %w[05991 06000])).to eq(<<-EOT)
163
159
  <?xml version="1.0" encoding="UTF-8"?>
164
160
  <delete>
165
161
  <id>05991</id>
@@ -169,7 +165,7 @@ describe Solr4R::Builder do
169
165
  end
170
166
 
171
167
  example do
172
- @builder.delete(query: 'office:Bridgewater').should == <<-EOT
168
+ expect(subject.delete(query: 'office:Bridgewater')).to eq(<<-EOT)
173
169
  <?xml version="1.0" encoding="UTF-8"?>
174
170
  <delete>
175
171
  <query>office:Bridgewater</query>
@@ -178,7 +174,7 @@ describe Solr4R::Builder do
178
174
  end
179
175
 
180
176
  example do
181
- @builder.delete(query: %w[office:Bridgewater office:Osaka]).should == <<-EOT
177
+ expect(subject.delete(query: %w[office:Bridgewater office:Osaka])).to eq(<<-EOT)
182
178
  <?xml version="1.0" encoding="UTF-8"?>
183
179
  <delete>
184
180
  <query>office:Bridgewater</query>
@@ -188,39 +184,45 @@ describe Solr4R::Builder do
188
184
  end
189
185
 
190
186
  example do
191
- @builder.delete(query: { office: 'Bridgewater', skills: 'Perl' }).should == <<-EOT
187
+ expect(subject.delete(query: { office: 'Bridgewater', skills: 'Perl' })).to eq(<<-EOT)
192
188
  <?xml version="1.0" encoding="UTF-8"?>
193
189
  <delete>
194
- <query>office:Bridgewater</query>
195
- <query>skills:Perl</query>
190
+ <query>office:Bridgewater skills:Perl</query>
196
191
  </delete>
197
192
  EOT
198
193
  end
199
194
 
200
195
  example do
201
- @builder.delete(query: { office: %w[Bridgewater Osaka] }).should == <<-EOT
196
+ expect(subject.delete(query: { office: %w[Bridgewater Osaka] })).to eq(<<-EOT)
202
197
  <?xml version="1.0" encoding="UTF-8"?>
203
198
  <delete>
204
- <query>office:Bridgewater</query>
205
- <query>office:Osaka</query>
199
+ <query>office:Bridgewater office:Osaka</query>
200
+ </delete>
201
+ EOT
202
+ end
203
+
204
+ example do
205
+ expect(subject.delete(query: { office: 'Bridgewater', _: { type: :edismax } })).to eq(<<-EOT)
206
+ <?xml version="1.0" encoding="UTF-8"?>
207
+ <delete>
208
+ <query>{!type=edismax}office:Bridgewater</query>
206
209
  </delete>
207
210
  EOT
208
211
  end
209
212
 
210
213
  example do
211
- @builder.delete(id: %w[05991 06000], query: { office: %w[Bridgewater Osaka] }).should == <<-EOT
214
+ expect(subject.delete(id: %w[05991 06000], query: { office: %w[Bridgewater Osaka] })).to eq(<<-EOT)
212
215
  <?xml version="1.0" encoding="UTF-8"?>
213
216
  <delete>
214
217
  <id>05991</id>
215
218
  <id>06000</id>
216
- <query>office:Bridgewater</query>
217
- <query>office:Osaka</query>
219
+ <query>office:Bridgewater office:Osaka</query>
218
220
  </delete>
219
221
  EOT
220
222
  end
221
223
 
222
224
  example do
223
- @builder.delete(query: "office:\fBridgew\ate\r").should == <<-EOT
225
+ expect(subject.delete(query: "office:\fBridgew\ate\r")).to eq(<<-EOT)
224
226
  <?xml version="1.0" encoding="UTF-8"?>
225
227
  <delete>
226
228
  <query>office:Bridgewte&#13;</query>
@@ -228,6 +230,24 @@ describe Solr4R::Builder do
228
230
  EOT
229
231
  end
230
232
 
233
+ example do
234
+ expect(subject.delete(query: 'office:Bridge&water')).to eq(<<-EOT)
235
+ <?xml version="1.0" encoding="UTF-8"?>
236
+ <delete>
237
+ <query>office:Bridge&amp;water</query>
238
+ </delete>
239
+ EOT
240
+ end
241
+
242
+ example do
243
+ expect(subject.delete(query: { office: 'Bridge&water' })).to eq(<<-EOT)
244
+ <?xml version="1.0" encoding="UTF-8"?>
245
+ <delete>
246
+ <query>office:Bridge&amp;water</query>
247
+ </delete>
248
+ EOT
249
+ end
250
+
231
251
  end
232
252
 
233
253
  end
@@ -0,0 +1,93 @@
1
+ describe Solr4R::Client do
2
+
3
+ describe '::query_string' do
4
+
5
+ [
6
+ [nil, nil],
7
+ [nil, ''],
8
+ [nil, []],
9
+ [nil, {}],
10
+
11
+ ['title:foo', 'title:foo'],
12
+ ['title:foo%26bar', 'title:foo&bar'],
13
+ ['title:foo&bar', 'title:foo&bar', false],
14
+
15
+ ['title:foo author:bar', 'title:foo author:bar'],
16
+ ['title:foo author:(bar baz)', 'title:foo author:(bar baz)'],
17
+ ['title:foo -author:(bar baz)', 'title:foo -author:(bar baz)'],
18
+
19
+ ['title:foo', %w[title:foo]],
20
+ ['title:foo%26bar', %w[title:foo&bar]],
21
+ ['title:foo&bar', %w[title:foo&bar], false],
22
+
23
+ ['title:foo author:bar', %w[title:foo author:bar]],
24
+ ['title:foo author:bar', ['title:foo', author: 'bar']],
25
+ ['title:foo author:(bar baz)', %w[title:foo author:(bar\ baz)]],
26
+ ['title:foo -author:(bar baz)', %w[title:foo -author:(bar\ baz)]],
27
+ ['title:foo -author%26:(bar baz)', %w[title:foo -author&:(bar\ baz)]],
28
+ ['title:foo -author&:(bar baz)', %w[title:foo -author&:(bar\ baz)], false],
29
+
30
+ ['title:foo', title: 'foo'],
31
+ ['title:foo%26bar', title: 'foo&bar'],
32
+ ['title:foo&bar', { title: 'foo&bar' }, false],
33
+ ['title:foo%26bar%26baz', title: 'foo&bar&baz'],
34
+ ['title:foo&bar&baz', { title: 'foo&bar&baz' }, false],
35
+
36
+ ['title:foo author:bar', title: 'foo', author: 'bar'],
37
+ ['title:foo author:(bar baz)', title: 'foo', author: '(bar baz)'],
38
+ ['title:foo -author:(bar baz)', title: 'foo', '-author' => '(bar baz)'],
39
+ ['title:foo -author%26:(bar baz)', title: 'foo', '-author&' => '(bar baz)'],
40
+ ['title:foo -author&:(bar baz)', { title: 'foo', '-author&' => '(bar baz)' }, false],
41
+
42
+ ['title:foo author:bar author:baz', title: 'foo', author: %w[bar baz]],
43
+ ['title:foo author:bar%26baz', title: 'foo', author: %w[bar&baz]],
44
+ ['title:foo author:bar&baz', { title: 'foo', author: %w[bar&baz] }, false],
45
+ ['title:foo -author:bar -author:baz', title: 'foo', '-author' => %w[bar baz]],
46
+ ['title:foo -author%26:bar -author%26:baz', title: 'foo', '-author&' => %w[bar baz]],
47
+ ['title:foo -author&:bar -author&:baz', { title: 'foo', '-author&' => %w[bar baz] }, false],
48
+
49
+ ['{!q.op=AND}title:foo', title: 'foo', _: 'q.op=AND'],
50
+ ['{!q.op=AND}title:foo author:bar', ['title:foo', author: 'bar', _: 'q.op=AND']],
51
+ ['{!q.op=AND df=title}foo', ['foo', _: 'q.op=AND df=title']],
52
+ ['{!q.op=AND df=title}foo', ['foo', _: %w[q.op=AND df=title]]],
53
+ ['{!q.op=AND df=title}foo', ['foo', _: { 'q.op' => 'AND', df: :title }]]
54
+ ].each_with_index { |(expected, *args), index|
55
+ example(index) { expect(described_class.query_string(*args)).to eq(expected) }
56
+ }
57
+
58
+ end
59
+
60
+ describe '::local_params_string' do
61
+
62
+ [
63
+ [nil, nil],
64
+ [nil, ''],
65
+ [nil, []],
66
+ [nil, {}],
67
+
68
+ ['{!q.op=AND df=title}', 'q.op=AND df=title'],
69
+ ['{!q.op=AND df=title}', %w[q.op=AND df=title]],
70
+ ['{!q.op=AND df=title}', 'q.op' => 'AND', df: :title],
71
+
72
+ ['{!type=dismax qf="myfield yourfield"}', 'type=dismax qf="myfield yourfield"'],
73
+ ['{!type=dismax qf="myfield yourfield"}', ['type=dismax', 'qf="myfield yourfield"']],
74
+ ['{!type=dismax qf="myfield yourfield"}', type: :dismax, qf: 'myfield yourfield'],
75
+
76
+ ['{!type=dismax qf="myfield%26yourfield"}', 'type=dismax qf="myfield&yourfield"'],
77
+ ['{!type=dismax qf="myfield&yourfield"}', 'type=dismax qf="myfield&yourfield"', {}, false],
78
+ ['{!type=dismax qf="myfield%26yourfield"}', ['type=dismax', 'qf="myfield&yourfield"']],
79
+ ['{!type=dismax qf=myfield%26yourfield}', type: :dismax, qf: 'myfield&yourfield'],
80
+
81
+ ['{!type=mlt qf=$mlt.fl mintf=$mlt.mintf mindf=$mlt.mindf minwl=$mlt.minwl maxwl=$mlt.maxwl}',
82
+ 'type=mlt qf=$mlt.fl mintf=$mlt.mintf mindf=$mlt.mindf minwl=$mlt.minwl maxwl=$mlt.maxwl'],
83
+ ['{!type=mlt qf=$mlt.fl mintf=$mlt.mintf mindf=$mlt.mindf minwl=$mlt.minwl maxwl=$mlt.maxwl}',
84
+ %w[type=mlt qf=$mlt.fl mintf=$mlt.mintf mindf=$mlt.mindf minwl=$mlt.minwl maxwl=$mlt.maxwl]],
85
+ ['{!type=mlt qf=$mlt.fl mintf=$mlt.mintf mindf=$mlt.mindf minwl=$mlt.minwl maxwl=$mlt.maxwl}',
86
+ %w[mintf mindf minwl maxwl], type: :mlt, qf: '$mlt.fl']
87
+ ].each_with_index { |(expected, *args), index|
88
+ example(index) { expect(described_class.local_params_string(*args)).to eq(expected) }
89
+ }
90
+
91
+ end
92
+
93
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,3 @@
1
1
  $:.unshift('lib') unless $:.first == 'lib'
2
2
 
3
3
  require 'solr4r'
4
-
5
- RSpec.configure { |config|
6
- config.expect_with(:rspec) { |c| c.syntax = [:should, :expect] }
7
- }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solr4r
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jens Wille
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-11 00:00:00.000000000 Z
11
+ date: 2015-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -109,15 +109,19 @@ files:
109
109
  - lib/solr4r.rb
110
110
  - lib/solr4r/builder.rb
111
111
  - lib/solr4r/client.rb
112
+ - lib/solr4r/client/admin.rb
113
+ - lib/solr4r/client/query.rb
114
+ - lib/solr4r/client/update.rb
112
115
  - lib/solr4r/document.rb
116
+ - lib/solr4r/endpoints.rb
113
117
  - lib/solr4r/logging.rb
114
118
  - lib/solr4r/request.rb
115
- - lib/solr4r/request_extension.rb
116
119
  - lib/solr4r/response.rb
117
120
  - lib/solr4r/result.rb
118
121
  - lib/solr4r/uri_extension.rb
119
122
  - lib/solr4r/version.rb
120
123
  - spec/solr4r/builder_spec.rb
124
+ - spec/solr4r/client_spec.rb
121
125
  - spec/spec_helper.rb
122
126
  homepage: http://github.com/blackwinter/solr4r
123
127
  licenses:
@@ -125,18 +129,39 @@ licenses:
125
129
  metadata: {}
126
130
  post_install_message: |2+
127
131
 
128
- solr4r-0.0.5 [2015-02-11]:
132
+ solr4r-0.0.6 [2015-03-18]:
129
133
 
130
- * Fixed Solr4R::Result for unsupported types.
131
- * Extended Solr4R::Result for
132
- {facet counts}[https://wiki.apache.org/solr/SolrFacetingOverview].
133
- * Extended Solr4R::Client and Solr4R::Document for
134
- MoreLikeThis[https://wiki.apache.org/solr/MoreLikeThis] queries.
135
- * Extended Solr4R::RequestUriExtension for nested params (via hashes).
134
+ * Extracted Solr4R::Endpoints from Solr4R::Client.
135
+ * Extracted Solr4R::Client::Admin, Solr4R::Client::Query and
136
+ Solr4R::Client::Update from Solr4R::Client.
137
+ * Added core to Solr4R::Client.default_uri and adjusted
138
+ Solr4R::Client::DEFAULT_SYSTEM_PATH.
139
+ * Added Solr4R::Client::Admin#cores.
140
+ * Added Solr4R::Client::Admin#fields.
141
+ * Added Solr4R::Client::Admin#analyze_document.
142
+ * Added Solr4R::Client::Admin#analyze_field.
143
+ * Added Solr4R::Client::Query#json_document.
144
+ * Added Solr4R::Client::Query#more_like_this_h (using the {request
145
+ handler}[https://cwiki.apache.org/confluence/display/solr/MoreLikeThis]).
146
+ * Added Solr4R::Client::Query#more_like_this_q (using the {query
147
+ parser}[https://cwiki.apache.org/confluence/display/solr/Other+Parsers#OtherParsers-MoreLikeThisQueryParser]).
148
+ * Added support for {local
149
+ params}[https://cwiki.apache.org/confluence/display/solr/Local+Parameters+in+Queries]
150
+ to Solr4R::Client.query_string.
151
+ * Extended Solr4R::RequestUriExtension#query_pairs to skip +nil+ values.
152
+ * Extended Solr4R::RequestUriExtension#query_pairs to allow control over
153
+ nested key's value (via +:_+).
154
+ * Refactored Solr4R::Document#more_like_this to use
155
+ Solr4R::Client#more_like_this.
156
+ * Refactored Solr4R::Builder#delete to use Solr4R::Client.query_string for
157
+ query hashes.
158
+ * Refactored Solr4R::Request preparation; dropped
159
+ Solr4R::HTTPRequestExtension.
160
+ * Refactored Solr4R::Response initialization.
136
161
 
137
162
  rdoc_options:
138
163
  - "--title"
139
- - solr4r Application documentation (v0.0.5)
164
+ - solr4r Application documentation (v0.0.6)
140
165
  - "--charset"
141
166
  - UTF-8
142
167
  - "--line-numbers"
@@ -157,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
182
  version: '0'
158
183
  requirements: []
159
184
  rubyforge_project:
160
- rubygems_version: 2.4.5
185
+ rubygems_version: 2.4.6
161
186
  signing_key:
162
187
  specification_version: 4
163
188
  summary: A Ruby client for Apache Solr.
@@ -1,44 +0,0 @@
1
- # encoding: utf-8
2
-
3
- #--
4
- ###############################################################################
5
- # #
6
- # solr4r -- A Ruby client for Apache Solr #
7
- # #
8
- # Copyright (C) 2014 Jens Wille #
9
- # #
10
- # Mir is free software: you can redistribute it and/or modify it under the #
11
- # terms of the GNU Affero General Public License as published by the Free #
12
- # Software Foundation, either version 3 of the License, or (at your option) #
13
- # any later version. #
14
- # #
15
- # solr4r is distributed in the hope that it will be useful, but WITHOUT ANY #
16
- # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #
17
- # FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for #
18
- # more details. #
19
- # #
20
- # You should have received a copy of the GNU Affero General Public License #
21
- # along with solr4r. If not, see <http://www.gnu.org/licenses/>. #
22
- # #
23
- ###############################################################################
24
- #++
25
-
26
- require 'cgi'
27
-
28
- module Solr4R
29
-
30
- module HTTPRequestExtension
31
-
32
- def self.extended(base)
33
- base.send(:attr_accessor, :params)
34
- end
35
-
36
- def from_uri(uri)
37
- req = new(uri)
38
- req.params = uri.params
39
- req
40
- end
41
-
42
- end
43
-
44
- end