thebigdb 1.2.0 → 1.2.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/Gemfile.lock +1 -1
- data/lib/thebigdb/request.rb +8 -4
- data/lib/thebigdb/resources/statement.rb +5 -5
- data/lib/thebigdb/version.rb +1 -1
- data/lib/thebigdb.rb +1 -0
- data/spec/request_spec.rb +58 -1
- data/spec/thebigdb_spec.rb +12 -0
- metadata +1 -1
data/Gemfile.lock
CHANGED
data/lib/thebigdb/request.rb
CHANGED
@@ -22,6 +22,10 @@ module TheBigDB
|
|
22
22
|
def prepare(method, request_uri, params = {})
|
23
23
|
method = method.downcase.to_s
|
24
24
|
|
25
|
+
if TheBigDB.api_key.is_a?(String) and !TheBigDB.api_key.empty?
|
26
|
+
params.merge!("api_key" => TheBigDB.api_key)
|
27
|
+
end
|
28
|
+
|
25
29
|
# we add the API version to the URL, with a trailing slash and the rest of the request
|
26
30
|
request_uri = "/v#{TheBigDB.api_version}" + (request_uri.start_with?("/") ? request_uri : "/#{request_uri}")
|
27
31
|
|
@@ -38,10 +42,10 @@ module TheBigDB
|
|
38
42
|
@http_request["user-agent"] = "TheBigDB RubyWrapper/#{TheBigDB::VERSION::STRING}"
|
39
43
|
|
40
44
|
client_user_agent = {
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
+
"publisher" => "thebigdb",
|
46
|
+
"version" => TheBigDB::VERSION::STRING,
|
47
|
+
"language" => "ruby",
|
48
|
+
"language_version" => "#{RUBY_VERSION} p#{RUBY_PATCHLEVEL} (#{RUBY_RELEASE_DATE})",
|
45
49
|
}
|
46
50
|
|
47
51
|
@http_request["X-TheBigDB-Client-User-Agent"] = JSON(client_user_agent)
|
@@ -43,22 +43,22 @@ module TheBigDB
|
|
43
43
|
|
44
44
|
# Shortcuts to actions
|
45
45
|
def self.search(*nodes)
|
46
|
-
StatementRequest.new("search").with(nodes
|
46
|
+
StatementRequest.new("search").with("nodes" => nodes)
|
47
47
|
end
|
48
48
|
|
49
49
|
def self.create(*nodes)
|
50
|
-
StatementRequest.new("create").with(nodes
|
50
|
+
StatementRequest.new("create").with("nodes" => nodes)
|
51
51
|
end
|
52
52
|
|
53
53
|
def self.show(id = "")
|
54
|
-
StatementRequest.new("show").with(id
|
54
|
+
StatementRequest.new("show").with("id" => id)
|
55
55
|
end
|
56
56
|
|
57
57
|
def self.upvote(id = "")
|
58
|
-
StatementRequest.new("upvote").with(id
|
58
|
+
StatementRequest.new("upvote").with("id" => id)
|
59
59
|
end
|
60
60
|
|
61
61
|
def self.downvote(id = "")
|
62
|
-
StatementRequest.new("downvote").with(id
|
62
|
+
StatementRequest.new("downvote").with("id" => id)
|
63
63
|
end
|
64
64
|
end
|
data/lib/thebigdb/version.rb
CHANGED
data/lib/thebigdb.rb
CHANGED
data/spec/request_spec.rb
CHANGED
@@ -45,7 +45,6 @@ describe "preparing" do
|
|
45
45
|
end
|
46
46
|
|
47
47
|
describe "executing" do
|
48
|
-
|
49
48
|
context "requests" do
|
50
49
|
before do
|
51
50
|
stub_request(:get, /#{TheBigDB.api_host}/).to_return(:body => '{"server_says": "hello world"}')
|
@@ -120,6 +119,35 @@ describe "executing" do
|
|
120
119
|
end
|
121
120
|
end
|
122
121
|
|
122
|
+
context "with basic params and API key" do
|
123
|
+
before do
|
124
|
+
TheBigDB.api_key = "user-api-key"
|
125
|
+
stub_request(:get, /#{TheBigDB.api_host}/).to_return(:body => '{"server_says": "hello world"}')
|
126
|
+
|
127
|
+
@request = TheBigDB::Request.new
|
128
|
+
@request.prepare(:get, "/", :foo => "bar")
|
129
|
+
@request.execute
|
130
|
+
end
|
131
|
+
|
132
|
+
it "sets the correct data_sent instance variable" do
|
133
|
+
@request.data_sent.should == {
|
134
|
+
"headers" => Hash[@request.http_request.to_hash.map{|k,v| [k, v.join] }],
|
135
|
+
"host" => TheBigDB.api_host,
|
136
|
+
"port" => TheBigDB.api_port,
|
137
|
+
"path" => "/v#{TheBigDB.api_version}/",
|
138
|
+
"method" => "GET",
|
139
|
+
"params" => {"foo" => "bar", "api_key" => "user-api-key"}
|
140
|
+
}
|
141
|
+
end
|
142
|
+
|
143
|
+
it "sets the correct data_received instance variable" do
|
144
|
+
@request.data_received.should include({
|
145
|
+
"headers" => Hash[@request.http_response.to_hash.map{|k,v| [k, v.join] }],
|
146
|
+
"content" => {"server_says" => "hello world"}
|
147
|
+
})
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
123
151
|
context "with arrays in params" do
|
124
152
|
before do
|
125
153
|
stub_request(:get, /#{TheBigDB.api_host}/).to_return(:body => '{"server_says": "hello world"}')
|
@@ -206,6 +234,35 @@ describe "executing" do
|
|
206
234
|
end
|
207
235
|
end
|
208
236
|
|
237
|
+
context "with basic params and API key" do
|
238
|
+
before do
|
239
|
+
TheBigDB.api_key = "user-api-key"
|
240
|
+
stub_request(:post, /#{TheBigDB.api_host}/).to_return(:body => '{"server_says": "hello world"}')
|
241
|
+
|
242
|
+
@request = TheBigDB::Request.new
|
243
|
+
@request.prepare(:post, "/", :foo => "bar")
|
244
|
+
@request.execute
|
245
|
+
end
|
246
|
+
|
247
|
+
it "sets the correct data_sent instance variable" do
|
248
|
+
@request.data_sent.should == {
|
249
|
+
"headers" => Hash[@request.http_request.to_hash.map{|k,v| [k, v.join] }],
|
250
|
+
"host" => TheBigDB.api_host,
|
251
|
+
"port" => TheBigDB.api_port,
|
252
|
+
"path" => "/v#{TheBigDB.api_version}/",
|
253
|
+
"method" => "POST",
|
254
|
+
"params" => {"foo" => "bar", "api_key" => "user-api-key"}
|
255
|
+
}
|
256
|
+
end
|
257
|
+
|
258
|
+
it "sets the correct data_received instance variable" do
|
259
|
+
@request.data_received.should include({
|
260
|
+
"headers" => Hash[@request.http_response.to_hash.map{|k,v| [k, v.join] }],
|
261
|
+
"content" => {"server_says" => "hello world"}
|
262
|
+
})
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
209
266
|
context "with array arguments" do
|
210
267
|
before do
|
211
268
|
stub_request(:post, /#{TheBigDB.api_host}/).to_return(:body => '{"server_says": "hello world"}')
|
data/spec/thebigdb_spec.rb
CHANGED
@@ -8,10 +8,22 @@ describe "TheBigDB module" do
|
|
8
8
|
TheBigDB.api_host = "foobar"
|
9
9
|
TheBigDB.api_port = 1337
|
10
10
|
TheBigDB.api_version = "1337"
|
11
|
+
TheBigDB.api_key = "your-private-api-key"
|
12
|
+
TheBigDB.raise_on_api_status_error = true
|
13
|
+
TheBigDB.before_request_execution = (before_proc = ->(request){ nil })
|
14
|
+
TheBigDB.after_request_execution = (after_proc = ->(request){ nil })
|
11
15
|
|
12
16
|
TheBigDB.api_host.should == "foobar"
|
13
17
|
TheBigDB.api_port.should == 1337
|
14
18
|
TheBigDB.api_version.should == "1337"
|
19
|
+
TheBigDB.api_key.should == "your-private-api-key"
|
20
|
+
TheBigDB.raise_on_api_status_error.should == true
|
21
|
+
TheBigDB.before_request_execution.should == before_proc
|
22
|
+
TheBigDB.after_request_execution.should == after_proc
|
23
|
+
|
24
|
+
# use_ssl modifies the port
|
25
|
+
TheBigDB.use_ssl = true
|
26
|
+
TheBigDB.use_ssl.should == true
|
15
27
|
end
|
16
28
|
|
17
29
|
it "has resettable default values" do
|