rubydora 0.0.4 → 0.0.5
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/VERSION +1 -1
- data/lib/rubydora/digital_object.rb +1 -1
- data/lib/rubydora/ext/solr.rb +1 -1
- data/lib/rubydora/rest_api_client/v33.rb +3 -12
- data/lib/rubydora/soap.rb +21 -0
- data/lib/rubydora.rb +1 -0
- data/rubydora.gemspec +5 -2
- data/spec/ext_solr_spec.rb +76 -2
- data/spec/repository_spec.rb +5 -0
- data/spec/soap_spec.rb +12 -0
- metadata +7 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
@@ -59,7 +59,7 @@ module Rubydora
|
|
59
59
|
# @param [Rubydora::Repository] repository context
|
60
60
|
# @param [Hash] options default attribute values (used esp. for creating new datastreams
|
61
61
|
def initialize pid, repository = nil, options = {}
|
62
|
-
@pid = pid
|
62
|
+
@pid = pid.gsub('info:fedora/', '')
|
63
63
|
@repository = repository
|
64
64
|
|
65
65
|
options.each do |key, value|
|
data/lib/rubydora/ext/solr.rb
CHANGED
@@ -1,18 +1,9 @@
|
|
1
1
|
module Rubydora::RestApiClient
|
2
2
|
# Fall-back implementations for fcrepo < 3.4
|
3
3
|
module V33
|
4
|
-
#
|
5
|
-
|
6
|
-
|
7
|
-
return @soap if @soap
|
8
|
-
gem "soap4r"
|
9
|
-
require 'soap/wsdlDriver'
|
10
|
-
|
11
|
-
@soap = SOAP::WSDLDriverFactory.new("#{ config[:url] }/wsdl?api=API-M").create_rpc_driver
|
12
|
-
@soap.options['protocol.http.basic_auth'] << [config[:url], config[:user], config[:password]]
|
13
|
-
|
14
|
-
@soap
|
15
|
-
|
4
|
+
# @param [Rubydora::Repository] repository
|
5
|
+
def self.extended repository
|
6
|
+
repository.send(:extend, Rubydora::Soap)
|
16
7
|
end
|
17
8
|
|
18
9
|
# {include:RestApiClient#relationships}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Rubydora
|
2
|
+
# Fedora SOAP API extension
|
3
|
+
module Soap
|
4
|
+
# @param [Rubydora::Repository] repository
|
5
|
+
def self.extended repository
|
6
|
+
gem "soap4r"
|
7
|
+
require 'soap/wsdlDriver'
|
8
|
+
end
|
9
|
+
|
10
|
+
# SOAP API endpoint
|
11
|
+
# @return [SOAP::RPC::Driver]
|
12
|
+
def soap
|
13
|
+
return @soap if @soap
|
14
|
+
|
15
|
+
@soap = SOAP::WSDLDriverFactory.new("#{ config[:url] }/wsdl?api=API-M").create_rpc_driver
|
16
|
+
@soap.options['protocol.http.basic_auth'] << [config[:url], config[:user], config[:password]]
|
17
|
+
|
18
|
+
@soap
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/rubydora.rb
CHANGED
@@ -4,6 +4,7 @@ module Rubydora
|
|
4
4
|
autoload :Repository, "rubydora/repository"
|
5
5
|
autoload :ResourceIndex, "rubydora/resource_index"
|
6
6
|
autoload :RestApiClient, "rubydora/rest_api_client"
|
7
|
+
autoload :Soap, "rubydora/soap"
|
7
8
|
autoload :ModelsMixin, "rubydora/models_mixin"
|
8
9
|
autoload :Ext, "rubydora/ext"
|
9
10
|
autoload :RelationshipsMixin, "rubydora/relationships_mixin"
|
data/rubydora.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rubydora}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Chris Beer"]
|
12
|
-
s.date = %q{2011-04-
|
12
|
+
s.date = %q{2011-04-21}
|
13
13
|
s.description = %q{Fedora Commons REST API ruby library : REQUIRES FCREPO 3.4+}
|
14
14
|
s.email = %q{chris@cbeer.info}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -37,6 +37,7 @@ Gem::Specification.new do |s|
|
|
37
37
|
"lib/rubydora/resource_index.rb",
|
38
38
|
"lib/rubydora/rest_api_client.rb",
|
39
39
|
"lib/rubydora/rest_api_client/v33.rb",
|
40
|
+
"lib/rubydora/soap.rb",
|
40
41
|
"rubydora.gemspec",
|
41
42
|
"spec/datastream_spec.rb",
|
42
43
|
"spec/digital_object_spec.rb",
|
@@ -47,6 +48,7 @@ Gem::Specification.new do |s|
|
|
47
48
|
"spec/repository_spec.rb",
|
48
49
|
"spec/resource_index_spec.rb",
|
49
50
|
"spec/rest_api_client_spec.rb",
|
51
|
+
"spec/soap_spec.rb",
|
50
52
|
"spec/spec_helper.rb"
|
51
53
|
]
|
52
54
|
s.homepage = %q{http://github.com/cbeer/rubydora}
|
@@ -64,6 +66,7 @@ Gem::Specification.new do |s|
|
|
64
66
|
"spec/repository_spec.rb",
|
65
67
|
"spec/resource_index_spec.rb",
|
66
68
|
"spec/rest_api_client_spec.rb",
|
69
|
+
"spec/soap_spec.rb",
|
67
70
|
"spec/spec_helper.rb"
|
68
71
|
]
|
69
72
|
|
data/spec/ext_solr_spec.rb
CHANGED
@@ -2,9 +2,11 @@ require 'spec_helper'
|
|
2
2
|
require 'rubydora/ext/solr'
|
3
3
|
|
4
4
|
describe Rubydora::Ext::Solr do
|
5
|
+
before(:all) do
|
6
|
+
Rubydora::Ext::Solr.load
|
7
|
+
end
|
5
8
|
describe "load" do
|
6
9
|
it "should load mixins" do
|
7
|
-
Rubydora::Ext::Solr.load
|
8
10
|
@mock_repository = mock(Rubydora::Repository)
|
9
11
|
obj = Rubydora::DigitalObject.new('pid', @mock_repository)
|
10
12
|
obj.should be_a_kind_of(Rubydora::Ext::Solr::DigitalObjectMixin)
|
@@ -45,7 +47,6 @@ describe Rubydora::Ext::Solr do
|
|
45
47
|
@object = Rubydora::DigitalObject.new('pid', @mock_repository)
|
46
48
|
end
|
47
49
|
it "should call the members of solr_mapping_logic" do
|
48
|
-
|
49
50
|
@object.should_receive(:solr_mapping_logic).and_return([:mock_solr_step, :another_mock_solr_step])
|
50
51
|
@object.should_receive(:mock_solr_step)
|
51
52
|
@object.should_receive(:another_mock_solr_step)
|
@@ -66,5 +67,78 @@ describe Rubydora::Ext::Solr do
|
|
66
67
|
@object.to_solr.should == { :a => 'a', :b => 'b'}
|
67
68
|
end
|
68
69
|
end
|
70
|
+
|
71
|
+
describe "object_profile_to_solr" do
|
72
|
+
before(:each) do
|
73
|
+
@mock_repository = mock(Rubydora::Repository)
|
74
|
+
@object = Rubydora::DigitalObject.new('pid', @mock_repository)
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should map the pid and id" do
|
78
|
+
@object.should_receive(:profile).and_return({})
|
79
|
+
doc = {}
|
80
|
+
@object.object_profile_to_solr(doc)
|
81
|
+
|
82
|
+
doc['id'].should == 'pid'
|
83
|
+
doc['pid_s'].should == 'pid'
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should map the profile hash to generic document fields" do
|
87
|
+
@object.should_receive(:profile).and_return({'a' => 1, 'b' => 2})
|
88
|
+
doc = {}
|
89
|
+
@object.object_profile_to_solr(doc)
|
90
|
+
doc['a_s'].should == 1
|
91
|
+
doc['b_s'].should == 2
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe "datastreams_to_solr" do
|
96
|
+
before(:each) do
|
97
|
+
@mock_repository = mock(Rubydora::Repository)
|
98
|
+
@object = Rubydora::DigitalObject.new('pid', @mock_repository)
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should map the list of datastreams" do
|
102
|
+
@mock_ds = mock(Rubydora::Datastream)
|
103
|
+
@mock_ds2 = mock(Rubydora::Datastream)
|
104
|
+
|
105
|
+
@mock_ds.should_receive(:to_solr).with(instance_of(Hash))
|
106
|
+
@mock_ds2.should_receive(:to_solr).with(instance_of(Hash))
|
107
|
+
@object.should_receive(:datastreams).and_return(:a => @mock_ds, :b => @mock_ds2)
|
108
|
+
doc = {}
|
109
|
+
@object.datastreams_to_solr(doc)
|
110
|
+
|
111
|
+
doc['disseminates_s'].should == [:a, :b]
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should let the datastreams inject any document attributes" do
|
115
|
+
@mock_ds = mock(Rubydora::Datastream)
|
116
|
+
|
117
|
+
@mock_ds.should_receive(:to_solr) do |doc|
|
118
|
+
doc['a'] = 1
|
119
|
+
end
|
120
|
+
@object.should_receive(:datastreams).and_return(:a => @mock_ds)
|
121
|
+
doc = {}
|
122
|
+
@object.datastreams_to_solr(doc)
|
123
|
+
|
124
|
+
doc['a'].should == 1
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
describe "relations_to_solr" do
|
129
|
+
before(:each) do
|
130
|
+
@mock_repository = mock(Rubydora::Repository)
|
131
|
+
@object = Rubydora::DigitalObject.new('pid', @mock_repository)
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should lazily map relationships from SPARQL" do
|
135
|
+
@object.repository.should_receive(:sparql).and_return([{'relation' => '...#isPartOf', 'object' => 'info:fedora/test:pid'}])
|
136
|
+
doc = {}
|
137
|
+
@object.relations_to_solr(doc)
|
138
|
+
doc['ri_isPartOf_s'].should == ['info:fedora/test:pid']
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
|
69
143
|
end
|
70
144
|
|
data/spec/repository_spec.rb
CHANGED
@@ -69,6 +69,11 @@ end
|
|
69
69
|
@mock_repository = ApiAbstractionTestClass.new
|
70
70
|
@mock_repository.should be_a_kind_of(Rubydora::RestApiClient::V33)
|
71
71
|
end
|
72
|
+
|
73
|
+
it "should automatically load the SOAP endpoint when needed" do
|
74
|
+
@mock_repository = ApiAbstractionTestClass.new
|
75
|
+
@mock_repository.should be_a_kind_of(Rubydora::Soap)
|
76
|
+
end
|
72
77
|
end
|
73
78
|
|
74
79
|
describe "find_by_sparql" do
|
data/spec/soap_spec.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Rubydora::Soap do
|
4
|
+
before(:all) do
|
5
|
+
@repository = Rubydora.connect({ :url => 'http://localhost:8080/fedora', :user => 'fedoraAdmin', :password => 'fedoraAdmin' })
|
6
|
+
@repository.send(:extend, Rubydora::Soap)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should provide a SOAP endpoint accessor" do
|
10
|
+
@repository.soap.should be_a_kind_of(SOAP::RPC::Driver)
|
11
|
+
end
|
12
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubydora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 5
|
10
|
+
version: 0.0.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Chris Beer
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-04-
|
18
|
+
date: 2011-04-21 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -192,6 +192,7 @@ files:
|
|
192
192
|
- lib/rubydora/resource_index.rb
|
193
193
|
- lib/rubydora/rest_api_client.rb
|
194
194
|
- lib/rubydora/rest_api_client/v33.rb
|
195
|
+
- lib/rubydora/soap.rb
|
195
196
|
- rubydora.gemspec
|
196
197
|
- spec/datastream_spec.rb
|
197
198
|
- spec/digital_object_spec.rb
|
@@ -202,6 +203,7 @@ files:
|
|
202
203
|
- spec/repository_spec.rb
|
203
204
|
- spec/resource_index_spec.rb
|
204
205
|
- spec/rest_api_client_spec.rb
|
206
|
+
- spec/soap_spec.rb
|
205
207
|
- spec/spec_helper.rb
|
206
208
|
has_rdoc: true
|
207
209
|
homepage: http://github.com/cbeer/rubydora
|
@@ -247,4 +249,5 @@ test_files:
|
|
247
249
|
- spec/repository_spec.rb
|
248
250
|
- spec/resource_index_spec.rb
|
249
251
|
- spec/rest_api_client_spec.rb
|
252
|
+
- spec/soap_spec.rb
|
250
253
|
- spec/spec_helper.rb
|