rdf-ldp 0.6.0 → 0.7.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 51911c93db2822f4b81a715187dbe77ea175336d
4
- data.tar.gz: 1109c3c631c59d55ff0e96e422d29363e1efcc61
3
+ metadata.gz: c6984fe1fabab30524697db0471c39721f68fb54
4
+ data.tar.gz: fc3b6d95051b4c82b02cb9d474a379b15e5584d0
5
5
  SHA512:
6
- metadata.gz: 86057aa53d6be3dad23e16107da011b30b8e3ba039bec87dd77c0729ced5a3775c363528df35124860e70bb5ea718fb59708d44585d1523ce29ab195d803c05b
7
- data.tar.gz: 3f6824f3c638733ac1f66c6eecbfb8856ada627ef9156453c9ba61ee45316f09fadefac59e35436324e6ee64f7e75c05d23eed5266a289ea5d67a3f7a81de11c
6
+ metadata.gz: 0243e142e3b59232c19360ad4b507dda9e32ea9643e794318fb5227fe653261b64a61b82e655620976a05fec535f35193c5c7fccb225ed65669ff07192875693
7
+ data.tar.gz: 7256e7bb1c2c2a59c16e64def71c9101e5cd1b071d6f2432564d1dfb3d8feb559732b85821a3e0a71773f15f69cab5d8ee1da9e36af3dc1d4ee3b29793d89811
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ 0.7.0
2
+ -----
3
+ - Changes handling of input streams to be compliant with Rack. Allows
4
+ the server to run with `Rack::Lint` middleware. In the process, the
5
+ `RDFSource` and `NonRDFSource` interfaces are changed to accept only
6
+ IO-like objects conforming to Rack's input expectations. `String`
7
+ objects are no longer handled.
8
+
1
9
  0.6.0
2
10
  -----
3
11
  - Upgrades to RDF.rb 2.0
data/IMPLEMENTATION.md CHANGED
@@ -14,8 +14,10 @@ LDP Implementation Overview
14
14
  creation.
15
15
  - __4.2.1.3__: Etags are generated for all LDPRs and returned for all requests
16
16
  to the resource.
17
- - __4.2.1.4__: Link headers for the resquested resource are added by
18
- `Rack::LDP::Headers` middleware.
17
+ - __4.2.1.4__: Link headers for the __returned__ resource are added by
18
+ `Rack::LDP::Headers` middleware. The requirement to return Link headers for
19
+ the requested resource is ignored in the case of successful POST requests;
20
+ instead, the headers for the created resource are given.
19
21
  - __4.2.1.5__: Relative URI resolution in RDF graphs is handled with
20
22
  `RDF::Reader#base_uri`. This is tested for Turtle input.
21
23
  - __4.2.1.6__: Constraints are published in the {CONSTRAINED_BY.md} file in
data/README.md CHANGED
@@ -106,10 +106,10 @@ $ rackup
106
106
  Compliance
107
107
  ----------
108
108
 
109
- Current compliance reports for Lamprey are located in [/reports](reports/).
110
- Reports are generated by the LDP test suite. To duplicate the results,
111
- use the `testsuite` branch, which contains a work-around for
112
- [w3c/ldp-testsuite#224](https://github.com/w3c/ldp-testsuite/issues/224).
109
+ Current compliance reports for Lamprey are located in [/report](report/).
110
+ Reports are generated by the LDP test suite. We use the
111
+ [`ldp_testsuite_wrapper`](https://github.com/cbeer/ldp_testsuite_wrapper)
112
+ gem to run the suite and generate the tests.
113
113
 
114
114
  RDF.rb 1.x Compatibility
115
115
  --------------------------
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.7.0
data/app/lamprey.rb CHANGED
@@ -2,7 +2,7 @@ require 'rack/ldp'
2
2
  require 'sinatra/base'
3
3
 
4
4
  class RDF::Lamprey < Sinatra::Base
5
-
5
+ use Rack::Lint
6
6
  use Rack::LDP::ContentNegotiation
7
7
  use Rack::LDP::Errors
8
8
  use Rack::LDP::Responses
@@ -16,7 +16,7 @@ class RDF::Lamprey < Sinatra::Base
16
16
 
17
17
  get '/*' do
18
18
  RDF::LDP::Container.new(RDF::URI(request.url), settings.repository)
19
- .create('', 'text/turtle') if settings.repository.empty?
19
+ .create(StringIO.new, 'text/turtle') if settings.repository.empty?
20
20
  RDF::LDP::Resource.find(RDF::URI(request.url), settings.repository)
21
21
  end
22
22
 
@@ -32,17 +32,27 @@ module RDF::LDP
32
32
  end
33
33
 
34
34
  ##
35
+ # Creates and inserts default relation triples if none are given.
36
+ #
37
+ # @note the addition of default triples is handled in a separate
38
+ # transaction. It is possible for the second transaction to fail, causing
39
+ # the resource to persist in an invalid state. It is also possible for a
40
+ # read to occur between the two transactions.
41
+ # @todo Make atomic. Consider just raising an error instead of adding
42
+ # triples. There's a need to handle this issue for repositories with
43
+ # snapshot reads, as well as those without.
44
+ #
35
45
  # @see Container#create
36
46
  def create(input, content_type, &block)
37
47
  super
38
- # insert relation triples after the transaction, since we can't guarantee
39
- # snapshot access.
40
- #
41
- # @todo consider just raising an error instead.
42
- graph.insert(default_member_relation_statement) if
43
- member_relation_statements.empty?
44
- graph.insert(default_membership_resource_statement) if
45
- membership_resource_statements.empty?
48
+
49
+ graph.transaction(mutable: true) do |tx|
50
+ tx.insert(default_member_relation_statement) if
51
+ member_relation_statements.empty?
52
+ tx.insert(default_membership_resource_statement) if
53
+ membership_resource_statements.empty?
54
+ end
55
+
46
56
  self
47
57
  end
48
58
 
@@ -29,13 +29,20 @@ module RDF::LDP
29
29
  end
30
30
 
31
31
  ##
32
- # @see Container#create
32
+ # Creates and inserts default relation triples if none are given.
33
+ #
34
+ # @see DirectContainer#create for information about the behavior and
35
+ # transactionality of this method.
33
36
  def create(input, content_type, &block)
34
37
  super
35
- graph.insert RDF::Statement(subject_uri,
36
- RDF::Vocab::LDP.insertedContentRelation,
37
- RDF::Vocab::LDP.MemberSubject) if
38
- inserted_content_statements.empty?
38
+
39
+ graph.transaction(mutable: true) do |tx|
40
+ tx.insert RDF::Statement(subject_uri,
41
+ RDF::Vocab::LDP.insertedContentRelation,
42
+ RDF::Vocab::LDP.MemberSubject) if
43
+ inserted_content_statements.empty?
44
+ end
45
+
39
46
  self
40
47
  end
41
48
 
@@ -47,17 +47,20 @@ module RDF::LDP
47
47
  #
48
48
  # @see RDF::LDP::Resource#create
49
49
  def create(input, c_type)
50
- storage.io { |io| IO.copy_stream(input.binmode, io) }
50
+ storage.io { |io| IO.copy_stream(input, io) }
51
51
  super
52
52
  self.content_type = c_type
53
- RDFSource.new(description_uri, @data).create('', 'application/n-triples')
53
+
54
+ RDFSource.new(description_uri, @data)
55
+ .create(StringIO.new, 'application/n-triples')
56
+
54
57
  self
55
58
  end
56
59
 
57
60
  ##
58
61
  # @see RDF::LDP::Resource#update
59
62
  def update(input, c_type)
60
- storage.io { |io| IO.copy_stream(input.binmode, io) }
63
+ storage.io { |io| IO.copy_stream(input, io) }
61
64
  super
62
65
  self.content_type = c_type
63
66
  self
@@ -180,7 +183,7 @@ module RDF::LDP
180
183
  #
181
184
  # @example writing to a `StorageAdapter`
182
185
  # storage = StorageAdapter.new(an_nr_source)
183
- # storage.io { |io| io.write('moomin')
186
+ # storage.io { |io| io.write('moomin') }
184
187
  #
185
188
  # Beyond this interface, implementations are permitted to behave as desired.
186
189
  # They may, for instance, reject undesirable content or alter the graph (or
@@ -98,8 +98,7 @@ module RDF::LDP
98
98
  # @return [RDF::LDP::Resource] self
99
99
  def create(input, content_type, &block)
100
100
  super do |transaction|
101
- statements = parse_graph(input, content_type)
102
- transaction.insert(statements)
101
+ transaction.insert(parse_graph(input, content_type))
103
102
  yield transaction if block_given?
104
103
  end
105
104
  end
@@ -137,7 +136,6 @@ module RDF::LDP
137
136
  transaction.insert parse_graph(input, content_type)
138
137
  yield transaction if block_given?
139
138
  end
140
- self
141
139
  end
142
140
 
143
141
  ##
@@ -193,13 +191,13 @@ module RDF::LDP
193
191
  end
194
192
 
195
193
  def ld_patch(input, graph, &block)
196
- LD::Patch.parse(input).execute(graph)
194
+ LD::Patch.parse(input.read).execute(graph)
197
195
  rescue LD::Patch::Error => e
198
196
  raise BadRequest, e.message
199
197
  end
200
198
 
201
199
  def sparql_update(input, graph)
202
- SPARQL.execute(input, graph, update: true)
200
+ SPARQL.execute(input.read, graph, update: true)
203
201
  rescue SPARQL::MalformedQuery => e
204
202
  raise BadRequest, e.message
205
203
  end
@@ -245,11 +243,10 @@ module RDF::LDP
245
243
  reader = RDF::Reader.for(content_type: content_type.to_s)
246
244
  raise(RDF::LDP::UnsupportedMediaType, content_type) if reader.nil?
247
245
 
248
- input = input.read if input.respond_to? :read
249
-
250
246
  begin
247
+ input.rewind
251
248
  RDF::Graph.new(graph_name: subject_uri, data: RDF::Repository.new) <<
252
- reader.new(input, base_uri: subject_uri, validate: true)
249
+ reader.new(input.read, base_uri: subject_uri, validate: true)
253
250
  rescue RDF::ReaderError => e
254
251
  raise RDF::LDP::BadRequest, e.message
255
252
  end
@@ -246,10 +246,12 @@ module RDF::LDP
246
246
  # subclasses for the appropriate response codes.
247
247
  def update(input, content_type, &block)
248
248
  return create(input, content_type, &block) unless exists?
249
+
249
250
  @data.transaction(mutable: true) do |transaction|
250
251
  yield transaction if block_given?
251
252
  set_last_modified(transaction)
252
253
  end
254
+
253
255
  self
254
256
  end
255
257
 
@@ -455,7 +457,9 @@ module RDF::LDP
455
457
  ##
456
458
  # Process & generate response for DELETE requests.
457
459
  def delete(status, headers, env)
458
- [204, headers, destroy]
460
+ destroy
461
+ headers.delete('Content-Type')
462
+ [204, headers, []]
459
463
  end
460
464
 
461
465
  ##
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdf-ldp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Johnson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-16 00:00:00.000000000 Z
11
+ date: 2016-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -296,6 +296,48 @@ dependencies:
296
296
  - - "~>"
297
297
  - !ruby/object:Gem::Version
298
298
  version: '0.8'
299
+ - !ruby/object:Gem::Dependency
300
+ name: faraday
301
+ requirement: !ruby/object:Gem::Requirement
302
+ requirements:
303
+ - - ">="
304
+ - !ruby/object:Gem::Version
305
+ version: '0'
306
+ type: :development
307
+ prerelease: false
308
+ version_requirements: !ruby/object:Gem::Requirement
309
+ requirements:
310
+ - - ">="
311
+ - !ruby/object:Gem::Version
312
+ version: '0'
313
+ - !ruby/object:Gem::Dependency
314
+ name: capybara_discoball
315
+ requirement: !ruby/object:Gem::Requirement
316
+ requirements:
317
+ - - ">="
318
+ - !ruby/object:Gem::Version
319
+ version: '0'
320
+ type: :development
321
+ prerelease: false
322
+ version_requirements: !ruby/object:Gem::Requirement
323
+ requirements:
324
+ - - ">="
325
+ - !ruby/object:Gem::Version
326
+ version: '0'
327
+ - !ruby/object:Gem::Dependency
328
+ name: ldp_testsuite_wrapper
329
+ requirement: !ruby/object:Gem::Requirement
330
+ requirements:
331
+ - - "~>"
332
+ - !ruby/object:Gem::Version
333
+ version: 0.0.4
334
+ type: :development
335
+ prerelease: false
336
+ version_requirements: !ruby/object:Gem::Requirement
337
+ requirements:
338
+ - - "~>"
339
+ - !ruby/object:Gem::Version
340
+ version: 0.0.4
299
341
  description: Implements a Linked Data Platform domain model, Rack middleware for server
300
342
  implementers, and a simple Sinatra-based server for RDF.rb
301
343
  email: public-rdf-ruby@w3.org
@@ -335,7 +377,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
335
377
  requirements:
336
378
  - - ">="
337
379
  - !ruby/object:Gem::Version
338
- version: 1.9.2
380
+ version: 2.0.0
339
381
  required_rubygems_version: !ruby/object:Gem::Requirement
340
382
  requirements:
341
383
  - - ">="
@@ -343,7 +385,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
343
385
  version: '0'
344
386
  requirements: []
345
387
  rubyforge_project:
346
- rubygems_version: 2.2.0
388
+ rubygems_version: 2.5.1
347
389
  signing_key:
348
390
  specification_version: 4
349
391
  summary: A suite of LDP software and middleware for RDF.rb.