oai 1.2.0 → 1.2.1
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 +1 -1
- data/lib/oai/provider/response/record_response.rb +20 -2
- data/lib/oai/provider/response.rb +16 -9
- data/test/provider/tc_simple_provider.rb +16 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0739f4d294a977be9445e06f872feb4aa421ecc35c65d4ba4c07af0f48f98070'
|
4
|
+
data.tar.gz: b444b8a7f6cfbeccf045e6794b2d6d001dc319fcf362383404735215adcb3cfa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0edac39be81e755d256f5f39b0772d8568450e2dd6bc837982ad3568547e8ee46b94c3f17d14e69ad94a1ef95458992f9538108f919a3623b9994a42b11203f5
|
7
|
+
data.tar.gz: c182374267d3acf402f9f9a24c3342739f4e3b72fac229076237126444e7aa674acaea7ae8122de71bc7aa9615cfe9a5864fe3ed4e6c31e3a8f848ed27db41aa
|
data/README.md
CHANGED
@@ -3,8 +3,26 @@ module OAI::Provider::Response
|
|
3
3
|
def self.inherited(klass)
|
4
4
|
klass.valid_parameters :metadata_prefix, :from, :until, :set
|
5
5
|
klass.default_parameters :metadata_prefix => "oai_dc",
|
6
|
-
:from =>
|
7
|
-
:until =>
|
6
|
+
:from => method(:default_from).to_proc,
|
7
|
+
:until => method(:default_until).to_proc
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.default_from(response)
|
11
|
+
value = Time.parse(response.provider.model.earliest.to_s).utc
|
12
|
+
if response.options[:until]
|
13
|
+
u = parse_date(response.options[:until])
|
14
|
+
value = value.to_date if u.is_a? Date
|
15
|
+
end
|
16
|
+
value
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.default_until(response)
|
20
|
+
value = Time.parse(response.provider.model.latest.to_s).utc
|
21
|
+
if response.options[:from]
|
22
|
+
f = parse_date(response.options[:from])
|
23
|
+
value = value.to_date if f.is_a? Date
|
24
|
+
end
|
25
|
+
value
|
8
26
|
end
|
9
27
|
|
10
28
|
# emit record header
|
@@ -40,6 +40,21 @@ module OAI
|
|
40
40
|
yield @builder
|
41
41
|
end
|
42
42
|
end
|
43
|
+
|
44
|
+
protected
|
45
|
+
|
46
|
+
def self.parse_date(value)
|
47
|
+
return value if value.respond_to?(:strftime)
|
48
|
+
|
49
|
+
if value[-1] == "Z"
|
50
|
+
Time.strptime(value, "%Y-%m-%dT%H:%M:%S%Z").utc
|
51
|
+
else
|
52
|
+
Date.strptime(value, "%Y-%m-%d")
|
53
|
+
end
|
54
|
+
rescue ArgumentError => e
|
55
|
+
raise OAI::ArgumentException.new, "unparsable date: '#{value}'"
|
56
|
+
end
|
57
|
+
|
43
58
|
private
|
44
59
|
|
45
60
|
def header
|
@@ -89,15 +104,7 @@ module OAI
|
|
89
104
|
end
|
90
105
|
|
91
106
|
def parse_date(value)
|
92
|
-
|
93
|
-
|
94
|
-
if value[-1] == "Z"
|
95
|
-
Time.strptime(value, "%Y-%m-%dT%H:%M:%S%Z").utc
|
96
|
-
else
|
97
|
-
Date.strptime(value, "%Y-%m-%d")
|
98
|
-
end
|
99
|
-
rescue ArgumentError => e
|
100
|
-
raise OAI::ArgumentException.new, "unparsable date: '#{value}'"
|
107
|
+
self.class.parse_date(value)
|
101
108
|
end
|
102
109
|
|
103
110
|
def internalize(hash = {})
|
@@ -49,6 +49,22 @@ class TestSimpleProvider < Test::Unit::TestCase
|
|
49
49
|
assert_equal total, doc.elements['OAI-PMH/ListRecords'].size
|
50
50
|
end
|
51
51
|
|
52
|
+
def test_list_records_with_from_constraints
|
53
|
+
assert_nothing_raised { REXML::Document.new(@simple_provider.list_records(:metadata_prefix => 'oai_dc')) }
|
54
|
+
|
55
|
+
total = @model.find(:all).size
|
56
|
+
doc = REXML::Document.new(@simple_provider.list_records(:metadata_prefix => 'oai_dc', from: "2002-10-05"))
|
57
|
+
assert_equal total, doc.elements['OAI-PMH/ListRecords'].size
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_list_records_with_until_constraints
|
61
|
+
assert_nothing_raised { REXML::Document.new(@simple_provider.list_records(:metadata_prefix => 'oai_dc')) }
|
62
|
+
|
63
|
+
total = @model.find(:all).size
|
64
|
+
doc = REXML::Document.new(@simple_provider.list_records(:metadata_prefix => 'oai_dc', until: "2002-11-05"))
|
65
|
+
assert_equal total, doc.elements['OAI-PMH/ListRecords'].size
|
66
|
+
end
|
67
|
+
|
52
68
|
def test_list_records_with_set_equal_a
|
53
69
|
total = @model.find(:all, :set => 'A').size
|
54
70
|
doc = REXML::Document.new(@simple_provider.list_records(:metadata_prefix => 'oai_dc', :set => 'A'))
|
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.2.
|
4
|
+
version: 1.2.1
|
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: 2022-04-
|
11
|
+
date: 2022-04-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: builder
|