oai_talia 0.0.13

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.
Files changed (84) hide show
  1. data/README +81 -0
  2. data/Rakefile +127 -0
  3. data/bin/oai +68 -0
  4. data/examples/models/file_model.rb +63 -0
  5. data/examples/providers/dublin_core.rb +474 -0
  6. data/lib/oai/client/get_record.rb +15 -0
  7. data/lib/oai/client/header.rb +18 -0
  8. data/lib/oai/client/identify.rb +30 -0
  9. data/lib/oai/client/list_identifiers.rb +12 -0
  10. data/lib/oai/client/list_metadata_formats.rb +12 -0
  11. data/lib/oai/client/list_records.rb +21 -0
  12. data/lib/oai/client/list_sets.rb +19 -0
  13. data/lib/oai/client/metadata_format.rb +12 -0
  14. data/lib/oai/client/record.rb +26 -0
  15. data/lib/oai/client/response.rb +35 -0
  16. data/lib/oai/client.rb +301 -0
  17. data/lib/oai/constants.rb +34 -0
  18. data/lib/oai/exception.rb +75 -0
  19. data/lib/oai/harvester/config.rb +41 -0
  20. data/lib/oai/harvester/harvest.rb +150 -0
  21. data/lib/oai/harvester/logging.rb +70 -0
  22. data/lib/oai/harvester/mailer.rb +17 -0
  23. data/lib/oai/harvester/shell.rb +338 -0
  24. data/lib/oai/harvester.rb +39 -0
  25. data/lib/oai/provider/metadata_format/oai_dc.rb +29 -0
  26. data/lib/oai/provider/metadata_format/oai_europeana.rb +38 -0
  27. data/lib/oai/provider/metadata_format.rb +143 -0
  28. data/lib/oai/provider/model/activerecord_caching_wrapper.rb +134 -0
  29. data/lib/oai/provider/model/activerecord_wrapper.rb +139 -0
  30. data/lib/oai/provider/model.rb +74 -0
  31. data/lib/oai/provider/partial_result.rb +18 -0
  32. data/lib/oai/provider/response/error.rb +16 -0
  33. data/lib/oai/provider/response/get_record.rb +26 -0
  34. data/lib/oai/provider/response/identify.rb +25 -0
  35. data/lib/oai/provider/response/list_identifiers.rb +35 -0
  36. data/lib/oai/provider/response/list_metadata_formats.rb +34 -0
  37. data/lib/oai/provider/response/list_records.rb +34 -0
  38. data/lib/oai/provider/response/list_sets.rb +23 -0
  39. data/lib/oai/provider/response/record_response.rb +70 -0
  40. data/lib/oai/provider/response.rb +161 -0
  41. data/lib/oai/provider/resumption_token.rb +106 -0
  42. data/lib/oai/provider.rb +304 -0
  43. data/lib/oai/set.rb +29 -0
  44. data/lib/oai/xpath.rb +75 -0
  45. data/lib/oai.rb +8 -0
  46. data/lib/test.rb +25 -0
  47. data/test/activerecord_provider/config/connection.rb +5 -0
  48. data/test/activerecord_provider/config/database.yml +6 -0
  49. data/test/activerecord_provider/database/ar_migration.rb +59 -0
  50. data/test/activerecord_provider/database/oaipmhtest +0 -0
  51. data/test/activerecord_provider/fixtures/dc.yml +1501 -0
  52. data/test/activerecord_provider/helpers/providers.rb +44 -0
  53. data/test/activerecord_provider/helpers/set_provider.rb +36 -0
  54. data/test/activerecord_provider/models/dc_field.rb +7 -0
  55. data/test/activerecord_provider/models/dc_set.rb +6 -0
  56. data/test/activerecord_provider/models/oai_token.rb +3 -0
  57. data/test/activerecord_provider/tc_ar_provider.rb +113 -0
  58. data/test/activerecord_provider/tc_ar_sets_provider.rb +72 -0
  59. data/test/activerecord_provider/tc_caching_paging_provider.rb +55 -0
  60. data/test/activerecord_provider/tc_simple_paging_provider.rb +57 -0
  61. data/test/activerecord_provider/test_helper.rb +4 -0
  62. data/test/client/helpers/provider.rb +68 -0
  63. data/test/client/helpers/test_wrapper.rb +11 -0
  64. data/test/client/tc_exception.rb +36 -0
  65. data/test/client/tc_get_record.rb +37 -0
  66. data/test/client/tc_identify.rb +13 -0
  67. data/test/client/tc_libxml.rb +61 -0
  68. data/test/client/tc_list_identifiers.rb +52 -0
  69. data/test/client/tc_list_metadata_formats.rb +18 -0
  70. data/test/client/tc_list_records.rb +13 -0
  71. data/test/client/tc_list_sets.rb +19 -0
  72. data/test/client/tc_low_resolution_dates.rb +14 -0
  73. data/test/client/tc_utf8_escaping.rb +11 -0
  74. data/test/client/tc_xpath.rb +26 -0
  75. data/test/client/test_helper.rb +5 -0
  76. data/test/provider/models.rb +234 -0
  77. data/test/provider/tc_exceptions.rb +96 -0
  78. data/test/provider/tc_functional_tokens.rb +43 -0
  79. data/test/provider/tc_provider.rb +71 -0
  80. data/test/provider/tc_resumption_tokens.rb +46 -0
  81. data/test/provider/tc_simple_provider.rb +92 -0
  82. data/test/provider/test_helper.rb +36 -0
  83. data/test/test.xml +22 -0
  84. metadata +181 -0
@@ -0,0 +1,92 @@
1
+ require 'test_helper'
2
+
3
+ class TestSimpleProvider < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @simple_provider = SimpleProvider.new
7
+ @model = @simple_provider.class.model
8
+ end
9
+
10
+ def test_identify
11
+ doc = REXML::Document.new(@simple_provider.identify)
12
+ assert_equal @simple_provider.class.name,
13
+ doc.elements["/OAI-PMH/Identify/repositoryName"].text
14
+ assert_equal SimpleModel.new.earliest.to_s,
15
+ doc.elements["/OAI-PMH/Identify/earliestDatestamp"].text
16
+ end
17
+
18
+ def test_list_sets
19
+ doc = REXML::Document.new(@simple_provider.list_sets)
20
+ sets = doc.elements["/OAI-PMH/ListSets"]
21
+ assert_equal @model.sets.size, sets.size
22
+ assert_equal @model.sets[0].name, sets[0].elements["//setName"].text
23
+ end
24
+
25
+ def test_metadata_formats
26
+ assert_nothing_raised { REXML::Document.new(@simple_provider.list_metadata_formats) }
27
+ doc = REXML::Document.new(@simple_provider.list_metadata_formats)
28
+ assert_equal "oai_dc",
29
+ doc.elements['/OAI-PMH/ListMetadataFormats/metadataFormat/metadataPrefix'].text
30
+ end
31
+
32
+ def test_metadata_formats_for_document
33
+ assert_nothing_raised { REXML::Document.new(@simple_provider.list_metadata_formats(:identifier => "oai:test/1")) }
34
+ doc = REXML::Document.new(@simple_provider.list_metadata_formats)
35
+ assert_equal "oai_dc",
36
+ doc.elements['/OAI-PMH/ListMetadataFormats/metadataFormat/metadataPrefix'].text
37
+ end
38
+
39
+ def test_list_records_without_constraints
40
+ assert_nothing_raised { REXML::Document.new(@simple_provider.list_records(:metadataPrefix => 'oai_dc')) }
41
+
42
+ total = @model.find(:all).size
43
+ doc = REXML::Document.new(@simple_provider.list_records(:metadataPrefix => 'oai_dc'))
44
+ assert_equal total, doc.elements['OAI-PMH/ListRecords'].size
45
+ end
46
+
47
+ def test_list_records_with_set_equal_a
48
+ total = @model.find(:all, :set => 'A').size
49
+ doc = REXML::Document.new(@simple_provider.list_records(:set => 'A', :metadataPrefix => 'oai_dc'))
50
+ assert_equal total, doc.elements['OAI-PMH/ListRecords'].size
51
+ end
52
+
53
+ def test_list_record_with_set_equal_ab
54
+ total = @model.find(:all, :set => 'A:B').size
55
+ doc = REXML::Document.new(@simple_provider.list_records(:set => 'A:B', :metadataPrefix => 'oai_dc'))
56
+ assert_equal total, doc.elements['OAI-PMH/ListRecords'].size
57
+ end
58
+
59
+ def test_list_identifiers_without_constraints
60
+ assert_nothing_raised { REXML::Document.new(@simple_provider.list_identifiers(:metadataPrefix => 'oai_dc')) }
61
+
62
+ total = @model.find(:all).size
63
+ doc = REXML::Document.new(@simple_provider.list_identifiers(:metadataPrefix => 'oai_dc'))
64
+ assert_equal total, doc.elements['OAI-PMH/ListIdentifiers'].to_a.size
65
+ end
66
+
67
+ def test_list_identifiers_with_set_equal_a
68
+ total = @model.find(:all, :set => 'A').size
69
+ doc = REXML::Document.new(@simple_provider.list_identifiers(:set => 'A', :metadataPrefix => 'oai_dc'))
70
+ assert_equal total, doc.elements['OAI-PMH/ListIdentifiers'].to_a.size
71
+ end
72
+
73
+ def test_list_indentifiers_with_set_equal_ab
74
+ total = @model.find(:all, :set => 'A:B').size
75
+ doc = REXML::Document.new(@simple_provider.list_identifiers(:set => 'A:B', :metadataPrefix => 'oai_dc'))
76
+ assert_equal total, doc.elements['OAI-PMH/ListIdentifiers'].to_a.size
77
+ end
78
+
79
+ def test_get_record
80
+ assert_nothing_raised { REXML::Document.new(@simple_provider.get_record(:identifier => 'oai:test/1', :metadataPrefix => 'oai_dc')) }
81
+ doc = REXML::Document.new(@simple_provider.get_record(:identifier => 'oai:test/1', :metadataPrefix => 'oai_dc'))
82
+ assert_equal 'oai:test/1', doc.elements['OAI-PMH/GetRecord/record/header/identifier'].text
83
+ end
84
+
85
+ def test_deleted_record
86
+ assert_nothing_raised { REXML::Document.new(@simple_provider.get_record(:identifier => 'oai:test/6', :metadataPrefix => 'oai_dc')) }
87
+ doc = REXML::Document.new(@simple_provider.get_record(:identifier => 'oai:test/5', :metadataPrefix => 'oai_dc'))
88
+ assert_equal 'oai:test/5', doc.elements['OAI-PMH/GetRecord/record/header/identifier'].text
89
+ assert_equal 'deleted', doc.elements['OAI-PMH/GetRecord/record/header'].attributes["status"]
90
+ end
91
+
92
+ end
@@ -0,0 +1,36 @@
1
+ require 'oai'
2
+ require 'test/unit'
3
+
4
+ require File.dirname(__FILE__) + '/models'
5
+ include OAI
6
+
7
+ class SimpleProvider < Provider::Base
8
+ repository_name 'Test Provider'
9
+ record_prefix 'oai:test'
10
+ source_model SimpleModel.new
11
+ end
12
+
13
+ class BigProvider < Provider::Base
14
+ repository_name 'Another Provider'
15
+ record_prefix 'oai:test'
16
+ source_model BigModel.new
17
+ end
18
+
19
+ class TokenProvider < Provider::Base
20
+ repository_name 'Token Provider'
21
+ record_prefix 'oai:test'
22
+ source_model BigModel.new(25)
23
+ end
24
+
25
+ class MappedProvider < Provider::Base
26
+ repository_name 'Mapped Provider'
27
+ record_prefix 'oai:test'
28
+ source_model MappedModel.new
29
+ end
30
+
31
+ class ComplexProvider < Provider::Base
32
+ repository_name 'Complex Provider'
33
+ repository_url 'http://localhost'
34
+ record_prefix 'oai:test'
35
+ source_model ComplexModel.new(100)
36
+ end
data/test/test.xml ADDED
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <OAI-PMH xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
3
+ <responseDate>2006-09-11T14:33:15Z</responseDate>
4
+ <request verb="Identify">http://www.pubmedcentral.gov/oai/oai.cgi</request>
5
+ <Identify>
6
+ <repositoryName>PubMed Central (PMC3 - NLM DTD)</repositoryName>
7
+ <baseURL>http://www.pubmedcentral.gov/oai/oai.cgi</baseURL>
8
+ <protocolVersion>2.0</protocolVersion>
9
+ <adminEmail>oai@ncbi.nlm.nih.gov</adminEmail>
10
+ <earliestDatestamp>1999-01-01</earliestDatestamp>
11
+ <deletedRecord>no</deletedRecord>
12
+ <granularity>YYYY-MM-DD</granularity>
13
+ <description>
14
+ <oai-identifier xmlns="http://www.openarchives.org/OAI/2.0/oai-identifier" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai-identifier http://www.openarchives.org/OAI/2.0/oai-identifier.xsd">
15
+ <scheme>oai</scheme>
16
+ <repositoryIdentifier>pubmedcentral.gov</repositoryIdentifier>
17
+ <delimiter>:</delimiter>
18
+ <sampleIdentifier>oai:pubmedcentral.gov:13900</sampleIdentifier>
19
+ </oai-identifier>
20
+ </description>
21
+ </Identify>
22
+ </OAI-PMH>
metadata ADDED
@@ -0,0 +1,181 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: oai_talia
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.13
5
+ platform: ruby
6
+ authors:
7
+ - Ed Summers
8
+ - Daniel Hahn
9
+ autorequire: oai
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2010-01-26 00:00:00 +01:00
14
+ default_executable: oai
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: builder
18
+ type: :runtime
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 2.0.0
25
+ version:
26
+ description: A ruby library for working with the Open Archive Initiative Protocol for Metadata Harvesting (OAI-PMH). Fork of the original version by Ed Summers, aims for best standards compatibility (test with http://re.cs.uct.ac.za/)
27
+ email: ghub@limitedcreativity.org
28
+ executables:
29
+ - oai
30
+ extensions: []
31
+
32
+ extra_rdoc_files:
33
+ - README
34
+ files:
35
+ - README
36
+ - Rakefile
37
+ - bin/oai
38
+ - examples/models/file_model.rb
39
+ - examples/providers/dublin_core.rb
40
+ - lib/oai.rb
41
+ - lib/oai/client.rb
42
+ - lib/oai/client/get_record.rb
43
+ - lib/oai/client/header.rb
44
+ - lib/oai/client/identify.rb
45
+ - lib/oai/client/list_identifiers.rb
46
+ - lib/oai/client/list_metadata_formats.rb
47
+ - lib/oai/client/list_records.rb
48
+ - lib/oai/client/list_sets.rb
49
+ - lib/oai/client/metadata_format.rb
50
+ - lib/oai/client/record.rb
51
+ - lib/oai/client/response.rb
52
+ - lib/oai/constants.rb
53
+ - lib/oai/exception.rb
54
+ - lib/oai/harvester.rb
55
+ - lib/oai/harvester/config.rb
56
+ - lib/oai/harvester/harvest.rb
57
+ - lib/oai/harvester/logging.rb
58
+ - lib/oai/harvester/mailer.rb
59
+ - lib/oai/harvester/shell.rb
60
+ - lib/oai/provider.rb
61
+ - lib/oai/provider/metadata_format.rb
62
+ - lib/oai/provider/metadata_format/oai_dc.rb
63
+ - lib/oai/provider/metadata_format/oai_europeana.rb
64
+ - lib/oai/provider/model.rb
65
+ - lib/oai/provider/model/activerecord_caching_wrapper.rb
66
+ - lib/oai/provider/model/activerecord_wrapper.rb
67
+ - lib/oai/provider/partial_result.rb
68
+ - lib/oai/provider/response.rb
69
+ - lib/oai/provider/response/error.rb
70
+ - lib/oai/provider/response/get_record.rb
71
+ - lib/oai/provider/response/identify.rb
72
+ - lib/oai/provider/response/list_identifiers.rb
73
+ - lib/oai/provider/response/list_metadata_formats.rb
74
+ - lib/oai/provider/response/list_records.rb
75
+ - lib/oai/provider/response/list_sets.rb
76
+ - lib/oai/provider/response/record_response.rb
77
+ - lib/oai/provider/resumption_token.rb
78
+ - lib/oai/set.rb
79
+ - lib/oai/xpath.rb
80
+ - lib/test.rb
81
+ - test/activerecord_provider/config/connection.rb
82
+ - test/activerecord_provider/config/database.yml
83
+ - test/activerecord_provider/database/ar_migration.rb
84
+ - test/activerecord_provider/database/oaipmhtest
85
+ - test/activerecord_provider/fixtures/dc.yml
86
+ - test/activerecord_provider/helpers/providers.rb
87
+ - test/activerecord_provider/helpers/set_provider.rb
88
+ - test/activerecord_provider/models/dc_field.rb
89
+ - test/activerecord_provider/models/dc_set.rb
90
+ - test/activerecord_provider/models/oai_token.rb
91
+ - test/activerecord_provider/tc_ar_provider.rb
92
+ - test/activerecord_provider/tc_ar_sets_provider.rb
93
+ - test/activerecord_provider/tc_caching_paging_provider.rb
94
+ - test/activerecord_provider/tc_simple_paging_provider.rb
95
+ - test/activerecord_provider/test_helper.rb
96
+ - test/client/helpers/provider.rb
97
+ - test/client/helpers/test_wrapper.rb
98
+ - test/client/tc_exception.rb
99
+ - test/client/tc_get_record.rb
100
+ - test/client/tc_identify.rb
101
+ - test/client/tc_libxml.rb
102
+ - test/client/tc_list_identifiers.rb
103
+ - test/client/tc_list_metadata_formats.rb
104
+ - test/client/tc_list_records.rb
105
+ - test/client/tc_list_sets.rb
106
+ - test/client/tc_low_resolution_dates.rb
107
+ - test/client/tc_utf8_escaping.rb
108
+ - test/client/tc_xpath.rb
109
+ - test/client/test_helper.rb
110
+ - test/provider/models.rb
111
+ - test/provider/tc_exceptions.rb
112
+ - test/provider/tc_functional_tokens.rb
113
+ - test/provider/tc_provider.rb
114
+ - test/provider/tc_resumption_tokens.rb
115
+ - test/provider/tc_simple_provider.rb
116
+ - test/provider/test_helper.rb
117
+ - test/test.xml
118
+ has_rdoc: true
119
+ homepage: http://github.com/net7/ruby-oai-talia/
120
+ licenses: []
121
+
122
+ post_install_message:
123
+ rdoc_options:
124
+ - --charset=UTF-8
125
+ require_paths:
126
+ - lib
127
+ required_ruby_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: 1.8.6
132
+ version:
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: "0"
138
+ version:
139
+ requirements: []
140
+
141
+ rubyforge_project:
142
+ rubygems_version: 1.3.5
143
+ signing_key:
144
+ specification_version: 3
145
+ summary: A ruby library for working with the Open Archive Initiative Protocol for Metadata Harvesting (OAI-PMH)
146
+ test_files:
147
+ - test/activerecord_provider/config/connection.rb
148
+ - test/activerecord_provider/database/ar_migration.rb
149
+ - test/activerecord_provider/helpers/providers.rb
150
+ - test/activerecord_provider/helpers/set_provider.rb
151
+ - test/activerecord_provider/models/dc_field.rb
152
+ - test/activerecord_provider/models/dc_set.rb
153
+ - test/activerecord_provider/models/oai_token.rb
154
+ - test/activerecord_provider/tc_ar_provider.rb
155
+ - test/activerecord_provider/tc_ar_sets_provider.rb
156
+ - test/activerecord_provider/tc_caching_paging_provider.rb
157
+ - test/activerecord_provider/tc_simple_paging_provider.rb
158
+ - test/activerecord_provider/test_helper.rb
159
+ - test/client/helpers/provider.rb
160
+ - test/client/helpers/test_wrapper.rb
161
+ - test/client/tc_exception.rb
162
+ - test/client/tc_get_record.rb
163
+ - test/client/tc_identify.rb
164
+ - test/client/tc_libxml.rb
165
+ - test/client/tc_list_identifiers.rb
166
+ - test/client/tc_list_metadata_formats.rb
167
+ - test/client/tc_list_records.rb
168
+ - test/client/tc_list_sets.rb
169
+ - test/client/tc_low_resolution_dates.rb
170
+ - test/client/tc_utf8_escaping.rb
171
+ - test/client/tc_xpath.rb
172
+ - test/client/test_helper.rb
173
+ - test/provider/models.rb
174
+ - test/provider/tc_exceptions.rb
175
+ - test/provider/tc_functional_tokens.rb
176
+ - test/provider/tc_provider.rb
177
+ - test/provider/tc_resumption_tokens.rb
178
+ - test/provider/tc_simple_provider.rb
179
+ - test/provider/test_helper.rb
180
+ - examples/models/file_model.rb
181
+ - examples/providers/dublin_core.rb