thebigdb 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|