tripod 0.8 → 0.9.1
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/lib/tripod/resource.rb +3 -3
- data/lib/tripod/sparql_client.rb +3 -3
- data/lib/tripod/streaming.rb +3 -2
- data/lib/tripod/version.rb +1 -1
- data/spec/tripod/sparql_client_spec.rb +5 -4
- data/spec/tripod/streaming_spec.rb +10 -16
- metadata +22 -22
data/lib/tripod/resource.rb
CHANGED
@@ -37,11 +37,11 @@ module Tripod::Resource
|
|
37
37
|
#
|
38
38
|
# @return [ Resource ] A new +Resource+
|
39
39
|
def initialize(uri, opts={})
|
40
|
-
if opts.is_a?(
|
41
|
-
graph_uri = opts
|
42
|
-
else
|
40
|
+
if opts.is_a?(Hash)
|
43
41
|
graph_uri = opts.fetch(:graph_uri, nil)
|
44
42
|
ignore_graph = opts.fetch(:ignore_graph, false)
|
43
|
+
else
|
44
|
+
graph_uri = opts
|
45
45
|
end
|
46
46
|
|
47
47
|
raise Tripod::Errors::UriNotSet.new('uri missing') unless uri
|
data/lib/tripod/sparql_client.rb
CHANGED
@@ -16,8 +16,8 @@ module Tripod::SparqlClient
|
|
16
16
|
# @return [ RestClient::Response ]
|
17
17
|
def self.query(sparql, accept_header, extra_params={}, response_limit_bytes = :default)
|
18
18
|
|
19
|
-
params = {:query => sparql}.merge(extra_params)
|
20
|
-
request_url = Tripod.query_endpoint
|
19
|
+
params = {:query => sparql}.merge(extra_params).to_query
|
20
|
+
request_url = Tripod.query_endpoint
|
21
21
|
streaming_opts = {:accept => accept_header, :timeout_seconds => Tripod.timeout_seconds}
|
22
22
|
streaming_opts.merge!(_response_limit_options(response_limit_bytes)) if Tripod.response_limit_bytes
|
23
23
|
|
@@ -27,7 +27,7 @@ module Tripod::SparqlClient
|
|
27
27
|
Tripod.logger.debug "TRIPOD: Streaming fron url: #{request_url}"
|
28
28
|
Tripod.logger.debug "TRIPOD: Streaming opts: #{streaming_opts.inspect}"
|
29
29
|
|
30
|
-
Tripod::Streaming.get_data(request_url, streaming_opts)
|
30
|
+
Tripod::Streaming.get_data(request_url, params, streaming_opts)
|
31
31
|
}
|
32
32
|
|
33
33
|
if Tripod.cache_store # if a cache store is configured
|
data/lib/tripod/streaming.rb
CHANGED
@@ -8,7 +8,7 @@ module Tripod
|
|
8
8
|
# :accept => "*/*"
|
9
9
|
# :timeout_seconds = 10
|
10
10
|
# :response_limit_bytes = nil
|
11
|
-
def self.get_data(request_url, opts={})
|
11
|
+
def self.get_data(request_url, payload, opts={})
|
12
12
|
|
13
13
|
accept = opts[:accept] || "*/*"
|
14
14
|
timeout_in_seconds = opts[:timeout_seconds] || 10
|
@@ -25,7 +25,7 @@ module Tripod
|
|
25
25
|
request_start_time = Time.now if Tripod.logger.debug?
|
26
26
|
|
27
27
|
begin
|
28
|
-
http.
|
28
|
+
http.request_post(uri.request_uri, payload, 'Accept' => accept) do |res|
|
29
29
|
|
30
30
|
response_duration = Time.now - request_start_time if Tripod.logger.debug?
|
31
31
|
|
@@ -37,6 +37,7 @@ module Tripod
|
|
37
37
|
res.read_body do |seg|
|
38
38
|
total_bytes += seg.size
|
39
39
|
response_string += seg.to_s
|
40
|
+
# raise Tripod::Errors::Timeout.new
|
40
41
|
# if there's a limit, stop when we reach it
|
41
42
|
raise Tripod::Errors::SparqlResponseTooLarge.new if limit_in_bytes && (total_bytes > limit_in_bytes)
|
42
43
|
end
|
data/lib/tripod/version.rb
CHANGED
@@ -26,7 +26,8 @@ describe Tripod::SparqlClient do
|
|
26
26
|
Tripod::SparqlClient::Query.query(query, "application/sparql-results+json")
|
27
27
|
|
28
28
|
expect(Tripod::Streaming).to have_received(:get_data).with(
|
29
|
-
Tripod.query_endpoint
|
29
|
+
Tripod.query_endpoint,
|
30
|
+
"query=#{CGI.escape(query)}",
|
30
31
|
{
|
31
32
|
accept: "application/sparql-results+json",
|
32
33
|
timeout_seconds: Tripod.timeout_seconds,
|
@@ -42,7 +43,7 @@ describe Tripod::SparqlClient do
|
|
42
43
|
)
|
43
44
|
|
44
45
|
expect(Tripod::Streaming).to have_received(:get_data).with(
|
45
|
-
kind_of(String), hash_including(response_limit_bytes: 1024)
|
46
|
+
kind_of(String), kind_of(String), hash_including(response_limit_bytes: 1024)
|
46
47
|
)
|
47
48
|
end
|
48
49
|
end
|
@@ -54,7 +55,7 @@ describe Tripod::SparqlClient do
|
|
54
55
|
)
|
55
56
|
|
56
57
|
expect(Tripod::Streaming).to have_received(:get_data).with(
|
57
|
-
kind_of(String), hash_including(:response_limit_bytes)
|
58
|
+
kind_of(String), kind_of(String), hash_including(:response_limit_bytes)
|
58
59
|
)
|
59
60
|
end
|
60
61
|
end
|
@@ -66,7 +67,7 @@ describe Tripod::SparqlClient do
|
|
66
67
|
)
|
67
68
|
|
68
69
|
expect(Tripod::Streaming).to have_received(:get_data).with(
|
69
|
-
kind_of(String), hash_not_including(:response_limit_bytes)
|
70
|
+
kind_of(String), kind_of(String), hash_not_including(:response_limit_bytes)
|
70
71
|
)
|
71
72
|
end
|
72
73
|
end
|
@@ -3,60 +3,54 @@ require "spec_helper"
|
|
3
3
|
describe Tripod::Streaming do
|
4
4
|
|
5
5
|
let(:url) { 'http://example.com' }
|
6
|
+
let(:query) { 'select * where {?s ?p ?o}' }
|
6
7
|
let(:response_length) { 64.kilobytes }
|
7
8
|
|
8
9
|
before do
|
9
10
|
WebMock.enable!
|
10
|
-
stub_http_request(:
|
11
|
+
stub_http_request(:post, url).with(:body => query, :headers => {'Accept' => "*/*"}).to_return(:body => ("0" * response_length))
|
11
12
|
end
|
12
13
|
|
13
14
|
describe ".get_data" do
|
14
15
|
it "should make a request to the url passed in" do
|
15
|
-
Tripod::Streaming.get_data(url)
|
16
|
+
Tripod::Streaming.get_data(url, query)
|
16
17
|
end
|
17
18
|
|
18
19
|
context "with timeout option" do
|
19
20
|
it "should set the read_timeout to that value" do
|
20
21
|
Net::HTTP.any_instance.should_receive(:read_timeout=).with(28)
|
21
|
-
Tripod::Streaming.get_data(url, :timeout_seconds => 28)
|
22
|
+
Tripod::Streaming.get_data(url, query, :timeout_seconds => 28)
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
25
26
|
context "with no timeout option" do
|
26
27
|
it "should set the read_timeout to the default (10s)" do
|
27
28
|
Net::HTTP.any_instance.should_receive(:read_timeout=).with(10)
|
28
|
-
Tripod::Streaming.get_data(url)
|
29
|
+
Tripod::Streaming.get_data(url, query)
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
32
33
|
context "with an accept header option" do
|
33
34
|
it "should use that header for the request " do
|
34
|
-
stub_http_request(:
|
35
|
-
Tripod::Streaming.get_data(url, :accept => 'application/json')
|
35
|
+
stub_http_request(:post, url).with(:body => query, :headers => {'Accept' => "application/json"})
|
36
|
+
Tripod::Streaming.get_data(url, query, :accept => 'application/json')
|
36
37
|
end
|
37
38
|
end
|
38
39
|
|
39
40
|
# these tests actually download remote resources (from jQuery's CDN) to test the streaming bits
|
40
41
|
# TODO: move this out so it doesn't run with the normal rake task??
|
41
42
|
context "streaming" do
|
42
|
-
before { WebMock.disable! }
|
43
|
-
|
44
43
|
context "with no limit" do
|
45
|
-
|
46
44
|
it "should return the full body" do
|
47
|
-
|
48
|
-
response
|
49
|
-
response.length.should == full_response_length
|
45
|
+
response = Tripod::Streaming.get_data(url, query, :no_response_limit => true)
|
46
|
+
response.length.should == response_length
|
50
47
|
end
|
51
48
|
end
|
52
49
|
|
53
50
|
context "with a limit" do
|
54
51
|
it "should raise an exception if it's bigger than the limit" do
|
55
|
-
unlimited_response = Tripod::Streaming.get_data('http://code.jquery.com/jquery-1.9.1.js')
|
56
|
-
unlimited_response.length.should > 48.kilobytes
|
57
|
-
|
58
52
|
lambda {
|
59
|
-
Tripod::Streaming.get_data(
|
53
|
+
Tripod::Streaming.get_data(url, query, :response_limit_bytes => 32.kilobytes)
|
60
54
|
}.should raise_error(Tripod::Errors::SparqlResponseTooLarge)
|
61
55
|
end
|
62
56
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tripod
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.9.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,11 +11,11 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-
|
14
|
+
date: 2013-12-09 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rest-client
|
18
|
-
requirement: &
|
18
|
+
requirement: &70143888872280 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ! '>='
|
@@ -23,10 +23,10 @@ dependencies:
|
|
23
23
|
version: '0'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
|
-
version_requirements: *
|
26
|
+
version_requirements: *70143888872280
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activemodel
|
29
|
-
requirement: &
|
29
|
+
requirement: &70143888884780 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
@@ -34,10 +34,10 @@ dependencies:
|
|
34
34
|
version: '3.2'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
|
-
version_requirements: *
|
37
|
+
version_requirements: *70143888884780
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: equivalent-xml
|
40
|
-
requirement: &
|
40
|
+
requirement: &70143888894220 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - ! '>='
|
@@ -45,10 +45,10 @@ dependencies:
|
|
45
45
|
version: '0'
|
46
46
|
type: :runtime
|
47
47
|
prerelease: false
|
48
|
-
version_requirements: *
|
48
|
+
version_requirements: *70143888894220
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: rdf
|
51
|
-
requirement: &
|
51
|
+
requirement: &70143888891840 !ruby/object:Gem::Requirement
|
52
52
|
none: false
|
53
53
|
requirements:
|
54
54
|
- - ~>
|
@@ -56,10 +56,10 @@ dependencies:
|
|
56
56
|
version: '1.0'
|
57
57
|
type: :runtime
|
58
58
|
prerelease: false
|
59
|
-
version_requirements: *
|
59
|
+
version_requirements: *70143888891840
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: rdf-rdfxml
|
62
|
-
requirement: &
|
62
|
+
requirement: &70143888888600 !ruby/object:Gem::Requirement
|
63
63
|
none: false
|
64
64
|
requirements:
|
65
65
|
- - ! '>='
|
@@ -67,10 +67,10 @@ dependencies:
|
|
67
67
|
version: '0'
|
68
68
|
type: :runtime
|
69
69
|
prerelease: false
|
70
|
-
version_requirements: *
|
70
|
+
version_requirements: *70143888888600
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: rdf-turtle
|
73
|
-
requirement: &
|
73
|
+
requirement: &70143888912920 !ruby/object:Gem::Requirement
|
74
74
|
none: false
|
75
75
|
requirements:
|
76
76
|
- - ! '>='
|
@@ -78,10 +78,10 @@ dependencies:
|
|
78
78
|
version: '0'
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
|
-
version_requirements: *
|
81
|
+
version_requirements: *70143888912920
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: rdf-json
|
84
|
-
requirement: &
|
84
|
+
requirement: &70143888909880 !ruby/object:Gem::Requirement
|
85
85
|
none: false
|
86
86
|
requirements:
|
87
87
|
- - ! '>='
|
@@ -89,10 +89,10 @@ dependencies:
|
|
89
89
|
version: '0'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
|
-
version_requirements: *
|
92
|
+
version_requirements: *70143888909880
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
94
|
name: json-ld
|
95
|
-
requirement: &
|
95
|
+
requirement: &70143888923020 !ruby/object:Gem::Requirement
|
96
96
|
none: false
|
97
97
|
requirements:
|
98
98
|
- - ~>
|
@@ -100,10 +100,10 @@ dependencies:
|
|
100
100
|
version: 0.9.1
|
101
101
|
type: :runtime
|
102
102
|
prerelease: false
|
103
|
-
version_requirements: *
|
103
|
+
version_requirements: *70143888923020
|
104
104
|
- !ruby/object:Gem::Dependency
|
105
105
|
name: guid
|
106
|
-
requirement: &
|
106
|
+
requirement: &70143888919800 !ruby/object:Gem::Requirement
|
107
107
|
none: false
|
108
108
|
requirements:
|
109
109
|
- - ! '>='
|
@@ -111,10 +111,10 @@ dependencies:
|
|
111
111
|
version: '0'
|
112
112
|
type: :runtime
|
113
113
|
prerelease: false
|
114
|
-
version_requirements: *
|
114
|
+
version_requirements: *70143888919800
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: dalli
|
117
|
-
requirement: &
|
117
|
+
requirement: &70143888937040 !ruby/object:Gem::Requirement
|
118
118
|
none: false
|
119
119
|
requirements:
|
120
120
|
- - ~>
|
@@ -122,7 +122,7 @@ dependencies:
|
|
122
122
|
version: '2.6'
|
123
123
|
type: :runtime
|
124
124
|
prerelease: false
|
125
|
-
version_requirements: *
|
125
|
+
version_requirements: *70143888937040
|
126
126
|
description: RDF ruby ORM
|
127
127
|
email:
|
128
128
|
- ric@swirrl.com
|