fedora_lens 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/Rakefile +1 -1
- data/fedora_lens.gemspec +1 -1
- data/lib/fedora_lens.rb +12 -21
- data/lib/fedora_lens/lenses.rb +5 -5
- data/lib/fedora_lens/version.rb +1 -1
- data/spec/fedora_lens/lenses_spec.rb +35 -20
- data/spec/fedora_lens_spec.rb +6 -4
- metadata +4 -5
- data/lib/ldp_monkeypatch.rb +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc2ee8880920469db171ffad4c5039137a46e796
|
4
|
+
data.tar.gz: 0d3790c53ea006a2180a78916173dfe84e9ea96a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a33e640c5822d859f7bf466c9a62b9d42433f699ab8965e29f7da2e673ff9aa805f2bc035b068126aa43a0bb32ba0cffcb211c6eac66d492b771477e932010eb
|
7
|
+
data.tar.gz: 4b89d671befc602a69c7769e308c0503026bd55413db50f27c55a4a5d3c4f94b7ad340996a11e58975a802f3eed4afa254a33c0140c9899cddd78e061c8b7035
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -5,7 +5,7 @@ Bundler::GemHelper.install_tasks
|
|
5
5
|
|
6
6
|
RSpec::Core::RakeTask.new(:spec)
|
7
7
|
|
8
|
-
ZIP_URL = "https://github.com/projecthydra/hydra-jetty/archive/fedora-
|
8
|
+
ZIP_URL = "https://github.com/projecthydra/hydra-jetty/archive/fedora-4a5.zip"
|
9
9
|
require 'jettywrapper'
|
10
10
|
|
11
11
|
task default: :ci
|
data/fedora_lens.gemspec
CHANGED
@@ -26,5 +26,5 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_dependency 'rdf-turtle', '~> 1.1.2'
|
27
27
|
spec.add_dependency 'activemodel', '>= 4.0.2', "< 5.0"
|
28
28
|
spec.add_dependency 'nokogiri', '~> 1.6.1'
|
29
|
-
spec.add_dependency 'ldp', '0.0.
|
29
|
+
spec.add_dependency 'ldp', '0.0.4'
|
30
30
|
end
|
data/lib/fedora_lens.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'rdf'
|
2
2
|
require 'ldp'
|
3
|
-
require 'ldp_monkeypatch'
|
4
3
|
require 'rdf/turtle'
|
5
4
|
require 'nokogiri'
|
6
5
|
require 'active_model'
|
@@ -26,9 +25,8 @@ module FedoraLens
|
|
26
25
|
end
|
27
26
|
end
|
28
27
|
|
29
|
-
HOST = "http://localhost:8983/fedora"
|
28
|
+
HOST = "http://localhost:8983/fedora/rest"
|
30
29
|
#HOST = "http://localhost:8080"
|
31
|
-
PATH = '/rest'
|
32
30
|
|
33
31
|
def self.connection
|
34
32
|
@@connection ||= Ldp::Client.new(HOST)
|
@@ -78,7 +76,7 @@ module FedoraLens
|
|
78
76
|
end
|
79
77
|
|
80
78
|
def new_record?
|
81
|
-
@
|
79
|
+
@orm.resource.new?
|
82
80
|
end
|
83
81
|
|
84
82
|
def uri
|
@@ -92,40 +90,32 @@ module FedoraLens
|
|
92
90
|
protected
|
93
91
|
# This allows you to overide the initializer, but still use this behavior
|
94
92
|
def init_core(subject_or_data = {}, data = nil)
|
95
|
-
@new_record = true
|
96
93
|
case subject_or_data
|
97
|
-
when Ldp::Resource
|
94
|
+
when Ldp::Resource::RdfSource
|
98
95
|
@orm = Ldp::Orm.new(subject_or_data)
|
99
96
|
@attributes = get_attributes_from_orm(@orm)
|
100
97
|
when NilClass, Hash
|
101
98
|
data = subject_or_data || {}
|
102
|
-
@orm = Ldp::Orm.new(Ldp::Resource.new(FedoraLens.connection, nil, RDF::Graph.new))
|
99
|
+
@orm = Ldp::Orm.new(Ldp::Resource::RdfSource.new(FedoraLens.connection, nil, RDF::Graph.new))
|
103
100
|
@attributes = data.with_indifferent_access
|
104
101
|
when String
|
105
102
|
data ||= {}
|
106
|
-
@orm = Ldp::Orm.new(Ldp::Resource.new(FedoraLens.connection, subject_or_data, RDF::Graph.new))
|
103
|
+
@orm = Ldp::Orm.new(Ldp::Resource::RdfSource.new(FedoraLens.connection, subject_or_data, RDF::Graph.new))
|
107
104
|
@attributes = data.with_indifferent_access
|
108
105
|
else
|
109
|
-
raise ArgumentError, "#{
|
106
|
+
raise ArgumentError, "#{subject_or_data.class} is not acceptable"
|
110
107
|
end
|
111
108
|
end
|
112
109
|
|
113
110
|
def create_record
|
114
111
|
push_attributes_to_orm
|
115
|
-
orm.
|
116
|
-
@new_record = false
|
112
|
+
@orm = orm.create
|
117
113
|
true
|
118
114
|
end
|
119
115
|
|
120
116
|
def update_record
|
121
117
|
push_attributes_to_orm
|
122
|
-
|
123
|
-
# see https://github.com/cbeer/ldp/issues/2
|
124
|
-
orm.graph.delete([@orm.resource.subject_uri,
|
125
|
-
RDF::URI.new("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
|
126
|
-
nil])
|
127
|
-
orm.save
|
128
|
-
orm.last_response.success?
|
118
|
+
orm.save!
|
129
119
|
end
|
130
120
|
|
131
121
|
|
@@ -141,16 +131,17 @@ module FedoraLens
|
|
141
131
|
|
142
132
|
module ClassMethods
|
143
133
|
def find(id)
|
144
|
-
resource = Ldp::Resource.new(FedoraLens.connection, id_to_uri(id))
|
134
|
+
resource = Ldp::Resource::RdfSource.new(FedoraLens.connection, id_to_uri(id))
|
135
|
+
raise Ldp::NotFound if resource.new?
|
145
136
|
self.new(resource)
|
146
137
|
end
|
147
138
|
|
148
139
|
def id_to_uri(id)
|
149
|
-
|
140
|
+
HOST + (id.start_with?('/') ? id : '/' + id)
|
150
141
|
end
|
151
142
|
|
152
143
|
def uri_to_id(uri)
|
153
|
-
uri.to_s.sub(HOST
|
144
|
+
uri.to_s.sub(HOST, '')
|
154
145
|
end
|
155
146
|
|
156
147
|
def create(data)
|
data/lib/fedora_lens/lenses.rb
CHANGED
@@ -50,11 +50,11 @@ module FedoraLens
|
|
50
50
|
def uris_to_ids
|
51
51
|
Lens[
|
52
52
|
get: lambda do |source|
|
53
|
-
source.map { |uri| URI.parse(uri).to_s.sub(HOST
|
53
|
+
source.map { |uri| URI.parse(uri).to_s.sub(HOST, '') }
|
54
54
|
end,
|
55
55
|
put: lambda do |sources, values|
|
56
56
|
Array(values).compact.map do |value|
|
57
|
-
RDF::URI.new(HOST +
|
57
|
+
RDF::URI.new(HOST + value)
|
58
58
|
end
|
59
59
|
end
|
60
60
|
]
|
@@ -139,7 +139,7 @@ module FedoraLens
|
|
139
139
|
orm
|
140
140
|
end,
|
141
141
|
create: lambda do |values|
|
142
|
-
orm = Ldp::Orm.new(Ldp::Resource.new(
|
142
|
+
orm = Ldp::Orm.new(Ldp::Resource::RdfSource.new(FedoraLens.connection, '', RDF::Graph.new))
|
143
143
|
values.each do |value|
|
144
144
|
orm.graph.insert([orm.resource.subject_uri, predicate, value])
|
145
145
|
end
|
@@ -164,9 +164,9 @@ module FedoraLens
|
|
164
164
|
Lens[
|
165
165
|
get: lambda do |uri|
|
166
166
|
if uri.present?
|
167
|
-
Ldp::Orm.new(Ldp::Resource.new(FedoraLens.connection, uri.to_s))
|
167
|
+
Ldp::Orm.new(Ldp::Resource::RdfSource.new(FedoraLens.connection, uri.to_s))
|
168
168
|
else
|
169
|
-
Ldp::Orm.new(Ldp::Resource.new(FedoraLens.connection, nil, RDF::Graph.new))
|
169
|
+
Ldp::Orm.new(Ldp::Resource::RdfSource.new(FedoraLens.connection, nil, RDF::Graph.new))
|
170
170
|
end
|
171
171
|
end,
|
172
172
|
put: lambda do |uri, orm|
|
data/lib/fedora_lens/version.rb
CHANGED
@@ -59,7 +59,7 @@ module FedoraLens
|
|
59
59
|
describe ".uris_to_ids" do
|
60
60
|
let(:lens) { Lenses.uris_to_ids }
|
61
61
|
|
62
|
-
let(:original) { [RDF::URI.new(HOST+
|
62
|
+
let(:original) { [RDF::URI.new(HOST + '/id/123'), RDF::URI.new(HOST + '/id/321')] }
|
63
63
|
|
64
64
|
describe "#get" do
|
65
65
|
subject { lens.get(input) }
|
@@ -85,7 +85,7 @@ module FedoraLens
|
|
85
85
|
context "with new values " do
|
86
86
|
let(:input) { ['/id/777', '/id/888'] }
|
87
87
|
it "overwrites the items" do
|
88
|
-
expect(subject).to eq [RDF::URI.new(HOST+
|
88
|
+
expect(subject).to eq [RDF::URI.new(HOST + '/id/777'), RDF::URI.new(HOST + '/id/888')]
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
@@ -136,33 +136,48 @@ module FedoraLens
|
|
136
136
|
|
137
137
|
describe ".get_predicate" do
|
138
138
|
let(:orm) do
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
orm
|
139
|
+
Ldp::Orm.new(resource).tap do |orm|
|
140
|
+
orm.graph.insert([orm.resource.subject_uri, RDF::DC11.title, "new title"])
|
141
|
+
end
|
143
142
|
end
|
143
|
+
|
144
|
+
let(:resource) { Ldp::Resource::RdfSource.new(mock_conn, '', RDF::Graph.new) }
|
145
|
+
let(:mock_conn) { double }
|
146
|
+
before { resource.stub(new?: true) }
|
147
|
+
subject { Lenses.get_predicate(RDF::DC11.title) }
|
148
|
+
|
149
|
+
let(:value) { [RDF::Literal.new("new title")] }
|
150
|
+
|
144
151
|
it "converts an Ldp::Orm to the value of the specified predicate" do
|
145
|
-
|
152
|
+
subject.get(orm).first.should eq value.first
|
146
153
|
end
|
154
|
+
|
147
155
|
it "gets an empty set" do
|
148
156
|
Lenses.get_predicate(RDF::DC11.description).get(orm).should eq []
|
149
157
|
end
|
158
|
+
|
159
|
+
it "is well-behaved (PutGet: get(put(source, value)) == value)" do
|
160
|
+
converted = subject.get(subject.put(orm, value))
|
161
|
+
expect(converted).to eq value
|
162
|
+
end
|
163
|
+
|
150
164
|
it "sets the value of an Ldp::Orm for the specified predicate" do
|
151
|
-
|
165
|
+
subject.put(orm, [RDF::Literal.new("new")]).value(RDF::DC11.title).first.should eq RDF::Literal.new("new")
|
166
|
+
end
|
167
|
+
|
168
|
+
it "is well-behaved (GetPut: put(source, get(source)) == source)" do
|
169
|
+
converted = subject.put(orm, subject.get(orm))
|
170
|
+
expect(converted).to eq orm
|
152
171
|
end
|
172
|
+
|
153
173
|
it "creates a new Ldp::Orm with the value for a specified predicate" do
|
154
|
-
converted =
|
155
|
-
converted.graph.
|
156
|
-
end
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
if v.is_a? Ldp::Orm
|
162
|
-
v.value(RDF::DC11.title)
|
163
|
-
else
|
164
|
-
v
|
165
|
-
end
|
174
|
+
converted = subject.create(value)
|
175
|
+
converted.graph.should eq orm.graph
|
176
|
+
end
|
177
|
+
|
178
|
+
it "is well-behaved (CreateGet: get(create(value)) == value)" do
|
179
|
+
created = subject.get(subject.create(value))
|
180
|
+
expect(created).to eq value
|
166
181
|
end
|
167
182
|
end
|
168
183
|
end
|
data/spec/fedora_lens_spec.rb
CHANGED
@@ -75,7 +75,7 @@ describe FedoraLens do
|
|
75
75
|
|
76
76
|
describe "#id" do
|
77
77
|
it "should not have 'fedora' in the id" do
|
78
|
-
m = TestClass.new('
|
78
|
+
m = TestClass.new(FedoraLens::HOST + '/41/0d/6b/47/410d6b47-ce9c-4fa0-91e2-d62765667c52')
|
79
79
|
expect(m.id).to eq '/41/0d/6b/47/410d6b47-ce9c-4fa0-91e2-d62765667c52'
|
80
80
|
end
|
81
81
|
end
|
@@ -92,13 +92,15 @@ describe FedoraLens do
|
|
92
92
|
m = TestClass.create(title: "created resource")
|
93
93
|
m.reload
|
94
94
|
m.title = "changed title"
|
95
|
-
m.save
|
95
|
+
m.save!
|
96
96
|
TestClass.find(m.id).title.should eq "changed title"
|
97
97
|
end
|
98
98
|
|
99
99
|
context "with a supplied id" do
|
100
100
|
subject { TestClass.new(TestClass.id_to_uri('foobar')) }
|
101
101
|
|
102
|
+
after { subject.delete }
|
103
|
+
|
102
104
|
it "saves with that id" do
|
103
105
|
expect(subject.new_record?).to be_true
|
104
106
|
expect(subject.save).to be_true
|
@@ -112,11 +114,11 @@ describe FedoraLens do
|
|
112
114
|
subject { TestClass.id_to_uri(id) }
|
113
115
|
context "without a leading slash" do
|
114
116
|
let(:id) { 'test' }
|
115
|
-
it { should eq '
|
117
|
+
it { should eq FedoraLens::HOST + '/test' }
|
116
118
|
end
|
117
119
|
context "with a leading slash" do
|
118
120
|
let(:id) { '/test' }
|
119
|
-
it { should eq '
|
121
|
+
it { should eq FedoraLens::HOST + '/test' }
|
120
122
|
end
|
121
123
|
end
|
122
124
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fedora_lens
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Coyne
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-04-
|
12
|
+
date: 2014-04-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -121,14 +121,14 @@ dependencies:
|
|
121
121
|
requirements:
|
122
122
|
- - '='
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.0.
|
124
|
+
version: 0.0.4
|
125
125
|
type: :runtime
|
126
126
|
prerelease: false
|
127
127
|
version_requirements: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - '='
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.0.
|
131
|
+
version: 0.0.4
|
132
132
|
description: ''
|
133
133
|
email:
|
134
134
|
- justin@curationexperts.com
|
@@ -157,7 +157,6 @@ files:
|
|
157
157
|
- lib/fedora_lens/lens_tests.rb
|
158
158
|
- lib/fedora_lens/lenses.rb
|
159
159
|
- lib/fedora_lens/version.rb
|
160
|
-
- lib/ldp_monkeypatch.rb
|
161
160
|
- lib/test_class.rb
|
162
161
|
- spec/fedora_lens/lenses_spec.rb
|
163
162
|
- spec/fedora_lens_spec.rb
|
data/lib/ldp_monkeypatch.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'ldp'
|
2
|
-
module Ldp
|
3
|
-
|
4
|
-
class Resource
|
5
|
-
def create
|
6
|
-
# create seems to not be working in ldp, but it's not entirely clear how it should work
|
7
|
-
# for example, :new? calls :get, which will raise an error when an object doesn't exist,
|
8
|
-
# this means it is impossible to create anything.
|
9
|
-
# raise "" if new?
|
10
|
-
# puts "MONKEY patch create #{client.inspect}"
|
11
|
-
# puts "Graph #{graph.dump(:ttl)}"
|
12
|
-
resp = client.post '/fedora/rest', graph.dump(:ttl) do |req|
|
13
|
-
# req.headers['Slug'] = subject
|
14
|
-
end
|
15
|
-
|
16
|
-
# puts "Heards #{resp.headers.inspect}"
|
17
|
-
@subject = resp.headers['Location']
|
18
|
-
# puts "Loc #{@subject.inspect}"
|
19
|
-
@subject_uri = nil
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|