dnz-client 0.0.2

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.
data/History.txt ADDED
@@ -0,0 +1,4 @@
1
+ === 0.0.1 2009-07-14
2
+
3
+ * 1 major enhancement:
4
+ * Initial release
data/License.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2009 Boost New Media (http://www.boost.co.nz)
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
data/Manifest.txt ADDED
@@ -0,0 +1,21 @@
1
+ History.txt
2
+ Manifest.txt
3
+ PostInstall.txt
4
+ README.rdoc
5
+ License.txt
6
+ Rakefile
7
+ lib/dnz.rb
8
+ lib/dnz/attributes.rb
9
+ lib/dnz/client.rb
10
+ lib/dnz/facet.rb
11
+ lib/dnz/result.rb
12
+ lib/dnz/search.rb
13
+ script/console
14
+ script/destroy
15
+ script/generate
16
+ spec/dnz/client_spec.rb
17
+ spec/dnz/result_spec.rb
18
+ spec/dnz/search_spec.rb
19
+ spec/spec.opts
20
+ spec/spec_helper.rb
21
+ tasks/rspec.rake
data/PostInstall.txt ADDED
@@ -0,0 +1,3 @@
1
+ For more information on DigitalNZ, see http://digitalnz.org
2
+
3
+
data/README.rdoc ADDED
@@ -0,0 +1,46 @@
1
+ = DigitalNZ Client Library
2
+
3
+ * http://github.com/boost/dnz-client
4
+
5
+ == SYNOPSIS:
6
+
7
+ require 'dnz/client'
8
+ client = DNZ::Client.new('abcdefg') # API KEY
9
+ search = client.search('otago')
10
+ search.results.each do |result|
11
+ puts result.title
12
+ end
13
+
14
+ == REQUIREMENTS:
15
+
16
+ * Nokogiri
17
+ * ActiveSupport
18
+
19
+ == INSTALL:
20
+
21
+ * sudo gem install dnz-client / sudo gem install boost-dnz-client
22
+
23
+ == LICENSE:
24
+
25
+ (The MIT License)
26
+
27
+ Copyright (c) 2009 Boost New Media (http:/www.boost.co.nz)
28
+
29
+ Permission is hereby granted, free of charge, to any person obtaining
30
+ a copy of this software and associated documentation files (the
31
+ 'Software'), to deal in the Software without restriction, including
32
+ without limitation the rights to use, copy, modify, merge, publish,
33
+ distribute, sublicense, and/or sell copies of the Software, and to
34
+ permit persons to whom the Software is furnished to do so, subject to
35
+ the following conditions:
36
+
37
+ The above copyright notice and this permission notice shall be
38
+ included in all copies or substantial portions of the Software.
39
+
40
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
41
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
42
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
43
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
44
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
45
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
46
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,26 @@
1
+ require 'rubygems'
2
+ gem 'hoe', '>= 2.1.0'
3
+ require 'hoe'
4
+ require 'fileutils'
5
+ require './lib/dnz'
6
+
7
+ Hoe.plugin :newgem
8
+ # Hoe.plugin :website
9
+ # Hoe.plugin :cucumberfeatures
10
+
11
+ # Generate all the Rake tasks
12
+ # Run 'rake -T' to see list of generated tasks (from gem root directory)
13
+ $hoe = Hoe.spec 'dnz-client' do
14
+ self.developer 'Jeremy Wells', 'jeremy@boost.co.nz'
15
+ self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
16
+ self.description = "Ruby library for accessing Digital New Zealand's search API (digitalnz.org)"
17
+ #self.rubyforge_name = self.name # TODO this is default value
18
+ self.extra_deps = [['activesupport','>= 2.0.2'], ['nokogiri', '>= 1.2.3']]
19
+ end
20
+
21
+ require 'newgem/tasks'
22
+ Dir['tasks/**/*.rake'].each { |t| load t }
23
+
24
+ # TODO - want other tests/tasks run by default? Add them to the list
25
+ # remove_task :default
26
+ # task :default => [:spec, :features]
@@ -0,0 +1,9 @@
1
+ module DNZ
2
+ module Attributes
3
+ def method_missing(symbol, *args)
4
+ if args.empty? && @attributes.has_key?(symbol.to_s)
5
+ @attributes[symbol.to_s]
6
+ end
7
+ end
8
+ end
9
+ end
data/lib/dnz/client.rb ADDED
@@ -0,0 +1,131 @@
1
+ require 'rubygems'
2
+ require 'open-uri'
3
+ require 'set'
4
+ require 'active_support'
5
+ require 'dnz/search'
6
+
7
+ module DNZ
8
+ # This is a simple client for accessing the digitalnz.org API
9
+ # for searching New Zealand's digital content. It provides
10
+ # access to search results and facet information.
11
+ #
12
+ # Author:: Jeremy Wells, Boost New Media (http://www.boost.co.nz)
13
+ # Copyright:: Copyright (c) 2009 Boost New Media
14
+ # License:: MIT
15
+ class Client
16
+ # The dnz API key
17
+ attr_reader :api_key
18
+ # The base URL (defaults to http://api.digitalnz.org)
19
+ attr_reader :base_url
20
+ # The version of the API to use (defaults to v1)
21
+ attr_reader :version
22
+
23
+ APIS = {
24
+ :search => 'records/${version}.xml/',
25
+ :custom_search => 'custom_searches/${version}/${title}.xml'
26
+ }
27
+
28
+ ARGS = {
29
+ :search => Set.new([
30
+ :search_text,
31
+ :api_key,
32
+ :num_results,
33
+ :start,
34
+ :sort,
35
+ :direction,
36
+ :facets,
37
+ :facet_num_results,
38
+ :facet_start,
39
+ ])
40
+ }
41
+
42
+ # List of available facets that can be passed to search
43
+ FACETS = [
44
+ :category, :content_partner, :creator, :language, :rights, :century, :decade, :year
45
+ ]
46
+
47
+ # Constructor method for the Client class. An API key must be provided.
48
+ # The base url and version default to "http://api.digitalnz.org" and "v1".
49
+ #
50
+ # ==== Example
51
+ # client = DNZ::Client.new('abcdefghijklmnoq')
52
+ # search = client.search('some text')
53
+ # search.results.each do |result|
54
+ # puts result.title
55
+ # end
56
+ def initialize(api_key, base_url = 'http://api.digitalnz.org', version = 'v1')
57
+ @api_key = api_key
58
+ @base_url = base_url
59
+ @version = version
60
+ end
61
+
62
+ # Get a list of all categories using the 'category' facet.
63
+ #
64
+ # ==== Example
65
+ # categories = client.categories
66
+ # categories.each do |category|
67
+ # puts category.name
68
+ # end
69
+ def categories
70
+ search('*:*', :facets => 'category', :facet_num_results => 100).facets['category'].values
71
+ end
72
+
73
+ # Run a search using the digitalnz.org API.
74
+ #
75
+ # ==== Options
76
+ #
77
+ # * <tt>:num_results</tt> - The number of results to return in this call. Defaults to 20.
78
+ # * <tt>:start</tt> - The starting offset of the results.
79
+ # * <tt>:facets</tt> - The facets to return for this search.
80
+ #
81
+ # ==== Example
82
+ # search = client.search('rubgy', :num_results => 50)
83
+ # search.results.each_with_index do |result, index|
84
+ # puts "#{index+1}: #{result.title}"
85
+ # end
86
+ def search(text, options = {})
87
+ options.reverse_merge!(
88
+ :search_text => text,
89
+ :num_results => 20,
90
+ :start => 0
91
+ )
92
+
93
+ # Select the correct page
94
+ page = options.delete(:page)
95
+ options[:start] = (page-1) * options[:num_results] if page
96
+
97
+ DNZ::Search.new(self, options)
98
+ end
99
+
100
+ # Make a direct call to the digitalnz.org API.
101
+ #
102
+ # * <tt>api</tt> - The api call to make. This must be listed in the APIS constant.
103
+ # * <tt>options</tt> - A hash of options to pass to the API call. These options must be defined in the ARGS constant.
104
+ def fetch(api, options = {})
105
+ validate_options(api, options)
106
+
107
+ options = options.reverse_merge(:api_key => self.api_key)
108
+
109
+ #api_url = APIS[url]
110
+ #matches = (/\$\{(.*?)\}/)
111
+ #
112
+ #
113
+ #
114
+
115
+
116
+ qs = options.map{|k,v| '%s=%s' % [k,v] }.join('&')
117
+ url = self.base_url + '/' + APIS[api].gsub('${version}', self.version) + '?' + qs
118
+ open(url)
119
+ end
120
+
121
+ private
122
+
123
+ def validate_options(path, options = {})
124
+ options.symbolize_keys!
125
+
126
+ if ARGS.has_key?(path) && !Set.new(options.keys).subset?(ARGS[path])
127
+ raise ArgumentError.new("Valid options for #{path} are: #{ARGS[path].to_a.join(', ')}, provided: #{options.keys.join(', ')}")
128
+ end
129
+ end
130
+ end
131
+ end
data/lib/dnz/facet.rb ADDED
@@ -0,0 +1,48 @@
1
+ require 'dnz/attributes'
2
+
3
+ module DNZ
4
+ class Facet
5
+ attr_reader :name
6
+ attr_reader :values
7
+ attr_reader :search
8
+
9
+ def initialize(client, search, doc)
10
+ @name = doc.xpath('facet-field').text
11
+ @values = []
12
+ @search = search
13
+
14
+ doc.xpath('values').first.children.each do |value_doc|
15
+ value = DNZ::FacetValue.new(client, self, value_doc)
16
+ @values << value if value.valid?
17
+ end
18
+ end
19
+ end
20
+
21
+ class FacetValue
22
+ attr_reader :name, :count
23
+
24
+ def initialize(client, facet, doc)
25
+ @client = client
26
+ @facet = facet
27
+ @search_text = facet.search.text
28
+ @name = doc.xpath('name').text
29
+ @count = doc.xpath('num-results').text.to_i
30
+ end
31
+
32
+ def valid?
33
+ !self.name.blank?
34
+ end
35
+
36
+ def search(text = @search_text, options = {})
37
+ @client.search('%s:%s %s' % [@facet.name, self.name, text], options)
38
+ end
39
+
40
+ def inspect
41
+ {:name => self.name, :count => self.count}.inspect
42
+ end
43
+
44
+ def to_s
45
+ self.name
46
+ end
47
+ end
48
+ end
data/lib/dnz/result.rb ADDED
@@ -0,0 +1,16 @@
1
+ require 'dnz/attributes'
2
+
3
+ module DNZ
4
+ # A DNZ::Search result record
5
+ class Result
6
+ include DNZ::Attributes
7
+
8
+ def initialize(doc)
9
+ @attributes = {}
10
+
11
+ doc.children.each do |child|
12
+ @attributes[child.name.downcase.underscore] = child.text.to_s
13
+ end
14
+ end
15
+ end
16
+ end
data/lib/dnz/search.rb ADDED
@@ -0,0 +1,143 @@
1
+ require 'nokogiri'
2
+ require 'dnz/result'
3
+ require 'dnz/facet_array'
4
+ require 'dnz/facet'
5
+
6
+ begin
7
+ gem 'mislav-will_paginate' rescue nil
8
+ require 'will_paginate/collection' rescue nil
9
+ rescue LoadError => e
10
+ end
11
+
12
+ module DNZ
13
+ # This class represents a digitalnz search API call. It should not be created directly. Instead
14
+ # use the <tt>Client.search</tt> method.
15
+ #
16
+ # === Example
17
+ # search = client.search('text')
18
+ # puts "%d results found on %d pages" % [search.result_count, search.pages]
19
+ class Search
20
+ attr_reader :result_count
21
+
22
+ # Constructor for Search class. Do not call this directly, instead use the <tt>Client.search</tt> method.
23
+ def initialize(client, search_options)
24
+ @client = client
25
+ @search_options = search_options
26
+
27
+ execute
28
+ end
29
+
30
+ # The text used for searching
31
+ def text
32
+ @search_options[:search_text]
33
+ end
34
+
35
+ # The search options passed to the digitalnz API
36
+ def options
37
+ @search_options
38
+ end
39
+
40
+ # An array of results. If the mislav-will_paginate gem is installed this will return a paginated array.
41
+ def results
42
+ if @results.nil?
43
+ parse_results
44
+ paginate_results if defined? WillPaginate::Collection
45
+ end
46
+
47
+ @results
48
+ end
49
+
50
+ # An array of facets.
51
+ #
52
+ # === Example
53
+ # search = client.search('text', :facets => 'category')
54
+ # categories = search.facets['category']
55
+ # categories.each do |category|
56
+ # puts '%d results in category %s' % [category.count, category.name]
57
+ # end
58
+ def facets
59
+ parse_facets if @facets.nil?
60
+ @facets
61
+ end
62
+
63
+ # The current page of results, based on the number of requested results and the start value
64
+ # (see <tt>Client.search</tt>).
65
+ def page
66
+ (((@start || 0) / num_results_requested) + 1) rescue 1
67
+ end
68
+
69
+ # Set the page. This will update the search :start option and call the API again. The results array
70
+ # will be replaced with the new page of results.
71
+ def page=(new_page)
72
+ @search_options['start'] = (new_page-1) * num_results_requested
73
+ execute
74
+ end
75
+
76
+ # The number of pages available for the current search.
77
+ def pages
78
+ num_results_requested < result_count ? (result_count.to_f / num_results_requested).ceil : 0
79
+ end
80
+
81
+ # The number of results requested via the :num_results option (see <tt>Client.search</tt>).
82
+ def num_results_requested
83
+ @num_results_requested || 20
84
+ end
85
+
86
+ def to_s
87
+ {
88
+ :results => self.results.length,
89
+ :facets => self.facets.length,
90
+ :page => self.page,
91
+ :pages => self.pages
92
+ }.inspect
93
+ end
94
+
95
+ private
96
+
97
+ def doc
98
+ @doc ||= Nokogiri::XML(@xml)
99
+ end
100
+
101
+ def execute
102
+ @doc = nil
103
+ @results = nil
104
+ @facets = nil
105
+ @xml = @client.send(:fetch, :search, @search_options)
106
+
107
+ parse_attributes
108
+
109
+ self
110
+ end
111
+
112
+ def paginate_results
113
+ @results = WillPaginate::Collection.create(self.page, num_results_requested, self.result_count) do |pager|
114
+ pager.replace @results
115
+ end
116
+ end
117
+
118
+ def parse_attributes
119
+ %w(num-results-requested result-count start).each do |node|
120
+ if child = doc.root.xpath(node).first
121
+ name = child.name.downcase.underscore
122
+ value = child['type'] == 'integer' ? child.text.to_i : child.text
123
+ instance_variable_set('@%s' % name, value)
124
+ end
125
+ end
126
+ end
127
+
128
+ def parse_results
129
+ @results = []
130
+ doc.xpath('//results/result').each do |result_xml|
131
+ @results << DNZ::Result.new(result_xml)
132
+ end
133
+ end
134
+
135
+ def parse_facets
136
+ @facets = FacetArray.new
137
+
138
+ doc.xpath('//facets/facet').each do |facet_xml|
139
+ @facets << DNZ::Facet.new(@client, self, facet_xml)
140
+ end
141
+ end
142
+ end
143
+ end
data/lib/dnz.rb ADDED
@@ -0,0 +1,8 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ require 'dnz/client'
5
+
6
+ module Dnz
7
+ VERSION = '0.0.2'
8
+ end
data/script/console ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ # File: script/console
3
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
+
5
+ libs = " -r irb/completion"
6
+ # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
+ # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/dnz.rb'}"
9
+
10
+ puts "Loading dnz gem"
11
+ exec "#{irb} #{libs} --simple-prompt"
data/script/destroy ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/destroy'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Destroy.new.run(ARGV)
data/script/generate ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/generate'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Generate.new.run(ARGV)
@@ -0,0 +1,36 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'dnz/client'
3
+
4
+ include DNZ
5
+
6
+ describe Client do
7
+ before(:each) do
8
+ @client = Client.new('abc')
9
+ @client.stub!(:open) # make sure open is never called
10
+ @search = mock(:search)
11
+ DNZ::Search.stub!(:new).and_return(@search)
12
+ end
13
+
14
+ describe '#search' do
15
+ it 'should create a new search object and return it' do
16
+ @client.search('*:*').should be(@search)
17
+ end
18
+ end
19
+
20
+ describe '#fetch' do
21
+ it 'should raise an error an invalid option is set' do
22
+ lambda do
23
+ @client.fetch(:search, :blahblah => 'dlfkgj')
24
+ end.should raise_error(ArgumentError)
25
+ end
26
+
27
+ it 'should call open with query string arguments' do
28
+ @client.should_receive(:open).with do |url|
29
+ url.should include('http://api.digitalnz.org/records/v1.xml/?')
30
+ url.should include('api_key=abc')
31
+ url.should include('search_text=*:*')
32
+ end
33
+ @client.fetch(:search, :search_text => '*:*')
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,8 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'dnz/result'
3
+
4
+ include DNZ
5
+
6
+ describe Result do
7
+
8
+ end
@@ -0,0 +1,55 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'dnz/search'
3
+
4
+ include DNZ
5
+
6
+ describe Search do
7
+ before(:each) do
8
+ @xml = %Q{<?xml version="1.0"?>
9
+ <response>
10
+ <results>
11
+ <result>
12
+ <attribute>test</attribute>
13
+ </result>
14
+ </results>
15
+ <facets>
16
+ <facet>
17
+ <value>test</value>
18
+ </facet>
19
+ </facets>
20
+ </response>
21
+ }
22
+
23
+ @doc = Nokogiri::XML(@xml)
24
+ @client = mock(:client)
25
+ @result = mock(:result)
26
+ @facet = mock(:facet)
27
+ @options = {:search_text => 'test'}
28
+
29
+ Result.stub!(:new).and_return(@result)
30
+ Facet.stub!(:new).and_return(@facet)
31
+
32
+ @client.stub!(:fetch).and_return(@xml)
33
+ end
34
+
35
+ describe 'Search.new' do
36
+ it 'should call @client.fetch' do
37
+ @client.should_receive(:fetch).with(:search, :search_text => 'test').and_return(@xml)
38
+ Search.new(@client, @options)
39
+ end
40
+
41
+ it 'should create one result' do
42
+ Result.should_receive(:new).and_return(@result)
43
+ Search.new(@client, @options).results.should == [@result]
44
+ end
45
+
46
+ it 'should create one facet' do
47
+ Facet.should_receive(:new).and_return(@facet)
48
+ Search.new(@client, @options).facets.should == [@facet]
49
+ end
50
+
51
+ it 'should return facets as a FacetArray' do
52
+ Search.new(@client, @options).facets.should be_a(FacetArray)
53
+ end
54
+ end
55
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1,4 @@
1
+ --colour
2
+ --format progress
3
+ --loadby mtime
4
+ --reverse
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/dnz')
2
+ require 'spec/matchers'
3
+ require 'rubygems'
4
+
5
+ include Spec::Matchers
6
+
7
+ Spec::Runner.configure do |config|
8
+
9
+ end
data/tasks/rspec.rake ADDED
@@ -0,0 +1,21 @@
1
+ begin
2
+ require 'spec'
3
+ rescue LoadError
4
+ require 'rubygems'
5
+ require 'spec'
6
+ end
7
+ begin
8
+ require 'spec/rake/spectask'
9
+ rescue LoadError
10
+ puts <<-EOS
11
+ To use rspec for testing you must install rspec gem:
12
+ gem install rspec
13
+ EOS
14
+ exit(0)
15
+ end
16
+
17
+ desc "Run the specs under spec"
18
+ Spec::Rake::SpecTask.new do |t|
19
+ t.spec_opts = ['--options', "spec/spec.opts"]
20
+ t.spec_files = FileList['spec/**/*_spec.rb']
21
+ end
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dnz-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Jeremy Wells
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-12 00:00:00 +13:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.0.2
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: nokogiri
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.2.3
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: hoe
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 2.3.3
44
+ version:
45
+ description: Ruby library for accessing Digital New Zealand's search API (digitalnz.org)
46
+ email:
47
+ - jeremy@boost.co.nz
48
+ executables: []
49
+
50
+ extensions: []
51
+
52
+ extra_rdoc_files:
53
+ - History.txt
54
+ - Manifest.txt
55
+ - PostInstall.txt
56
+ - License.txt
57
+ files:
58
+ - History.txt
59
+ - Manifest.txt
60
+ - PostInstall.txt
61
+ - README.rdoc
62
+ - License.txt
63
+ - Rakefile
64
+ - lib/dnz.rb
65
+ - lib/dnz/attributes.rb
66
+ - lib/dnz/client.rb
67
+ - lib/dnz/facet.rb
68
+ - lib/dnz/result.rb
69
+ - lib/dnz/search.rb
70
+ - script/console
71
+ - script/destroy
72
+ - script/generate
73
+ - spec/dnz/client_spec.rb
74
+ - spec/dnz/result_spec.rb
75
+ - spec/dnz/search_spec.rb
76
+ - spec/spec.opts
77
+ - spec/spec_helper.rb
78
+ - tasks/rspec.rake
79
+ has_rdoc: true
80
+ homepage: http://github.com/boost/dnz-client
81
+ licenses: []
82
+
83
+ post_install_message: PostInstall.txt
84
+ rdoc_options:
85
+ - --main
86
+ - README.rdoc
87
+ require_paths:
88
+ - lib
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: "0"
94
+ version:
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: "0"
100
+ version:
101
+ requirements: []
102
+
103
+ rubyforge_project: dnz-client
104
+ rubygems_version: 1.3.3
105
+ signing_key:
106
+ specification_version: 3
107
+ summary: ""
108
+ test_files: []
109
+