oai_talia 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
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