rapidash 0.0.2 → 0.0.3
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.
- checksums.yaml +7 -0
- data/lib/rapidash/base.rb +17 -0
- data/lib/rapidash/client.rb +8 -0
- data/lib/rapidash/http_client.rb +2 -1
- data/lib/rapidash/oauth_client.rb +2 -1
- data/lib/rapidash/response.rb +1 -0
- data/lib/rapidash/version.rb +1 -1
- data/spec/rapidash/base_spec.rb +40 -1
- data/spec/rapidash/client_spec.rb +17 -0
- data/spec/rapidash/http_client_spec.rb +6 -0
- data/spec/rapidash/oauth_client_spec.rb +7 -0
- data/spec/rapidash/response_spec.rb +13 -1
- metadata +11 -33
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1ce1818f4254102ef82a678267950073b326c929
|
4
|
+
data.tar.gz: 3d34ef35a0d0880eb8cd7b271ecfb334626082f3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1bb35f3c4f249141ae9bfe3568d6378cb164e41cfecce8bdc1c6a67338a0938bd46e7c096fc72a0f848bdf3eca4f8dcf9c5034232f45f9304ce970c5ac5b3543
|
7
|
+
data.tar.gz: 23be2377818a96d182531e424aff5cad7a7b2df8248a0d7ae4a404a6bb59fd31a97202eb6bb9ea8f1c853238b980f39ab51d33ef5664f83047294d58fd150252
|
data/lib/rapidash/base.rb
CHANGED
@@ -19,6 +19,23 @@ module Rapidash
|
|
19
19
|
@url += "/#{@id}" if @id
|
20
20
|
end
|
21
21
|
|
22
|
+
def create!(params)
|
23
|
+
self.options[:method] = :post
|
24
|
+
self.options[:body] = params.to_json
|
25
|
+
call!
|
26
|
+
end
|
27
|
+
|
28
|
+
def update!(params)
|
29
|
+
self.options[:method] = :put
|
30
|
+
self.options[:body] = params.to_json
|
31
|
+
call!
|
32
|
+
end
|
33
|
+
|
34
|
+
def delete!
|
35
|
+
self.options[:method] = :delete
|
36
|
+
call!
|
37
|
+
end
|
38
|
+
|
22
39
|
|
23
40
|
def call!
|
24
41
|
self.options ||= {}
|
data/lib/rapidash/client.rb
CHANGED
data/lib/rapidash/http_client.rb
CHANGED
@@ -3,7 +3,7 @@ require 'faraday'
|
|
3
3
|
module Rapidash
|
4
4
|
module HTTPClient
|
5
5
|
|
6
|
-
attr_accessor :site
|
6
|
+
attr_accessor :site, :extension
|
7
7
|
attr_writer :connection
|
8
8
|
|
9
9
|
def site=(value)
|
@@ -16,6 +16,7 @@ module Rapidash
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def request(verb, url, options = {})
|
19
|
+
url = "#{url}.#{extension}" if extension
|
19
20
|
url = connection.build_url(url, options[:params]).to_s
|
20
21
|
response = connection.run_request(verb, url, options[:body], options[:header])
|
21
22
|
|
@@ -4,7 +4,7 @@ require 'hashie'
|
|
4
4
|
module Rapidash
|
5
5
|
module OAuthClient
|
6
6
|
|
7
|
-
attr_accessor :secret, :uid, :access_token, :site
|
7
|
+
attr_accessor :secret, :uid, :access_token, :site, :extension
|
8
8
|
|
9
9
|
def initialize(options)
|
10
10
|
[:uid, :secret, :site].each do |key|
|
@@ -18,6 +18,7 @@ module Rapidash
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def request(verb, url, options = {})
|
21
|
+
url = "#{url}.#{extension}" if extension
|
21
22
|
response = oauth_access_token.send(verb.to_sym, "#{site}/#{url}", options)
|
22
23
|
body = JSON.parse(response.body)
|
23
24
|
if body.kind_of?(Hash)
|
data/lib/rapidash/response.rb
CHANGED
data/lib/rapidash/version.rb
CHANGED
data/spec/rapidash/base_spec.rb
CHANGED
@@ -30,7 +30,46 @@ describe Rapidash::Base do
|
|
30
30
|
|
31
31
|
let(:client) { mock }
|
32
32
|
let(:headers) { {"content-type" => "application/json"} }
|
33
|
-
let
|
33
|
+
let(:subject) { BaseTester.new(client) }
|
34
|
+
|
35
|
+
let(:post) {
|
36
|
+
{
|
37
|
+
:post => {
|
38
|
+
:title => "A test post"
|
39
|
+
}
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
describe ".create!" do
|
44
|
+
it "should set the method to post and set the body" do
|
45
|
+
subject.should_receive(:call!)
|
46
|
+
subject.create!(post)
|
47
|
+
subject.instance_variable_get(:@options).should eql({
|
48
|
+
:method => :post,
|
49
|
+
:body => post.to_json
|
50
|
+
})
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe ".update!" do
|
55
|
+
it "should set the method to put and set the body" do
|
56
|
+
subject.should_receive(:call!)
|
57
|
+
subject.update!(post)
|
58
|
+
subject.instance_variable_get(:@options).should eql({
|
59
|
+
:method => :put,
|
60
|
+
:body => post.to_json
|
61
|
+
})
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe ".delete!" do
|
66
|
+
it "should set the method to delete" do
|
67
|
+
subject.should_receive(:call!)
|
68
|
+
subject.delete!
|
69
|
+
subject.instance_variable_get(:@options).should eql({:method => :delete})
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
34
73
|
|
35
74
|
describe ".call!" do
|
36
75
|
it "should call get on the client" do
|
@@ -28,4 +28,21 @@ describe Rapidash::Client do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
+
describe ".put" do
|
32
|
+
it "should call request" do
|
33
|
+
subject.should_receive(:request).with(:put, "foo", {})
|
34
|
+
subject.put("foo")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
describe ".delete" do
|
40
|
+
it "should call request" do
|
41
|
+
subject.should_receive(:request).with(:delete, "foo", {})
|
42
|
+
subject.delete("foo")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
|
31
48
|
end
|
@@ -40,6 +40,12 @@ describe Rapidash::HTTPClient do
|
|
40
40
|
Rapidash::Response.should_receive(:new).and_return("response")
|
41
41
|
end
|
42
42
|
|
43
|
+
it "should add an extension if one is set" do
|
44
|
+
subject.extension = :json
|
45
|
+
subject.connection.should_receive(:run_request).with(:get, "http://example.com/foo.json", nil, nil).and_return(valid_response)
|
46
|
+
subject.request(:get, "foo")
|
47
|
+
end
|
48
|
+
|
43
49
|
it "should return a response object" do
|
44
50
|
subject.connection.should_receive(:run_request).with(:get, "http://example.com/foo", nil, nil).and_return(valid_response)
|
45
51
|
response = subject.request(:get, "foo")
|
@@ -57,9 +57,16 @@ describe Rapidash::OAuthClient do
|
|
57
57
|
let(:response) { OpenStruct.new(:body => body) }
|
58
58
|
|
59
59
|
before(:each) do
|
60
|
+
subject.extension = :json
|
60
61
|
subject.stub(:oauth_access_token).and_return(request)
|
61
62
|
request.stub(:get).and_return(response)
|
62
63
|
end
|
64
|
+
|
65
|
+
it "should add an extension to the url if one is set" do
|
66
|
+
request.should_receive(:get).with("http://example.com/me.json", anything)
|
67
|
+
subject.request(:get, "me")
|
68
|
+
end
|
69
|
+
|
63
70
|
it "should return a Hashie::Mash" do
|
64
71
|
subject.request(:get, "me").class.should eql(Hashie::Mash)
|
65
72
|
end
|
@@ -27,7 +27,14 @@ def invalid_response
|
|
27
27
|
OpenStruct.new({
|
28
28
|
:headers => {
|
29
29
|
"content-type" => "application/xml"
|
30
|
-
}
|
30
|
+
},
|
31
|
+
:body => "<xml>something</xml>"
|
32
|
+
})
|
33
|
+
end
|
34
|
+
|
35
|
+
def nil_response
|
36
|
+
OpenStruct.new({
|
37
|
+
:body => nil
|
31
38
|
})
|
32
39
|
end
|
33
40
|
|
@@ -45,6 +52,11 @@ describe Rapidash::Response do
|
|
45
52
|
response[1].baz.should eql("bra")
|
46
53
|
end
|
47
54
|
|
55
|
+
it "should return nil if the response has no body" do
|
56
|
+
response = Rapidash::Response.new(nil_response)
|
57
|
+
response.should eql(nil)
|
58
|
+
end
|
59
|
+
|
48
60
|
|
49
61
|
it "should raise an error on a non-json response" do
|
50
62
|
expect {
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rapidash
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Gary 'Gazler' Rennie
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
11
|
+
date: 2013-03-09 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,23 +27,20 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,23 +55,20 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: json
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: faraday
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
73
|
- - ~>
|
84
74
|
- !ruby/object:Gem::Version
|
@@ -86,7 +76,6 @@ dependencies:
|
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
80
|
- - ~>
|
92
81
|
- !ruby/object:Gem::Version
|
@@ -94,7 +83,6 @@ dependencies:
|
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: oauth2
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
87
|
- - ~>
|
100
88
|
- !ruby/object:Gem::Version
|
@@ -102,7 +90,6 @@ dependencies:
|
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
94
|
- - ~>
|
108
95
|
- !ruby/object:Gem::Version
|
@@ -110,7 +97,6 @@ dependencies:
|
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: hashie
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
101
|
- - ~>
|
116
102
|
- !ruby/object:Gem::Version
|
@@ -118,7 +104,6 @@ dependencies:
|
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
108
|
- - ~>
|
124
109
|
- !ruby/object:Gem::Version
|
@@ -164,33 +149,26 @@ files:
|
|
164
149
|
homepage: ''
|
165
150
|
licenses:
|
166
151
|
- MIT
|
152
|
+
metadata: {}
|
167
153
|
post_install_message:
|
168
154
|
rdoc_options: []
|
169
155
|
require_paths:
|
170
156
|
- lib
|
171
157
|
required_ruby_version: !ruby/object:Gem::Requirement
|
172
|
-
none: false
|
173
158
|
requirements:
|
174
|
-
- -
|
159
|
+
- - '>='
|
175
160
|
- !ruby/object:Gem::Version
|
176
161
|
version: '0'
|
177
|
-
segments:
|
178
|
-
- 0
|
179
|
-
hash: -4317292123252369380
|
180
162
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
|
-
none: false
|
182
163
|
requirements:
|
183
|
-
- -
|
164
|
+
- - '>='
|
184
165
|
- !ruby/object:Gem::Version
|
185
166
|
version: '0'
|
186
|
-
segments:
|
187
|
-
- 0
|
188
|
-
hash: -4317292123252369380
|
189
167
|
requirements: []
|
190
168
|
rubyforge_project:
|
191
|
-
rubygems_version:
|
169
|
+
rubygems_version: 2.0.2
|
192
170
|
signing_key:
|
193
|
-
specification_version:
|
171
|
+
specification_version: 4
|
194
172
|
summary: An opinionated core for creating clients for RESTful APIs quickly
|
195
173
|
test_files:
|
196
174
|
- spec/rapidash/base_spec.rb
|