oai 1.1.0 → 1.2.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.
- checksums.yaml +4 -4
- data/README.md +19 -4
- data/Rakefile +7 -0
- data/bin/oai +0 -2
- data/examples/models/file_model.rb +2 -2
- data/lib/oai/client/response.rb +8 -8
- data/lib/oai/client.rb +34 -10
- data/lib/oai/exception.rb +46 -38
- data/lib/oai/harvester/config.rb +1 -1
- data/lib/oai/harvester/harvest.rb +37 -25
- data/lib/oai/harvester/logging.rb +3 -5
- data/lib/oai/harvester.rb +4 -1
- data/lib/oai/provider/model/activerecord_caching_wrapper.rb +5 -8
- data/lib/oai/provider/model/activerecord_wrapper.rb +38 -22
- data/lib/oai/provider/model.rb +1 -1
- data/lib/oai/provider/response/list_records.rb +12 -0
- data/lib/oai/provider/response.rb +7 -4
- data/lib/oai/provider/resumption_token.rb +18 -5
- data/test/activerecord_provider/database/0001_oaipmh_tables.rb +7 -1
- data/test/activerecord_provider/helpers/providers.rb +3 -1
- data/test/activerecord_provider/helpers/transactional_test_case.rb +2 -1
- data/test/activerecord_provider/models/dc_field.rb +8 -0
- data/test/activerecord_provider/models/dc_lang.rb +3 -0
- data/test/activerecord_provider/models/exclusive_set_dc_field.rb +6 -0
- data/test/activerecord_provider/tc_activerecord_wrapper.rb +63 -0
- data/test/activerecord_provider/tc_ar_provider.rb +54 -26
- data/test/activerecord_provider/tc_ar_sets_provider.rb +10 -9
- data/test/activerecord_provider/tc_caching_paging_provider.rb +9 -7
- data/test/activerecord_provider/tc_simple_paging_provider.rb +9 -7
- data/test/client/tc_exception.rb +1 -1
- data/test/client/tc_get_record.rb +1 -1
- data/test/client/tc_http_client.rb +2 -2
- data/test/client/tc_libxml.rb +1 -1
- data/test/client/tc_utf8_escaping.rb +8 -1
- data/test/harvester/tc_harvest.rb +42 -0
- data/test/harvester/test_helper_harvester.rb +6 -0
- data/test/provider/models.rb +3 -3
- data/test/provider/tc_functional_tokens.rb +17 -11
- data/test/provider/tc_provider.rb +26 -0
- metadata +27 -16
@@ -13,15 +13,16 @@ class ResumptionTokenFunctionalTest < Test::Unit::TestCase
|
|
13
13
|
end
|
14
14
|
doc = Document.new(@provider.list_records(:metadata_prefix => 'oai_dc'))
|
15
15
|
assert_not_nil doc.elements["/OAI-PMH/ListRecords/resumptionToken"]
|
16
|
-
assert_equal
|
16
|
+
assert_equal (@provider.model.limit + 1), doc.elements["/OAI-PMH/ListRecords"].to_a.size
|
17
17
|
token = doc.elements["/OAI-PMH/ListRecords/resumptionToken"].text
|
18
18
|
doc = Document.new(@provider.list_records(:resumption_token => token))
|
19
19
|
assert_not_nil doc.elements["/OAI-PMH/ListRecords/resumptionToken"]
|
20
|
-
assert_equal
|
20
|
+
assert_equal (@provider.model.limit + 1), doc.elements["/OAI-PMH/ListRecords"].to_a.size
|
21
21
|
end
|
22
22
|
|
23
23
|
def test_from_and_until_with_resumption_tokens
|
24
|
-
# Should return
|
24
|
+
# Should return 550 records broken into 5 groups of 100, and a final group of 50.
|
25
|
+
# checked elements under ListRecords are limit + 1, accounting for the resumptionToken element
|
25
26
|
assert_nothing_raised do
|
26
27
|
Document.new(@provider.list_records(:metadata_prefix => 'oai_dc'))
|
27
28
|
end
|
@@ -29,19 +30,24 @@ class ResumptionTokenFunctionalTest < Test::Unit::TestCase
|
|
29
30
|
@provider.list_records(
|
30
31
|
:metadata_prefix => 'oai_dc',
|
31
32
|
:from => Time.parse("September 1 2004"),
|
32
|
-
:until => Time.parse("
|
33
|
+
:until => Time.parse("December 25 2005"))
|
33
34
|
)
|
34
|
-
assert_equal
|
35
|
-
token = doc.elements["/OAI-PMH/ListRecords/resumptionToken"].text
|
36
|
-
|
37
|
-
doc = Document.new(@provider.list_records(:resumption_token => token))
|
35
|
+
assert_equal (@provider.model.limit + 1), doc.elements["/OAI-PMH/ListRecords"].to_a.size
|
38
36
|
assert_not_nil doc.elements["/OAI-PMH/ListRecords/resumptionToken"]
|
39
|
-
assert_equal 101, doc.elements["/OAI-PMH/ListRecords"].to_a.size
|
40
37
|
token = doc.elements["/OAI-PMH/ListRecords/resumptionToken"].text
|
41
38
|
|
39
|
+
4.times do
|
40
|
+
doc = Document.new(@provider.list_records(:resumption_token => token))
|
41
|
+
assert_not_nil doc.elements["/OAI-PMH/ListRecords/resumptionToken"]
|
42
|
+
assert_equal (@provider.model.limit + 1), doc.elements["/OAI-PMH/ListRecords"].to_a.size
|
43
|
+
token = doc.elements["/OAI-PMH/ListRecords/resumptionToken"].text
|
44
|
+
end
|
45
|
+
|
42
46
|
doc = Document.new(@provider.list_records(:resumption_token => token))
|
43
|
-
|
44
|
-
assert_equal
|
47
|
+
# assert that ListRecords includes remaining records and an empty resumption token
|
48
|
+
assert_equal (551 % @provider.model.limit), doc.elements["/OAI-PMH/ListRecords"].to_a.size
|
49
|
+
assert_not_nil doc.elements["/OAI-PMH/ListRecords/resumptionToken"]
|
50
|
+
assert_nil doc.elements["/OAI-PMH/ListRecords/resumptionToken"].text
|
45
51
|
end
|
46
52
|
|
47
53
|
end
|
@@ -78,6 +78,32 @@ class OaiTest < Test::Unit::TestCase
|
|
78
78
|
)
|
79
79
|
assert_equal 100, doc.elements['OAI-PMH/ListRecords'].to_a.size
|
80
80
|
end
|
81
|
+
|
82
|
+
def test_from_and_until_match
|
83
|
+
assert_nothing_raised do
|
84
|
+
@big_provider.list_records(
|
85
|
+
:metadata_prefix => 'oai_dc',
|
86
|
+
:from => "2000-11-01T05:00:00Z",
|
87
|
+
:until => "2000-11-30T05:00:00Z"
|
88
|
+
)
|
89
|
+
end
|
90
|
+
|
91
|
+
assert_nothing_raised do
|
92
|
+
@big_provider.list_records(
|
93
|
+
:metadata_prefix => 'oai_dc',
|
94
|
+
:from => "2000-11-01",
|
95
|
+
:until => "2000-11-30"
|
96
|
+
)
|
97
|
+
end
|
98
|
+
|
99
|
+
assert_raise(OAI::ArgumentException) do
|
100
|
+
@big_provider.list_records(
|
101
|
+
:metadata_prefix => 'oai_dc',
|
102
|
+
:from => "2000-11-01T05:00:00Z",
|
103
|
+
:until => "2000-11-30"
|
104
|
+
)
|
105
|
+
end
|
106
|
+
end
|
81
107
|
|
82
108
|
def test_from_and_until
|
83
109
|
assert_nothing_raised do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ed Summers
|
8
8
|
autorequire: oai
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: builder
|
@@ -28,30 +28,36 @@ dependencies:
|
|
28
28
|
name: faraday
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "<"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '3'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "<"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: faraday-follow_redirects
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 0.3.0
|
48
|
+
- - "<"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '2'
|
48
51
|
type: :runtime
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
55
|
- - ">="
|
53
56
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
57
|
+
version: 0.3.0
|
58
|
+
- - "<"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '2'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: activerecord
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -61,7 +67,7 @@ dependencies:
|
|
61
67
|
version: 5.2.0
|
62
68
|
- - "<"
|
63
69
|
- !ruby/object:Gem::Version
|
64
|
-
version: '
|
70
|
+
version: '7.1'
|
65
71
|
type: :development
|
66
72
|
prerelease: false
|
67
73
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -71,7 +77,7 @@ dependencies:
|
|
71
77
|
version: 5.2.0
|
72
78
|
- - "<"
|
73
79
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
80
|
+
version: '7.1'
|
75
81
|
- !ruby/object:Gem::Dependency
|
76
82
|
name: appraisal
|
77
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,7 +92,7 @@ dependencies:
|
|
86
92
|
- - ">="
|
87
93
|
- !ruby/object:Gem::Version
|
88
94
|
version: '0'
|
89
|
-
description:
|
95
|
+
description:
|
90
96
|
email: ehs@pobox.com
|
91
97
|
executables:
|
92
98
|
- oai
|
@@ -146,9 +152,11 @@ files:
|
|
146
152
|
- test/activerecord_provider/helpers/set_provider.rb
|
147
153
|
- test/activerecord_provider/helpers/transactional_test_case.rb
|
148
154
|
- test/activerecord_provider/models/dc_field.rb
|
155
|
+
- test/activerecord_provider/models/dc_lang.rb
|
149
156
|
- test/activerecord_provider/models/dc_set.rb
|
150
157
|
- test/activerecord_provider/models/exclusive_set_dc_field.rb
|
151
158
|
- test/activerecord_provider/models/oai_token.rb
|
159
|
+
- test/activerecord_provider/tc_activerecord_wrapper.rb
|
152
160
|
- test/activerecord_provider/tc_ar_provider.rb
|
153
161
|
- test/activerecord_provider/tc_ar_sets_provider.rb
|
154
162
|
- test/activerecord_provider/tc_caching_paging_provider.rb
|
@@ -169,6 +177,8 @@ files:
|
|
169
177
|
- test/client/tc_utf8_escaping.rb
|
170
178
|
- test/client/tc_xpath.rb
|
171
179
|
- test/client/test_helper_client.rb
|
180
|
+
- test/harvester/tc_harvest.rb
|
181
|
+
- test/harvester/test_helper_harvester.rb
|
172
182
|
- test/provider/models.rb
|
173
183
|
- test/provider/tc_exceptions.rb
|
174
184
|
- test/provider/tc_functional_tokens.rb
|
@@ -179,9 +189,10 @@ files:
|
|
179
189
|
- test/provider/test_helper_provider.rb
|
180
190
|
- test/test.xml
|
181
191
|
homepage: http://github.com/code4lib/ruby-oai
|
182
|
-
licenses:
|
192
|
+
licenses:
|
193
|
+
- MIT
|
183
194
|
metadata: {}
|
184
|
-
post_install_message:
|
195
|
+
post_install_message:
|
185
196
|
rdoc_options: []
|
186
197
|
require_paths:
|
187
198
|
- lib
|
@@ -196,8 +207,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
207
|
- !ruby/object:Gem::Version
|
197
208
|
version: '0'
|
198
209
|
requirements: []
|
199
|
-
rubygems_version: 3.
|
200
|
-
signing_key:
|
210
|
+
rubygems_version: 3.0.3
|
211
|
+
signing_key:
|
201
212
|
specification_version: 4
|
202
213
|
summary: A ruby library for working with the Open Archive Initiative Protocol for
|
203
214
|
Metadata Harvesting (OAI-PMH)
|