tripod 0.5.0 → 0.5.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.
@@ -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