dnz-client 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 0.0.7 2009-11-16
2
+
3
+ * Support for multiple values in a filter
4
+
1
5
  === 0.0.5 2009-09-15
2
6
 
3
7
  * Support for custom_search API calls.
data/Rakefile CHANGED
@@ -16,6 +16,7 @@ $hoe = Hoe.spec 'dnz-client' do
16
16
  self.description = "Ruby library for accessing Digital New Zealand's search API (digitalnz.org)"
17
17
  #self.rubyforge_name = self.name # TODO this is default value
18
18
  self.extra_deps = [['activesupport','>= 2.0.2'], ['nokogiri', '>= 1.2.3']]
19
+ self.extra_rdoc_files << 'README.rdoc'
19
20
  end
20
21
 
21
22
  require 'newgem/tasks'
data/lib/dnz/client.rb CHANGED
@@ -21,11 +21,13 @@ module DNZ
21
21
  # The version of the API to use (defaults to v1)
22
22
  attr_reader :version
23
23
 
24
+ # API URLS
24
25
  APIS = {
25
26
  :search => 'records/${version}.xml/',
26
27
  :custom_search => 'custom_searches/${version}/${custom_search}.xml'
27
28
  }
28
29
 
30
+ # API Arguments
29
31
  ARGS = {
30
32
  :v1 => {
31
33
  :search => Set.new([
@@ -114,14 +116,21 @@ module DNZ
114
116
  # * <tt>:num_results</tt> - The number of results to return in this call. Defaults to 20.
115
117
  # * <tt>:start</tt> - The starting offset of the results.
116
118
  # * <tt>:facets</tt> - The facets to return for this search.
117
- # * <tt>:filter</tt> - A hash of filters to apply to the results
119
+ # * <tt>:filter</tt> - A hash of filters to apply to the results. Filters can be a string value or
120
+ # an array of string values.
118
121
  # * <tt>:custom_search</tt> - The name of a custom search created at http://digitalnz.org
119
122
  #
120
123
  # ==== Example
121
- # search = client.search('rubgy', :num_results => 50)
124
+ # search = client.search('rugby', :num_results => 50)
122
125
  # search.results.each_with_index do |result, index|
123
126
  # puts "#{index+1}: #{result.title}"
124
127
  # end
128
+ #
129
+ # ==== Filter example
130
+ # This example will search for rugby items with the category Images or Web pages.
131
+ #
132
+ # search = client.search('rugby', :filter => {:category => ['Images', 'Web pages']})
133
+ #
125
134
  def search(text, options = {})
126
135
  options.reverse_merge!(
127
136
  :search_text => text,
data/lib/dnz/search.rb CHANGED
@@ -105,7 +105,14 @@ module DNZ
105
105
  filter = @search_options[:filter]
106
106
  filter = {} unless filter.is_a?(Hash)
107
107
  filter.symbolize_keys!
108
- filter.map{|k,v| '%s:"%s"' % [k,v]}
108
+ filter.map do |k,v|
109
+ if v.is_a?(Array)
110
+ # OR together multiple values for the same filter
111
+ '(' + v.map{|i| '%s:"%s"' % [k,i]}.join(' OR ') + ')'
112
+ else
113
+ '%s:"%s"' % [k,v]
114
+ end
115
+ end
109
116
  end
110
117
  memoize :parsed_search_filter
111
118
 
@@ -210,4 +217,4 @@ module DNZ
210
217
  end
211
218
  end
212
219
  end
213
- end
220
+ end
data/lib/dnz.rb CHANGED
@@ -4,5 +4,5 @@ $:.unshift(File.dirname(__FILE__)) unless
4
4
  require 'dnz/client'
5
5
 
6
6
  module Dnz
7
- VERSION = '0.0.5'
7
+ VERSION = '0.0.7'
8
8
  end
@@ -54,17 +54,24 @@ describe Search do
54
54
  end
55
55
 
56
56
  describe 'filtering' do
57
- before do
57
+ it 'should call @client.fetch with the search text set to \'test AND category:"Images"\'' do
58
58
  @options = {:search_text => 'test', :filter => {:category => 'Images'}}
59
+ @client.should_receive(:fetch).with(
60
+ :search,
61
+ :search_text => 'test AND category:"Images"',
62
+ :facets => ""
63
+ ).and_return(@xml)
64
+ Search.new(@client, @options)
59
65
  end
60
66
 
61
- it 'should call @client.fetch with the search text set to \'test AND category:"Images"\'' do
67
+ it 'should call @client.fetch with the search text set to \'test AND (category:"Images" OR category:"Videos"\'' do
68
+ @options = {:search_text => 'test', :filter => {:category => ['Images', 'Videos']}}
62
69
  @client.should_receive(:fetch).with(
63
70
  :search,
64
- :search_text => 'test AND category:"Images"',
71
+ :search_text => 'test AND (category:"Images" OR category:"Videos")',
65
72
  :facets => ""
66
73
  ).and_return(@xml)
67
74
  Search.new(@client, @options)
68
75
  end
69
76
  end
70
- end
77
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dnz-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Wells
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-15 00:00:00 +13:00
12
+ date: 2009-11-16 00:00:00 +13:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -54,6 +54,7 @@ extra_rdoc_files:
54
54
  - Manifest.txt
55
55
  - PostInstall.txt
56
56
  - License.txt
57
+ - README.rdoc
57
58
  files:
58
59
  - History.txt
59
60
  - Manifest.txt