ldp 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -2
- data/lib/ldp/response.rb +23 -18
- data/lib/ldp/version.rb +1 -1
- data/spec/lib/ldp/response_spec.rb +29 -14
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 652e178917c335b0881ee4e23026d25dc32aa936
|
4
|
+
data.tar.gz: 20aa0d107df87615a4159ccc10074f7f8269f006
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc468961929d9774a534438c7ce2ed062b603f13dab4251d7fedb3012ccc0290bc188d038e48d142a7cd32505f46249d54b6e75e0b49415554c4fe68b326c5b1
|
7
|
+
data.tar.gz: 76423521a6ebf9327fda8ebb4d8526b95e84f038891cda7322c8ec1714c65da84e36f5b8212a6cf38c55cd411c1c0f87e8383881534e58c6da84f4a4fce5d846
|
data/.travis.yml
CHANGED
data/lib/ldp/response.rb
CHANGED
@@ -2,6 +2,7 @@ module Ldp
|
|
2
2
|
module Response
|
3
3
|
require 'ldp/response/paging'
|
4
4
|
|
5
|
+
TYPE = 'type'.freeze
|
5
6
|
##
|
6
7
|
# Wrap the raw Faraday respone with our LDP extensions
|
7
8
|
def self.wrap client, raw_resp
|
@@ -14,7 +15,7 @@ module Ldp
|
|
14
15
|
# Extract the Link: headers from the HTTP resource
|
15
16
|
def self.links response
|
16
17
|
h = {}
|
17
|
-
Array(response.headers[
|
18
|
+
Array(response.headers['Link'.freeze]).map { |x| x.split(', '.freeze) }.flatten.inject(h) do |memo, header|
|
18
19
|
m = header.match(/<(?<link>.*)>;\s?rel="(?<rel>[^"]+)"/)
|
19
20
|
if m
|
20
21
|
memo[m[:rel]] ||= []
|
@@ -24,10 +25,10 @@ module Ldp
|
|
24
25
|
memo
|
25
26
|
end
|
26
27
|
end
|
27
|
-
|
28
|
+
|
28
29
|
def self.applied_preferences headers
|
29
30
|
h = {}
|
30
|
-
|
31
|
+
|
31
32
|
Array(headers).map { |x| x.split(",") }.flatten.inject(h) do |memo, header|
|
32
33
|
m = header.match(/(?<key>[^=;]*)(=(?<value>[^;,]*))?(;\s*(?<params>[^,]*))?/)
|
33
34
|
includes = (m[:params].match(/include="(?<include>[^"]+)"/)[:include] || "").split(" ")
|
@@ -40,7 +41,7 @@ module Ldp
|
|
40
41
|
# Is the response an LDP resource?
|
41
42
|
|
42
43
|
def self.resource? response
|
43
|
-
Array(links(response)[
|
44
|
+
Array(links(response)[TYPE]).include? Ldp.resource.to_s
|
44
45
|
end
|
45
46
|
|
46
47
|
##
|
@@ -50,23 +51,25 @@ module Ldp
|
|
50
51
|
Ldp.basic_container,
|
51
52
|
Ldp.direct_container,
|
52
53
|
Ldp.indirect_container
|
53
|
-
].any? { |x| Array(links(response)[
|
54
|
+
].any? { |x| Array(links(response)[TYPE]).include? x.to_s }
|
54
55
|
end
|
55
56
|
|
56
57
|
##
|
57
58
|
# Is the response an LDP RDFSource?
|
58
59
|
# ldp:Container is a subclass of ldp:RDFSource
|
59
60
|
def self.rdf_source? response
|
60
|
-
container?(response) || Array(links(response)[
|
61
|
+
container?(response) || Array(links(response)[TYPE]).include?(Ldp.rdf_source)
|
61
62
|
end
|
62
63
|
|
63
64
|
def dup
|
64
65
|
super.tap do |new_resp|
|
65
66
|
new_resp.send(:extend, Ldp::Response)
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
67
|
+
unless new_resp.instance_variable_get(:@graph).nil?
|
68
|
+
if ::RUBY_VERSION < '2.0'
|
69
|
+
new_resp.send(:remove_instance_variable, :@graph)
|
70
|
+
else
|
71
|
+
new_resp.remove_instance_variable(:@graph)
|
72
|
+
end
|
70
73
|
end
|
71
74
|
end
|
72
75
|
end
|
@@ -96,7 +99,7 @@ module Ldp
|
|
96
99
|
end
|
97
100
|
|
98
101
|
def preferences
|
99
|
-
Ldp::Resource.applied_preferences(headers[
|
102
|
+
Ldp::Resource.applied_preferences(headers['Preference-Applied'.freeze])
|
100
103
|
end
|
101
104
|
##
|
102
105
|
# Get the subject for the response
|
@@ -138,7 +141,7 @@ module Ldp
|
|
138
141
|
##
|
139
142
|
# Extract the ETag for the resource
|
140
143
|
def etag
|
141
|
-
@etag ||= headers['ETag']
|
144
|
+
@etag ||= headers['ETag'.freeze]
|
142
145
|
end
|
143
146
|
|
144
147
|
def etag=(val)
|
@@ -148,7 +151,7 @@ module Ldp
|
|
148
151
|
##
|
149
152
|
# Extract the last modified header for the resource
|
150
153
|
def last_modified
|
151
|
-
@last_modified ||= headers['Last-Modified']
|
154
|
+
@last_modified ||= headers['Last-Modified'.freeze]
|
152
155
|
end
|
153
156
|
|
154
157
|
def last_modified=(val)
|
@@ -158,17 +161,19 @@ module Ldp
|
|
158
161
|
##
|
159
162
|
# Extract the Link: rel="type" headers for the resource
|
160
163
|
def types
|
161
|
-
Array(links[
|
164
|
+
Array(links[TYPE])
|
162
165
|
end
|
163
|
-
|
166
|
+
|
167
|
+
RETURN = 'return'.freeze
|
168
|
+
|
164
169
|
def includes? preference
|
165
170
|
key = Ldp.send("prefer_#{preference}") if Ldp.respond_to("prefer_#{preference}")
|
166
171
|
key ||= preference
|
167
|
-
preferences[
|
172
|
+
preferences[RETURN][:includes].include?(key) || !preferences["return"][:omits].include?(key)
|
168
173
|
end
|
169
|
-
|
174
|
+
|
170
175
|
def minimal?
|
171
|
-
preferences[
|
176
|
+
preferences[RETURN][:value] == "minimal"
|
172
177
|
end
|
173
178
|
end
|
174
179
|
end
|
data/lib/ldp/version.rb
CHANGED
@@ -19,29 +19,44 @@ describe Ldp::Response do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
describe "#dup" do
|
22
|
-
let(:
|
23
|
-
let(:
|
24
|
-
|
22
|
+
let(:mock_conn) { Faraday.new { |builder| builder.adapter :test, conn_stubs } }
|
23
|
+
let(:client) { Ldp::Client.new mock_conn }
|
24
|
+
let(:raw_response) { client.get "a_container" }
|
25
25
|
let(:conn_stubs) do
|
26
26
|
Faraday::Adapter::Test::Stubs.new do |stub|
|
27
|
-
stub.get('/a_container') { [200, {"Link" => link},
|
27
|
+
stub.get('/a_container') { [200, {"Link" => link}, body] }
|
28
28
|
end
|
29
29
|
end
|
30
|
-
|
31
|
-
let(:mock_conn) { Faraday.new { |builder| builder.adapter :test, conn_stubs } }
|
32
|
-
let(:client) { Ldp::Client.new mock_conn }
|
33
|
-
let(:raw_response) { client.get "a_container" }
|
34
|
-
|
35
30
|
let(:response) { Ldp::Response.wrap mock_client, raw_response }
|
31
|
+
|
36
32
|
subject { response.dup }
|
37
|
-
it { is_expected.to respond_to :links }
|
38
33
|
|
39
|
-
|
40
|
-
|
34
|
+
context "for a container resource" do
|
35
|
+
let(:body) { "<> a <http://www.w3.org/ns/ldp#Container> ." }
|
36
|
+
let(:link) { ["<http://www.w3.org/ns/ldp#Resource>;rel=\"type\"","<http://www.w3.org/ns/ldp#BasicContainer>;rel=\"type\""] }
|
37
|
+
it { is_expected.to respond_to :links }
|
38
|
+
|
39
|
+
it "should not have duplicated the graph" do
|
40
|
+
expect(response.graph.object_id).not_to eq subject.graph.object_id
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should have duplicated the body" do
|
44
|
+
expect(response.body.object_id).to eq subject.body.object_id
|
45
|
+
end
|
41
46
|
end
|
42
47
|
|
43
|
-
|
44
|
-
|
48
|
+
context "for a non-rdf resource" do
|
49
|
+
let(:body) { "This is only a test" }
|
50
|
+
let(:link) { ["<http://www.w3.org/ns/ldp#Resource>;rel=\"type\"","<http://www.w3.org/ns/ldp#NonRDFSource>;rel=\"type\""] }
|
51
|
+
it { is_expected.to respond_to :links }
|
52
|
+
|
53
|
+
it "should not have a graph" do
|
54
|
+
expect(response.instance_variable_get(:@graph)).to be_nil
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should have duplicated the body" do
|
58
|
+
expect(response.body.object_id).to eq subject.body.object_id
|
59
|
+
end
|
45
60
|
end
|
46
61
|
end
|
47
62
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ldp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Beer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|