oai 0.0.13 → 0.1.0
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/Rakefile +41 -35
- data/lib/oai/client.rb +20 -17
- data/lib/oai/client/response.rb +20 -0
- data/test/client/helpers/test_wrapper.rb +7 -0
- data/test/client/tc_http_client.rb +26 -0
- data/test/client/tc_utf8_escaping.rb +1 -0
- data/test/client/test_helper.rb +9 -1
- data/test/provider/models.rb +1 -1
- data/test/provider/tc_exceptions.rb +0 -1
- metadata +156 -102
data/Rakefile
CHANGED
@@ -1,42 +1,21 @@
|
|
1
|
-
RUBY_OAI_VERSION = '0.0.13'
|
2
1
|
|
3
2
|
require 'rubygems'
|
4
3
|
require 'rake'
|
4
|
+
begin
|
5
|
+
require 'bundler/setup'
|
6
|
+
rescue LoadError
|
7
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
8
|
+
end
|
9
|
+
|
10
|
+
Bundler::GemHelper.install_tasks
|
11
|
+
|
5
12
|
require 'rake/testtask'
|
6
|
-
require '
|
7
|
-
require 'rake/packagetask'
|
8
|
-
require 'rake/gempackagetask'
|
13
|
+
require 'rdoc/task'
|
9
14
|
|
10
15
|
task :default => ["test"]
|
11
16
|
|
12
17
|
task :test => ["test:client", "test:provider"]
|
13
18
|
|
14
|
-
spec = Gem::Specification.new do |s|
|
15
|
-
s.name = 'oai'
|
16
|
-
s.version = RUBY_OAI_VERSION
|
17
|
-
s.author = 'Ed Summers'
|
18
|
-
s.email = 'ehs@pobox.com'
|
19
|
-
s.homepage = 'http://www.textualize.com/ruby_oai_0'
|
20
|
-
s.platform = Gem::Platform::RUBY
|
21
|
-
s.summary = 'A ruby library for working with the Open Archive Initiative Protocol for Metadata Harvesting (OAI-PMH)'
|
22
|
-
s.require_path = 'lib'
|
23
|
-
s.autorequire = 'oai'
|
24
|
-
s.bindir = 'bin'
|
25
|
-
s.executables = 'oai'
|
26
|
-
|
27
|
-
s.add_dependency('builder', '>=2.0.0')
|
28
|
-
|
29
|
-
s.files = %w(README.md Rakefile) +
|
30
|
-
Dir.glob("{bin,test,lib}/**/*") +
|
31
|
-
Dir.glob("examples/**/*.rb")
|
32
|
-
end
|
33
|
-
|
34
|
-
Rake::GemPackageTask.new(spec) do |pkg|
|
35
|
-
pkg.need_zip = true
|
36
|
-
pkg.need_tar = true
|
37
|
-
pkg.gem_spec = spec
|
38
|
-
end
|
39
|
-
|
40
19
|
namespace :test do
|
41
20
|
Rake::TestTask.new('client') do |t|
|
42
21
|
t.libs << ['lib', 'test/client']
|
@@ -62,13 +41,40 @@ namespace :test do
|
|
62
41
|
task :coverage do
|
63
42
|
rm_f "coverage"
|
64
43
|
rm_f "coverage.data"
|
65
|
-
|
66
|
-
|
67
|
-
|
44
|
+
if RUBY_VERSION =~ /^1.8/
|
45
|
+
Rake::Task['rcov:client'].invoke
|
46
|
+
Rake::Task['rcov:provider'].invoke
|
47
|
+
else
|
48
|
+
ENV['COVERAGE'] = 'true'
|
49
|
+
Rake::Task['test:client'].invoke
|
50
|
+
Rake::Task['test:provider'].invoke
|
51
|
+
end
|
52
|
+
|
53
|
+
system("open coverage/index.html") if (PLATFORM['darwin'] if Kernel.const_defined? :PLATFORM) || (RUBY_PLATFORM =~ /darwin/ if Kernel.const_defined? :RUBY_PLATFORM)
|
68
54
|
end
|
69
55
|
|
70
56
|
end
|
71
57
|
|
58
|
+
if RUBY_VERSION =~ /^1.8/
|
59
|
+
require 'rcov/rcovtask'
|
60
|
+
namespace :rcov do
|
61
|
+
Rcov::RcovTask.new do |t|
|
62
|
+
t.name = 'client'
|
63
|
+
t.libs << ['lib', 'test/client']
|
64
|
+
t.pattern = 'test/client/tc_*.rb'
|
65
|
+
t.verbose = true
|
66
|
+
t.rcov_opts = ['--aggregate coverage.data', '--text-summary']
|
67
|
+
end
|
68
|
+
|
69
|
+
Rcov::RcovTask.new('provider') do |t|
|
70
|
+
t.libs << ['lib', 'test/provider']
|
71
|
+
t.pattern = 'test/provider/tc_*.rb'
|
72
|
+
t.verbose = true
|
73
|
+
t.rcov_opts = ['--aggregate coverage.data', '--text-summary']
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
72
78
|
task 'test:activerecord_provider' => :create_database
|
73
79
|
|
74
80
|
task :environment do
|
@@ -104,7 +110,7 @@ task :load_fixtures => :create_database do
|
|
104
110
|
end
|
105
111
|
|
106
112
|
Rake::RDocTask.new('doc') do |rd|
|
107
|
-
rd.rdoc_files.include("lib/**/*.rb", "README")
|
108
|
-
rd.main = 'README'
|
113
|
+
rd.rdoc_files.include("lib/**/*.rb", "README.md")
|
114
|
+
rd.main = 'README.md'
|
109
115
|
rd.rdoc_dir = 'doc'
|
110
116
|
end
|
data/lib/oai/client.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# External dependencies
|
2
2
|
require 'uri'
|
3
|
-
require '
|
3
|
+
require 'faraday'
|
4
4
|
require 'cgi'
|
5
5
|
require 'iconv'
|
6
6
|
|
@@ -67,6 +67,11 @@ module OAI
|
|
67
67
|
# back XML::Node objects
|
68
68
|
#
|
69
69
|
# client = OAI::Client.new 'http://example.com', :parser => 'libxml'
|
70
|
+
#
|
71
|
+
# You can configure the Faraday HTTP client by providing an alternate
|
72
|
+
# Faraday instance:
|
73
|
+
#
|
74
|
+
# client = OAI::Client.new 'http://example.com', :http => Faraday.new { |c| }
|
70
75
|
#
|
71
76
|
# === HIGH PERFORMANCE
|
72
77
|
#
|
@@ -77,7 +82,18 @@ module OAI
|
|
77
82
|
@base = URI.parse base_url
|
78
83
|
@debug = options.fetch(:debug, false)
|
79
84
|
@parser = options.fetch(:parser, 'rexml')
|
85
|
+
|
80
86
|
@follow_redirects = options.fetch(:redirects, true)
|
87
|
+
@http_client = options.fetch(:http, Faraday.new(@base))
|
88
|
+
|
89
|
+
if !options.key?(:http) and @follow_redirects
|
90
|
+
|
91
|
+
count = @folow_redirects if @folow_redirects.is_a? Fixnum
|
92
|
+
count ||= 5
|
93
|
+
|
94
|
+
require 'faraday_middleware'
|
95
|
+
@http_client.use FaradayMiddleware::FollowRedirects, :limit => count
|
96
|
+
end
|
81
97
|
|
82
98
|
# load appropriate parser
|
83
99
|
case @parser
|
@@ -98,7 +114,7 @@ module OAI
|
|
98
114
|
|
99
115
|
# Equivalent to a Identify request. You'll get back a OAI::IdentifyResponse
|
100
116
|
# object which is essentially just a wrapper around a REXML::Document
|
101
|
-
# for the response. If you
|
117
|
+
# for the response. If you created your client using the libxml
|
102
118
|
# parser then you will get an XML::Node object instead.
|
103
119
|
|
104
120
|
def identify
|
@@ -207,21 +223,8 @@ module OAI
|
|
207
223
|
|
208
224
|
# Do the actual HTTP get, following any temporary redirects
|
209
225
|
def get(uri)
|
210
|
-
response =
|
211
|
-
|
212
|
-
when Net::HTTPSuccess
|
213
|
-
return response.body
|
214
|
-
when Net::HTTPMovedPermanently
|
215
|
-
if @follow_redirects
|
216
|
-
response = get(URI.parse(response['location']))
|
217
|
-
else
|
218
|
-
raise ArgumentError, "Permanently Redirected to [#{response['location']}]"
|
219
|
-
end
|
220
|
-
when Net::HTTPTemporaryRedirect
|
221
|
-
response = get(URI.parse(response['location']))
|
222
|
-
else
|
223
|
-
raise ArgumentError, "#{response.code_type} [#{response.code}]"
|
224
|
-
end
|
226
|
+
response = @http_client.get uri
|
227
|
+
response.body
|
225
228
|
end
|
226
229
|
|
227
230
|
def debug(msg)
|
data/lib/oai/client/response.rb
CHANGED
@@ -1,4 +1,24 @@
|
|
1
1
|
module OAI
|
2
|
+
|
3
|
+
# An OAI::Response contains entries and a resumption token. If a resumption token is present,
|
4
|
+
# then you must use it to fetch the rest of the entries for your query. For example:
|
5
|
+
# # List all records
|
6
|
+
# i = 1
|
7
|
+
# begin
|
8
|
+
# response = client.list_records
|
9
|
+
# while response.entries.size > 0
|
10
|
+
# response.entries.each { |entry|
|
11
|
+
# puts "<b>#{i}</b> #{entry.header.identifier}<br/>"
|
12
|
+
# i +=1
|
13
|
+
# }
|
14
|
+
# token = response.resumption_token
|
15
|
+
# response = client.list_records :resumption_token => token if token
|
16
|
+
# end
|
17
|
+
# rescue OAI::Exception => e
|
18
|
+
# puts 'No records to process'
|
19
|
+
# end
|
20
|
+
# puts "Done processing #{i} records"
|
21
|
+
|
2
22
|
class Response
|
3
23
|
include OAI::XPath
|
4
24
|
attr_reader :doc, :resumption_token
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class HttpClientTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_pluggable_http_client
|
6
|
+
oai_response = <<-eos
|
7
|
+
<Identify>
|
8
|
+
<repositoryName>Mock OAI Provider</repositoryName>
|
9
|
+
<baseURL>http://nowhere.example.com</baseURL>
|
10
|
+
</Identify>
|
11
|
+
eos
|
12
|
+
|
13
|
+
faraday_stub = Faraday.new do |builder|
|
14
|
+
builder.adapter :test do |stub|
|
15
|
+
stub.get('/oai?verb=Identify') { [200, {}, oai_response] }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
client = OAI::Client.new 'http://localhost:3333/oai', :http => faraday_stub
|
19
|
+
response = client.identify
|
20
|
+
|
21
|
+
assert_kind_of OAI::IdentifyResponse, response
|
22
|
+
assert_equal 'Mock OAI Provider [http://nowhere.example.com]', response.to_s
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
@@ -5,6 +5,7 @@ class UTF8Test < Test::Unit::TestCase
|
|
5
5
|
def test_escaping_invalid_utf_8_characters
|
6
6
|
client = OAI::Client.new 'http://localhost:3333/oai' #, :parser => 'libxml'
|
7
7
|
invalid_utf_8 = [2, 3, 4, 104, 5, 101, 6, 108, 66897, 108, 66535, 111, 1114112, 33, 55234123, 33].pack("U*")
|
8
|
+
invalid_utf_8 = invalid_utf_8.force_encoding("binary") if invalid_utf_8.respond_to? :force_encoding
|
8
9
|
assert_equal("hello!!", client.send(:strip_invalid_utf_8_chars, invalid_utf_8).gsub(/\?/, ''))
|
9
10
|
end
|
10
11
|
|
data/test/client/test_helper.rb
CHANGED
@@ -1,5 +1,13 @@
|
|
1
|
+
if ENV['COVERAGE'] and RUBY_VERSION =~ /^1.9/
|
2
|
+
require 'simplecov'
|
3
|
+
require 'simplecov-rcov'
|
4
|
+
|
5
|
+
SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
|
6
|
+
SimpleCov.start
|
7
|
+
end
|
8
|
+
|
1
9
|
require 'oai'
|
2
10
|
require 'test/unit'
|
3
11
|
|
4
12
|
require File.dirname(__FILE__) + '/helpers/provider'
|
5
|
-
require File.dirname(__FILE__) + '/helpers/test_wrapper'
|
13
|
+
require File.dirname(__FILE__) + '/helpers/test_wrapper'
|
data/test/provider/models.rb
CHANGED
@@ -112,7 +112,7 @@ class TestModel < OAI::Provider::Model
|
|
112
112
|
end
|
113
113
|
|
114
114
|
def generate_records(number, timestamp = Time.now.utc.xmlschema, sets = [], deleted = false)
|
115
|
-
@earliest = timestamp.dup if @earliest.nil? || timestamp.to_s < @earliest
|
115
|
+
@earliest = timestamp.dup if @earliest.nil? || timestamp.to_s < @earliest.to_s
|
116
116
|
@earliest = timestamp.dup if @earliest.nil?
|
117
117
|
|
118
118
|
# Add any sets we don't already have
|
metadata
CHANGED
@@ -1,161 +1,215 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: oai
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 13
|
10
|
-
version: 0.0.13
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Ed Summers
|
14
9
|
autorequire: oai
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-06-01 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: builder
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 2.0.0
|
22
|
+
type: :runtime
|
22
23
|
prerelease: false
|
23
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
25
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 15
|
29
|
-
segments:
|
30
|
-
- 2
|
31
|
-
- 0
|
32
|
-
- 0
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
33
29
|
version: 2.0.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: faraday
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: faraday_middleware
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
34
54
|
type: :runtime
|
35
|
-
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rake
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rdoc
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
36
94
|
description:
|
37
95
|
email: ehs@pobox.com
|
38
|
-
executables:
|
96
|
+
executables:
|
39
97
|
- oai
|
40
98
|
extensions: []
|
41
|
-
|
42
99
|
extra_rdoc_files: []
|
43
|
-
|
44
|
-
files:
|
100
|
+
files:
|
45
101
|
- README.md
|
46
102
|
- Rakefile
|
47
103
|
- bin/oai
|
48
|
-
- test/
|
49
|
-
- test/
|
104
|
+
- test/activerecord_provider/config/connection.rb
|
105
|
+
- test/activerecord_provider/config/database.yml
|
106
|
+
- test/activerecord_provider/database/ar_migration.rb
|
107
|
+
- test/activerecord_provider/database/oaipmhtest
|
108
|
+
- test/activerecord_provider/fixtures/dc.yml
|
109
|
+
- test/activerecord_provider/helpers/providers.rb
|
110
|
+
- test/activerecord_provider/helpers/set_provider.rb
|
111
|
+
- test/activerecord_provider/models/dc_field.rb
|
112
|
+
- test/activerecord_provider/models/dc_set.rb
|
113
|
+
- test/activerecord_provider/models/oai_token.rb
|
114
|
+
- test/activerecord_provider/tc_ar_provider.rb
|
115
|
+
- test/activerecord_provider/tc_ar_sets_provider.rb
|
116
|
+
- test/activerecord_provider/tc_caching_paging_provider.rb
|
117
|
+
- test/activerecord_provider/tc_simple_paging_provider.rb
|
118
|
+
- test/activerecord_provider/test_helper.rb
|
50
119
|
- test/client/helpers/provider.rb
|
51
120
|
- test/client/helpers/test_wrapper.rb
|
121
|
+
- test/client/tc_exception.rb
|
122
|
+
- test/client/tc_get_record.rb
|
123
|
+
- test/client/tc_http_client.rb
|
124
|
+
- test/client/tc_identify.rb
|
125
|
+
- test/client/tc_libxml.rb
|
52
126
|
- test/client/tc_list_identifiers.rb
|
53
|
-
- test/client/
|
54
|
-
- test/client/tc_list_sets.rb
|
55
|
-
- test/client/test_helper.rb
|
127
|
+
- test/client/tc_list_metadata_formats.rb
|
56
128
|
- test/client/tc_list_records.rb
|
57
|
-
- test/client/
|
129
|
+
- test/client/tc_list_sets.rb
|
58
130
|
- test/client/tc_low_resolution_dates.rb
|
59
|
-
- test/client/
|
60
|
-
- test/client/tc_list_metadata_formats.rb
|
131
|
+
- test/client/tc_utf8_escaping.rb
|
61
132
|
- test/client/tc_xpath.rb
|
62
|
-
- test/
|
133
|
+
- test/client/test_helper.rb
|
63
134
|
- test/provider/models.rb
|
135
|
+
- test/provider/tc_exceptions.rb
|
64
136
|
- test/provider/tc_functional_tokens.rb
|
65
137
|
- test/provider/tc_provider.rb
|
66
138
|
- test/provider/tc_resumption_tokens.rb
|
139
|
+
- test/provider/tc_simple_provider.rb
|
67
140
|
- test/provider/test_helper.rb
|
68
|
-
- test/provider/tc_exceptions.rb
|
69
141
|
- test/test.xml
|
70
|
-
-
|
71
|
-
- test/activerecord_provider/helpers/providers.rb
|
72
|
-
- test/activerecord_provider/helpers/set_provider.rb
|
73
|
-
- test/activerecord_provider/tc_caching_paging_provider.rb
|
74
|
-
- test/activerecord_provider/tc_ar_sets_provider.rb
|
75
|
-
- test/activerecord_provider/models/oai_token.rb
|
76
|
-
- test/activerecord_provider/models/dc_set.rb
|
77
|
-
- test/activerecord_provider/models/dc_field.rb
|
78
|
-
- test/activerecord_provider/test_helper.rb
|
79
|
-
- test/activerecord_provider/tc_simple_paging_provider.rb
|
80
|
-
- test/activerecord_provider/database/oaipmhtest
|
81
|
-
- test/activerecord_provider/database/ar_migration.rb
|
82
|
-
- test/activerecord_provider/tc_ar_provider.rb
|
83
|
-
- test/activerecord_provider/config/connection.rb
|
84
|
-
- test/activerecord_provider/config/database.yml
|
85
|
-
- lib/oai/set.rb
|
86
|
-
- lib/oai/xpath.rb
|
87
|
-
- lib/oai/harvester/logging.rb
|
88
|
-
- lib/oai/harvester/mailer.rb
|
89
|
-
- lib/oai/harvester/harvest.rb
|
90
|
-
- lib/oai/harvester/shell.rb
|
91
|
-
- lib/oai/harvester/config.rb
|
92
|
-
- lib/oai/client/list_identifiers.rb
|
93
|
-
- lib/oai/client/list_records.rb
|
142
|
+
- lib/oai/client/get_record.rb
|
94
143
|
- lib/oai/client/header.rb
|
95
144
|
- lib/oai/client/identify.rb
|
96
|
-
- lib/oai/client/
|
97
|
-
- lib/oai/client/get_record.rb
|
98
|
-
- lib/oai/client/response.rb
|
99
|
-
- lib/oai/client/metadata_format.rb
|
145
|
+
- lib/oai/client/list_identifiers.rb
|
100
146
|
- lib/oai/client/list_metadata_formats.rb
|
147
|
+
- lib/oai/client/list_records.rb
|
101
148
|
- lib/oai/client/list_sets.rb
|
102
|
-
- lib/oai/
|
149
|
+
- lib/oai/client/metadata_format.rb
|
150
|
+
- lib/oai/client/record.rb
|
151
|
+
- lib/oai/client/response.rb
|
152
|
+
- lib/oai/client.rb
|
153
|
+
- lib/oai/constants.rb
|
154
|
+
- lib/oai/exception.rb
|
155
|
+
- lib/oai/harvester/config.rb
|
156
|
+
- lib/oai/harvester/harvest.rb
|
157
|
+
- lib/oai/harvester/logging.rb
|
158
|
+
- lib/oai/harvester/mailer.rb
|
159
|
+
- lib/oai/harvester/shell.rb
|
160
|
+
- lib/oai/harvester.rb
|
161
|
+
- lib/oai/provider/metadata_format/oai_dc.rb
|
162
|
+
- lib/oai/provider/metadata_format.rb
|
103
163
|
- lib/oai/provider/model/activerecord_caching_wrapper.rb
|
104
164
|
- lib/oai/provider/model/activerecord_wrapper.rb
|
105
|
-
- lib/oai/provider/
|
106
|
-
- lib/oai/provider/
|
107
|
-
- lib/oai/provider/response/record_response.rb
|
108
|
-
- lib/oai/provider/response/identify.rb
|
165
|
+
- lib/oai/provider/model.rb
|
166
|
+
- lib/oai/provider/partial_result.rb
|
109
167
|
- lib/oai/provider/response/error.rb
|
110
168
|
- lib/oai/provider/response/get_record.rb
|
169
|
+
- lib/oai/provider/response/identify.rb
|
170
|
+
- lib/oai/provider/response/list_identifiers.rb
|
111
171
|
- lib/oai/provider/response/list_metadata_formats.rb
|
172
|
+
- lib/oai/provider/response/list_records.rb
|
112
173
|
- lib/oai/provider/response/list_sets.rb
|
113
|
-
- lib/oai/provider/
|
114
|
-
- lib/oai/provider/resumption_token.rb
|
174
|
+
- lib/oai/provider/response/record_response.rb
|
115
175
|
- lib/oai/provider/response.rb
|
116
|
-
- lib/oai/provider/
|
117
|
-
- lib/oai/provider/metadata_format.rb
|
118
|
-
- lib/oai/constants.rb
|
119
|
-
- lib/oai/client.rb
|
176
|
+
- lib/oai/provider/resumption_token.rb
|
120
177
|
- lib/oai/provider.rb
|
121
|
-
- lib/oai/
|
122
|
-
- lib/oai/
|
123
|
-
- lib/test.rb
|
178
|
+
- lib/oai/set.rb
|
179
|
+
- lib/oai/xpath.rb
|
124
180
|
- lib/oai.rb
|
125
|
-
-
|
181
|
+
- lib/test.rb
|
126
182
|
- examples/models/file_model.rb
|
127
|
-
|
183
|
+
- examples/providers/dublin_core.rb
|
184
|
+
homepage: http://github.com/code4lib/ruby-oai
|
128
185
|
licenses: []
|
129
|
-
|
130
186
|
post_install_message:
|
131
187
|
rdoc_options: []
|
132
|
-
|
133
|
-
require_paths:
|
188
|
+
require_paths:
|
134
189
|
- lib
|
135
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
190
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
136
191
|
none: false
|
137
|
-
requirements:
|
138
|
-
- -
|
139
|
-
- !ruby/object:Gem::Version
|
140
|
-
|
141
|
-
segments:
|
192
|
+
requirements:
|
193
|
+
- - ! '>='
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '0'
|
196
|
+
segments:
|
142
197
|
- 0
|
143
|
-
|
144
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
198
|
+
hash: -1260822851612593558
|
199
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
200
|
none: false
|
146
|
-
requirements:
|
147
|
-
- -
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
|
150
|
-
segments:
|
201
|
+
requirements:
|
202
|
+
- - ! '>='
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '0'
|
205
|
+
segments:
|
151
206
|
- 0
|
152
|
-
|
207
|
+
hash: -1260822851612593558
|
153
208
|
requirements: []
|
154
|
-
|
155
209
|
rubyforge_project:
|
156
|
-
rubygems_version: 1.
|
210
|
+
rubygems_version: 1.8.24
|
157
211
|
signing_key:
|
158
212
|
specification_version: 3
|
159
|
-
summary: A ruby library for working with the Open Archive Initiative Protocol for
|
213
|
+
summary: A ruby library for working with the Open Archive Initiative Protocol for
|
214
|
+
Metadata Harvesting (OAI-PMH)
|
160
215
|
test_files: []
|
161
|
-
|