tripod 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,35 +16,33 @@ module Tripod::SparqlClient
16
16
  # @return [ RestClient::Response ]
17
17
  def self.query(sparql, accept_header, extra_params={})
18
18
 
19
- begin
20
- if defined?(Rails)
21
- Rails.logger.debug "TRIPOD: About to run query:"
22
- Rails.logger.debug sparql
23
- end
19
+ params = {:query => sparql}.merge(extra_params)
20
+ request_url = Tripod.query_endpoint + '?' + params.to_query
21
+ streaming_opts = {:accept => accept_header, :timeout_seconds => Tripod.timeout_seconds}
22
+ streaming_opts.merge!(:response_limit_bytes => Tripod.response_limit_bytes) if Tripod.response_limit_bytes
24
23
 
25
- params = {:query => sparql}.merge(extra_params)
26
- request_url = Tripod.query_endpoint + '?' + params.to_query
27
- streaming_opts = {:accept => accept_header, :timeout_seconds => Tripod.timeout_seconds}
28
- streaming_opts.merge!(:response_limit_bytes => Tripod.response_limit_bytes) if Tripod.response_limit_bytes
29
-
30
- # Hash.to_query from active support core extensions
31
- stream_data = -> {
32
- Tripod::Streaming.get_data(request_url, streaming_opts)
33
- }
34
-
35
- if Tripod.cache_store # if a cache store is configured
36
- # SHA-2 the key to keep the it within the small limit for many cache stores (e.g. Memcached is 250bytes)
37
- # Note: SHA2's are pretty certain to be unique http://en.wikipedia.org/wiki/SHA-2.
38
- key = 'SPARQL-QUERY-' + Digest::SHA2.hexdigest([extra_params, accept_header, sparql].join(" "))
39
- Tripod.cache_store.fetch(key, &stream_data)
40
- else
41
- stream_data.call()
24
+ # Hash.to_query from active support core extensions
25
+ stream_data = -> {
26
+ if defined?(Rails)
27
+ Rails.logger.debug "TRIPOD: About to run query: #{sparql}"
28
+ Rails.logger.debug "TRIPOD: Straming fron url: #{request_url}"
29
+ Rails.logger.debug "TRIPOD: Streaming opts: #{streaming_opts.inspect}"
42
30
  end
43
31
 
44
- rescue RestClient::BadRequest => e
45
- # just re-raise as a BadSparqlRequest Exception
46
- raise Tripod::Errors::BadSparqlRequest.new(e.http_body, e)
32
+ response = Tripod::Streaming.get_data(request_url, streaming_opts)
33
+ Rails.logger.debug "TRIPOD: response: #{response}" if defined?(Rails)
34
+ response
35
+ }
36
+
37
+ if Tripod.cache_store # if a cache store is configured
38
+ # SHA-2 the key to keep the it within the small limit for many cache stores (e.g. Memcached is 250bytes)
39
+ # Note: SHA2's are pretty certain to be unique http://en.wikipedia.org/wiki/SHA-2.
40
+ key = 'SPARQL-QUERY-' + Digest::SHA2.hexdigest([extra_params, accept_header, sparql].join(" "))
41
+ Tripod.cache_store.fetch(key, &stream_data)
42
+ else
43
+ stream_data.call()
47
44
  end
45
+
48
46
  end
49
47
 
50
48
  # Runs a SELECT +query+ against the endpoint. Returns a Hash of the results.
@@ -23,6 +23,11 @@ module Tripod
23
23
  response_string = ""
24
24
 
25
25
  http.request_get(uri.request_uri, 'Accept' => accept) do |res|
26
+
27
+ Rails.logger.debug "TRIPOD: response code: #{res.code}" if defined?(Rails)
28
+
29
+ raise Tripod::Errors::BadSparqlRequest.new(res.body) if res.code.to_s != "200"
30
+
26
31
  res.read_body do |seg|
27
32
  total_bytes += seg.size
28
33
  response_string += seg.to_s
@@ -1,3 +1,3 @@
1
1
  module Tripod
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.1"
3
3
  end
@@ -2,11 +2,23 @@ require "spec_helper"
2
2
 
3
3
  describe Tripod::SparqlClient do
4
4
  describe Data do
5
+
5
6
  let(:data) { 'some-data-goes-here' }
6
7
 
7
8
  describe "Query#query" do
9
+
10
+ let(:query) { "SELECT * WHERE {?s ?p ?o}" }
11
+ let(:bad_query) { "SELECT * WHERE ?s ?p ?o}" }
12
+
13
+ before do
14
+ p = Person.new('http://example.com/id/garry')
15
+ p.name = "garry"
16
+ p.save!
17
+ p
18
+ end
19
+
8
20
  it "should use Tripod::Streaming to get the data" do
9
- query = "SELECT * WHERE {?s ?p ?o}"
21
+
10
22
  Tripod::Streaming.should_receive(:get_data).with(
11
23
  Tripod.query_endpoint + "?query=#{CGI.escape(query)}",
12
24
  {
@@ -17,6 +29,18 @@ describe Tripod::SparqlClient do
17
29
  ).and_return("some data")
18
30
  Tripod::SparqlClient::Query.query(query, "application/sparql-results+json")
19
31
  end
32
+
33
+ it "should execute the query and return the format requested" do
34
+ JSON.parse(Tripod::SparqlClient::Query.query(query, "application/sparql-results+json"))["results"]["bindings"].length > 0
35
+ end
36
+
37
+ context "with a bad query" do
38
+ it "should raise a bad request error" do
39
+ lambda {
40
+ Tripod::SparqlClient::Query.query(bad_query, "application/sparql-results+json")
41
+ }.should raise_error
42
+ end
43
+ end
20
44
  end
21
45
 
22
46
  describe "Data#append" do
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: 0.5.0
4
+ version: 0.5.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -15,7 +15,7 @@ date: 2013-03-26 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rest-client
18
- requirement: &70308451617140 !ruby/object:Gem::Requirement
18
+ requirement: &70266811885900 !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: *70308451617140
26
+ version_requirements: *70266811885900
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activemodel
29
- requirement: &70308451616420 !ruby/object:Gem::Requirement
29
+ requirement: &70266811901040 !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: *70308451616420
37
+ version_requirements: *70266811901040
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: equivalent-xml
40
- requirement: &70308451632020 !ruby/object:Gem::Requirement
40
+ requirement: &70266811900040 !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: *70308451632020
48
+ version_requirements: *70266811900040
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: rdf
51
- requirement: &70308451631020 !ruby/object:Gem::Requirement
51
+ requirement: &70266811898540 !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: *70308451631020
59
+ version_requirements: *70266811898540
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: rdf-rdfxml
62
- requirement: &70308451627060 !ruby/object:Gem::Requirement
62
+ requirement: &70266811898000 !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: *70308451627060
70
+ version_requirements: *70266811898000
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: rdf-n3
73
- requirement: &70308451625140 !ruby/object:Gem::Requirement
73
+ requirement: &70266811897200 !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: *70308451625140
81
+ version_requirements: *70266811897200
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: rdf-json
84
- requirement: &70308451624460 !ruby/object:Gem::Requirement
84
+ requirement: &70266811895920 !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: *70308451624460
92
+ version_requirements: *70266811895920
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: json-ld
95
- requirement: &70308451639760 !ruby/object:Gem::Requirement
95
+ requirement: &70266811894100 !ruby/object:Gem::Requirement
96
96
  none: false
97
97
  requirements:
98
98
  - - ! '>='
@@ -100,10 +100,10 @@ dependencies:
100
100
  version: '0'
101
101
  type: :runtime
102
102
  prerelease: false
103
- version_requirements: *70308451639760
103
+ version_requirements: *70266811894100
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: guid
106
- requirement: &70308451637040 !ruby/object:Gem::Requirement
106
+ requirement: &70266811908240 !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: *70308451637040
114
+ version_requirements: *70266811908240
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: dalli
117
- requirement: &70308451634220 !ruby/object:Gem::Requirement
117
+ requirement: &70266811906460 !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: *70308451634220
125
+ version_requirements: *70266811906460
126
126
  description: RDF ruby ORM
127
127
  email:
128
128
  - ric@swirrl.com