rest-core 0.3.0.pre.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.md +3 -1
- data/Gemfile +19 -2
- data/Rakefile +0 -2
- data/example/rails2/Gemfile +9 -1
- data/example/rails3/Gemfile +8 -1
- data/lib/rest-core/client.rb +2 -4
- data/lib/rest-core/client/facebook.rb +2 -2
- data/lib/rest-core/middleware.rb +2 -2
- data/lib/rest-core/middleware/defaults.rb +6 -0
- data/lib/rest-core/middleware/oauth1_header.rb +6 -6
- data/lib/rest-core/test.rb +4 -0
- data/lib/rest-core/version.rb +1 -1
- data/rest-core.gemspec +3 -30
- data/test/client/facebook/test_api.rb +5 -5
- data/test/client/facebook/test_cache.rb +11 -11
- data/test/client/facebook/test_default.rb +1 -1
- data/test/client/facebook/test_error.rb +4 -4
- data/test/client/facebook/test_handler.rb +5 -5
- data/test/client/facebook/test_load_config.rb +4 -4
- data/test/client/facebook/test_misc.rb +12 -12
- data/test/client/facebook/test_oauth.rb +4 -4
- data/test/client/facebook/test_old.rb +14 -14
- data/test/client/facebook/test_page.rb +18 -18
- data/test/client/facebook/test_parse.rb +29 -29
- data/test/client/facebook/test_serialize.rb +6 -5
- data/test/test_oauth1_header.rb +3 -3
- metadata +7 -106
data/CHANGES.md
CHANGED
@@ -1,15 +1,17 @@
|
|
1
1
|
# rest-core CHANGES
|
2
2
|
|
3
|
-
## rest-core 0.3.0 --
|
3
|
+
## rest-core 0.3.0 -- 2011-09-03
|
4
4
|
|
5
5
|
* [facebook] RestGraph is Facebook now.
|
6
6
|
* [facebook] Facebook::RailsUtil is imported from [rest-graph][]
|
7
7
|
* [facebook] Use json_decode instead of auto_decode as rest-graph
|
8
|
+
* [facebook] No longer calls URI.encode on Facebook broken URL
|
8
9
|
* [twitter] Fixed opts in Twitter#tweet
|
9
10
|
* [twitter] Introduced Twitter::Error instead of RuntimeError!
|
10
11
|
* [twitter] By default log nothing
|
11
12
|
* [rest-core] We no longer explicitly depends on Rack
|
12
13
|
* [rest-core] Added a shorthand RC to access RestCore
|
14
|
+
* [rest-core] Eliminated a lot of warnings
|
13
15
|
* [cache] All clients no longer have default hash cache
|
14
16
|
* [oauth2_query] Now we always use the term "access_token"
|
15
17
|
* [config] Now Config#load and Config#load_for_rails take namespace
|
data/Gemfile
CHANGED
@@ -3,7 +3,24 @@ source 'http://rubygems.org'
|
|
3
3
|
|
4
4
|
gemspec
|
5
5
|
|
6
|
+
gem 'rake'
|
7
|
+
gem 'bacon'
|
8
|
+
gem 'rr'
|
9
|
+
gem 'webmock'
|
10
|
+
|
11
|
+
gem 'json'
|
12
|
+
gem 'json_pure'
|
13
|
+
|
14
|
+
gem 'rack'
|
15
|
+
gem 'ruby-hmac'
|
16
|
+
|
17
|
+
platforms(:ruby) do
|
18
|
+
gem 'yajl-ruby'
|
19
|
+
end
|
20
|
+
|
21
|
+
platforms(:jruby) do
|
22
|
+
gem 'jruby-openssl'
|
23
|
+
end
|
24
|
+
|
6
25
|
gem 'rails', '2.3.14' if ENV['RESTCORE'] == 'rails2'
|
7
26
|
gem 'rails', '3.0.9' if ENV['RESTCORE'] == 'rails3'
|
8
|
-
|
9
|
-
gem 'jruby-openssl', :platforms => [:jruby]
|
data/Rakefile
CHANGED
@@ -15,8 +15,6 @@ task 'gem:spec' do
|
|
15
15
|
# s.executables = [s.name]
|
16
16
|
|
17
17
|
%w[rest-client].each{ |g| s.add_runtime_dependency(g) }
|
18
|
-
%w[yajl-ruby rack json json_pure ruby-hmac
|
19
|
-
webmock bacon rr rake].each{ |g| s.add_development_dependency(g) }
|
20
18
|
|
21
19
|
s.authors = ['Cardinal Blue', 'Lin Jen-Shin (godfat)']
|
22
20
|
s.email = ['dev (XD) cardinalblue.com']
|
data/example/rails2/Gemfile
CHANGED
@@ -4,10 +4,18 @@ source 'http://rubygems.org'
|
|
4
4
|
gem 'rails', '2.3.14'
|
5
5
|
|
6
6
|
gem 'rest-client' # for rest-core
|
7
|
-
gem 'yajl-ruby' # for rest-core
|
8
7
|
gem 'rest-core', :path => '../../'
|
9
8
|
|
10
9
|
group 'test' do
|
11
10
|
gem 'rr'
|
12
11
|
gem 'webmock'
|
13
12
|
end
|
13
|
+
|
14
|
+
platforms(:ruby) do
|
15
|
+
gem 'yajl-ruby'
|
16
|
+
end
|
17
|
+
|
18
|
+
platforms(:jruby) do
|
19
|
+
gem 'json'
|
20
|
+
gem 'jruby-openssl'
|
21
|
+
end
|
data/example/rails3/Gemfile
CHANGED
@@ -4,10 +4,17 @@ source 'http://rubygems.org'
|
|
4
4
|
gem 'rails', '3.0.9'
|
5
5
|
|
6
6
|
gem 'rest-client' # for rest-core
|
7
|
-
gem 'yajl-ruby' # for rest-core
|
8
7
|
gem 'rest-core', :path => '../../'
|
9
8
|
|
10
9
|
group 'test' do
|
11
10
|
gem 'rr'
|
12
11
|
gem 'webmock'
|
13
12
|
end
|
13
|
+
|
14
|
+
platforms(:ruby) do
|
15
|
+
gem 'yajl-ruby'
|
16
|
+
end
|
17
|
+
|
18
|
+
platforms(:jruby) do
|
19
|
+
gem 'jruby-openssl'
|
20
|
+
end
|
data/lib/rest-core/client.rb
CHANGED
@@ -33,8 +33,6 @@ module RestCore::Client
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
private :default_#{name}
|
36
|
-
|
37
|
-
self
|
38
36
|
RUBY
|
39
37
|
}
|
40
38
|
# if RUBY_VERSION < '1.9.2'
|
@@ -42,10 +40,10 @@ module RestCore::Client
|
|
42
40
|
def members
|
43
41
|
super.map(&:to_sym)
|
44
42
|
end
|
45
|
-
self
|
46
43
|
RUBY
|
47
44
|
# end
|
48
|
-
accessor = Module.new
|
45
|
+
accessor = Module.new
|
46
|
+
accessor.module_eval(src.join("\n"), __FILE__, __LINE__)
|
49
47
|
mod.const_set('Accessor', accessor)
|
50
48
|
mod.send(:include, accessor)
|
51
49
|
end
|
@@ -91,7 +91,7 @@ module RestCore::Facebook::Client
|
|
91
91
|
|
92
92
|
def next_page hash, opts={}, &cb
|
93
93
|
if hash['paging'].kind_of?(Hash) && hash['paging']['next']
|
94
|
-
request(opts, [:get,
|
94
|
+
request(opts, [:get, hash['paging']['next']], &cb)
|
95
95
|
else
|
96
96
|
yield(nil) if block_given?
|
97
97
|
end
|
@@ -99,7 +99,7 @@ module RestCore::Facebook::Client
|
|
99
99
|
|
100
100
|
def prev_page hash, opts={}, &cb
|
101
101
|
if hash['paging'].kind_of?(Hash) && hash['paging']['previous']
|
102
|
-
request(opts, [:get,
|
102
|
+
request(opts, [:get, hash['paging']['previous']], &cb)
|
103
103
|
else
|
104
104
|
yield(nil) if block_given?
|
105
105
|
end
|
data/lib/rest-core/middleware.rb
CHANGED
@@ -27,9 +27,9 @@ module RestCore::Middleware
|
|
27
27
|
def initialize #{para_list}
|
28
28
|
#{ivar_list} = #{args_list}
|
29
29
|
end
|
30
|
-
self
|
31
30
|
RUBY
|
32
|
-
accessor = Module.new
|
31
|
+
accessor = Module.new
|
32
|
+
accessor.module_eval(src.join("\n"), __FILE__, __LINE__)
|
33
33
|
mod.const_set(:Accessor, accessor)
|
34
34
|
mod.send(:include, accessor)
|
35
35
|
end
|
@@ -35,6 +35,12 @@ class RestCore::Defaults
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def respond_to? msg
|
38
|
+
# since psych would call respond_to? before setting up
|
39
|
+
# instance variables when restoring ruby objects, we might
|
40
|
+
# be accessing undefined ivars in that case even all ivars are
|
41
|
+
# defined in initialize. we can't avoid this because we can't
|
42
|
+
# use singleton_class (otherwise we can't serialize this)
|
43
|
+
return super unless instance_variable_defined?(:@defaults)
|
38
44
|
if (d = defaults({})) && d.key?(msg)
|
39
45
|
true
|
40
46
|
else
|
@@ -2,7 +2,7 @@
|
|
2
2
|
require 'rest-core/middleware'
|
3
3
|
require 'rest-core/util/hmac'
|
4
4
|
|
5
|
-
require '
|
5
|
+
require 'cgi'
|
6
6
|
require 'openssl'
|
7
7
|
|
8
8
|
class RestCore::Oauth1Header
|
@@ -44,7 +44,7 @@ class RestCore::Oauth1Header
|
|
44
44
|
|
45
45
|
def attach_signature env, oauth_params
|
46
46
|
params = reject_blank(oauth_params)
|
47
|
-
params.merge('oauth_signature' =>
|
47
|
+
params.merge('oauth_signature' => escape(signature(env, params)))
|
48
48
|
end
|
49
49
|
|
50
50
|
def signature env, params
|
@@ -67,9 +67,9 @@ class RestCore::Oauth1Header
|
|
67
67
|
query = reject_blank(env[REQUEST_QUERY] || {})
|
68
68
|
params = reject_blank(oauth_params.merge(query.merge(payload))).
|
69
69
|
to_a.sort.map{ |(k, v)|
|
70
|
-
"#{
|
70
|
+
"#{escape(k.to_s)}=#{escape(v.to_s)}"}.join('&')
|
71
71
|
|
72
|
-
"#{method}&#{
|
72
|
+
"#{method}&#{escape(base_uri)}&#{escape(params)}"
|
73
73
|
end
|
74
74
|
|
75
75
|
def nonce
|
@@ -89,7 +89,7 @@ class RestCore::Oauth1Header
|
|
89
89
|
v.strip.empty? == true) }
|
90
90
|
end
|
91
91
|
|
92
|
-
def
|
93
|
-
|
92
|
+
def escape string
|
93
|
+
CGI.escape(string).gsub('+', '%20')
|
94
94
|
end
|
95
95
|
end
|
data/lib/rest-core/test.rb
CHANGED
data/lib/rest-core/version.rb
CHANGED
data/rest-core.gemspec
CHANGED
@@ -2,13 +2,13 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "rest-core"
|
5
|
-
s.version = "0.3.0
|
5
|
+
s.version = "0.3.0"
|
6
6
|
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new("
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = [
|
9
9
|
"Cardinal Blue",
|
10
10
|
"Lin Jen-Shin (godfat)"]
|
11
|
-
s.date = "2011-09-
|
11
|
+
s.date = "2011-09-03"
|
12
12
|
s.description = "A modular Ruby REST client collection/infrastructure.\n\nIn this era of web services and mashups, we have seen a blooming of REST\nAPIs. One might wonder, how do we use these APIs easily and elegantly?\nSince REST is very simple compared to SOAP, it is not hard to build a\ndedicated client ourselves.\n\nWe have developed [rest-core][] with composable middlewares to build a\nREST client, based on the effort from [rest-graph][]. In the cases of\ncommon APIs such as Facebook, Github, and Twitter, developers can simply\nuse the built-in dedicated clients provided by rest-core, or do it yourself\nfor any other REST APIs.\n\n[rest-core]: http://github.com/cardinalblue/rest-core\n[rest-graph]: http://github.com/cardinalblue/rest-graph"
|
13
13
|
s.email = ["dev (XD) cardinalblue.com"]
|
14
14
|
s.files = [
|
@@ -145,37 +145,10 @@ Gem::Specification.new do |s|
|
|
145
145
|
|
146
146
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
147
147
|
s.add_runtime_dependency(%q<rest-client>, [">= 0"])
|
148
|
-
s.add_development_dependency(%q<yajl-ruby>, [">= 0"])
|
149
|
-
s.add_development_dependency(%q<rack>, [">= 0"])
|
150
|
-
s.add_development_dependency(%q<json>, [">= 0"])
|
151
|
-
s.add_development_dependency(%q<json_pure>, [">= 0"])
|
152
|
-
s.add_development_dependency(%q<ruby-hmac>, [">= 0"])
|
153
|
-
s.add_development_dependency(%q<webmock>, [">= 0"])
|
154
|
-
s.add_development_dependency(%q<bacon>, [">= 0"])
|
155
|
-
s.add_development_dependency(%q<rr>, [">= 0"])
|
156
|
-
s.add_development_dependency(%q<rake>, [">= 0"])
|
157
148
|
else
|
158
149
|
s.add_dependency(%q<rest-client>, [">= 0"])
|
159
|
-
s.add_dependency(%q<yajl-ruby>, [">= 0"])
|
160
|
-
s.add_dependency(%q<rack>, [">= 0"])
|
161
|
-
s.add_dependency(%q<json>, [">= 0"])
|
162
|
-
s.add_dependency(%q<json_pure>, [">= 0"])
|
163
|
-
s.add_dependency(%q<ruby-hmac>, [">= 0"])
|
164
|
-
s.add_dependency(%q<webmock>, [">= 0"])
|
165
|
-
s.add_dependency(%q<bacon>, [">= 0"])
|
166
|
-
s.add_dependency(%q<rr>, [">= 0"])
|
167
|
-
s.add_dependency(%q<rake>, [">= 0"])
|
168
150
|
end
|
169
151
|
else
|
170
152
|
s.add_dependency(%q<rest-client>, [">= 0"])
|
171
|
-
s.add_dependency(%q<yajl-ruby>, [">= 0"])
|
172
|
-
s.add_dependency(%q<rack>, [">= 0"])
|
173
|
-
s.add_dependency(%q<json>, [">= 0"])
|
174
|
-
s.add_dependency(%q<json_pure>, [">= 0"])
|
175
|
-
s.add_dependency(%q<ruby-hmac>, [">= 0"])
|
176
|
-
s.add_dependency(%q<webmock>, [">= 0"])
|
177
|
-
s.add_dependency(%q<bacon>, [">= 0"])
|
178
|
-
s.add_dependency(%q<rr>, [">= 0"])
|
179
|
-
s.add_dependency(%q<rake>, [">= 0"])
|
180
153
|
end
|
181
154
|
end
|
@@ -62,10 +62,10 @@ describe RestCore::Facebook do
|
|
62
62
|
rg = RestCore::Facebook.new(
|
63
63
|
:json_decode => false, :access_token => 'wrong',
|
64
64
|
:app_id => '1', :secret => '2')
|
65
|
-
rg.get('me', {}, :secret => true).should
|
66
|
-
rg.url('me', {}, :secret => true).should
|
65
|
+
rg.get('me', {}, :secret => true).should.eq 'ok'
|
66
|
+
rg.url('me', {}, :secret => true).should.eq \
|
67
67
|
'https://graph.facebook.com/me?access_token=1%7C2'
|
68
|
-
rg.url('me', {}, :secret => true, :site => '/').should
|
68
|
+
rg.url('me', {}, :secret => true, :site => '/').should.eq \
|
69
69
|
'/me?access_token=1%7C2'
|
70
70
|
end
|
71
71
|
|
@@ -74,7 +74,7 @@ describe RestCore::Facebook do
|
|
74
74
|
to_return(:body => 'bad json')
|
75
75
|
|
76
76
|
rg = RestCore::Facebook.new(:json_decode => true)
|
77
|
-
rg.get('woot', {}, :json_decode => false).should
|
77
|
+
rg.get('woot', {}, :json_decode => false).should.eq 'bad json'
|
78
78
|
rg.json_decode.should == true
|
79
79
|
end
|
80
80
|
|
@@ -83,7 +83,7 @@ describe RestCore::Facebook do
|
|
83
83
|
stub_request(:delete, 'https://graph.facebook.com/123').to_return(
|
84
84
|
:body => '[]', :status => status)
|
85
85
|
|
86
|
-
RestCore::Facebook.new.delete('123').should
|
86
|
+
RestCore::Facebook.new.delete('123').should.eq []
|
87
87
|
}
|
88
88
|
end
|
89
89
|
|
@@ -17,24 +17,24 @@ describe RestCore::Facebook do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
should 'enable cache if passing cache' do
|
20
|
-
3.times{ @rg.get('cache').should
|
21
|
-
@cache.should
|
20
|
+
3.times{ @rg.get('cache').should.eq @body }
|
21
|
+
@cache.should.eq({@cache_key => @body})
|
22
22
|
end
|
23
23
|
|
24
24
|
should 'respect expires_in' do
|
25
25
|
mock(@cache).method(:store){ mock!.arity{ -3 } }
|
26
26
|
mock(@cache).store(@cache_key, @body, :expires_in => 3)
|
27
|
-
@rg.get('cache', {}, :expires_in => 3).should
|
27
|
+
@rg.get('cache', {}, :expires_in => 3).should.eq @body
|
28
28
|
end
|
29
29
|
|
30
30
|
should 'update cache if there is cache option set to false' do
|
31
|
-
@rg.get('cache') .should
|
31
|
+
@rg.get('cache') .should.eq @body
|
32
32
|
stub_request(:get, @url).to_return(:body => @body.reverse).times(2)
|
33
|
-
@rg.get('cache') .should
|
34
|
-
@rg.get('cache', {}, :cache => false).should
|
35
|
-
@rg.get('cache') .should
|
33
|
+
@rg.get('cache') .should.eq @body
|
34
|
+
@rg.get('cache', {}, :cache => false).should.eq @body.reverse
|
35
|
+
@rg.get('cache') .should.eq @body.reverse
|
36
36
|
@rg.cache = nil
|
37
|
-
@rg.get('cache', {}, :cache => false).should
|
37
|
+
@rg.get('cache', {}, :cache => false).should.eq @body.reverse
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -47,12 +47,12 @@ describe RestCore::Facebook do
|
|
47
47
|
rg = RestCore::Facebook.new(:cache => cache)
|
48
48
|
3.times{
|
49
49
|
if meth == :delete
|
50
|
-
rg.send(meth, 'cache').should
|
50
|
+
rg.send(meth, 'cache').should.eq({'message' => 'ok'})
|
51
51
|
else
|
52
|
-
rg.send(meth, 'cache', 'payload').should
|
52
|
+
rg.send(meth, 'cache', 'payload').should.eq({'message' => 'ok'})
|
53
53
|
end
|
54
54
|
}
|
55
|
-
cache.should
|
55
|
+
cache.should.eq({})
|
56
56
|
}
|
57
57
|
end
|
58
58
|
end
|
@@ -8,12 +8,12 @@ describe RestCore::Facebook::Error do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
should 'have the right ancestors' do
|
11
|
-
RestCore::Facebook::Error::AccessToken.should
|
11
|
+
RestCore::Facebook::Error::AccessToken.should.lt RestCore::Facebook::Error
|
12
12
|
|
13
|
-
RestCore::Facebook::Error::InvalidAccessToken.should
|
13
|
+
RestCore::Facebook::Error::InvalidAccessToken.should.lt \
|
14
14
|
RestCore::Facebook::Error::AccessToken
|
15
15
|
|
16
|
-
RestCore::Facebook::Error::MissingAccessToken.should
|
16
|
+
RestCore::Facebook::Error::MissingAccessToken.should.lt \
|
17
17
|
RestCore::Facebook::Error::AccessToken
|
18
18
|
end
|
19
19
|
|
@@ -60,6 +60,6 @@ describe RestCore::Facebook::Error do
|
|
60
60
|
rg = RestCore::Facebook.new(:cache => {},
|
61
61
|
:error_handler => lambda{|env|env})
|
62
62
|
rg.get('me'); rg.get('me')
|
63
|
-
rg.cache.values.should
|
63
|
+
rg.cache.values.should.eq []
|
64
64
|
end
|
65
65
|
end
|
@@ -16,7 +16,7 @@ describe RestCore::Facebook do
|
|
16
16
|
rg = RestCore::Facebook.new(:log_method => lambda{ |s| logger << [s] })
|
17
17
|
rg.get('me')
|
18
18
|
|
19
|
-
logger.size.should
|
19
|
+
logger.size.should.eq 1
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -39,8 +39,8 @@ describe RestCore::Facebook do
|
|
39
39
|
begin
|
40
40
|
RestCore::Facebook.new.get('me')
|
41
41
|
rescue ::RestCore::Facebook::Error => e
|
42
|
-
e.error .should
|
43
|
-
e.message.should
|
42
|
+
e.error .should.eq @error_hash
|
43
|
+
e.message.should.eq \
|
44
44
|
"#{@error_hash.inspect} from https://graph.facebook.com/me"
|
45
45
|
end
|
46
46
|
end
|
@@ -67,14 +67,14 @@ describe RestCore::Facebook do
|
|
67
67
|
|
68
68
|
should 'call error_handler if error occurred' do
|
69
69
|
RestCore::Facebook.new(:error_handler => @id).fql(@bad_fql_query).
|
70
|
-
should
|
70
|
+
should.eq @fql_error_hash
|
71
71
|
end
|
72
72
|
|
73
73
|
should 'raise ::RestCore::Facebook::Error in default error_handler' do
|
74
74
|
begin
|
75
75
|
RestCore::Facebook.new.fql(@bad_fql_query)
|
76
76
|
rescue ::RestCore::Facebook::Error => e
|
77
|
-
e.error .should
|
77
|
+
e.error .should.eq @fql_error_hash
|
78
78
|
e.message.should.start_with?(
|
79
79
|
"#{@fql_error_hash.inspect} from " \
|
80
80
|
"https://api.facebook.com/method/fql.query?")
|
@@ -15,10 +15,10 @@ describe RestCore::Config do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def check
|
18
|
-
@klass.default_app_id .should
|
19
|
-
@klass.default_secret .should
|
20
|
-
@klass.default_json_decode.should
|
21
|
-
@klass.default_lang .should
|
18
|
+
@klass.default_app_id .should.eq 41829
|
19
|
+
@klass.default_secret .should.eq 'r41829'.reverse
|
20
|
+
@klass.default_json_decode.should.eq false
|
21
|
+
@klass.default_lang .should.eq 'zh-tw'
|
22
22
|
end
|
23
23
|
|
24
24
|
should 'honor rails config' do
|
@@ -8,16 +8,16 @@ describe RestCore::Facebook do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
should 'return true in authorized? if there is an access_token' do
|
11
|
-
RestCore::Facebook.new(:access_token => '1').authorized?.should
|
12
|
-
RestCore::Facebook.new(:access_token => nil).authorized?.should
|
11
|
+
RestCore::Facebook.new(:access_token => '1').authorized?.should.eq true
|
12
|
+
RestCore::Facebook.new(:access_token => nil).authorized?.should.eq false
|
13
13
|
end
|
14
14
|
|
15
15
|
should 'treat oauth_token as access_token as well' do
|
16
16
|
rg = RestCore::Facebook.new
|
17
17
|
hate_facebook = 'why the hell two different name?'
|
18
18
|
rg.data['oauth_token'] = hate_facebook
|
19
|
-
rg.authorized?.should
|
20
|
-
rg.access_token
|
19
|
+
rg.authorized?.should.eq true
|
20
|
+
rg.access_token.should.eq hate_facebook
|
21
21
|
end
|
22
22
|
|
23
23
|
should 'build correct headers' do
|
@@ -25,43 +25,43 @@ describe RestCore::Facebook do
|
|
25
25
|
:lang => 'zh-tw')
|
26
26
|
|
27
27
|
headers = rg.ask.call(rg.send(:build_env))[RestCore::REQUEST_HEADERS]
|
28
|
-
headers['Accept' ].should
|
29
|
-
headers['Accept-Language'].should
|
28
|
+
headers['Accept' ].should.eq 'text/html'
|
29
|
+
headers['Accept-Language'].should.eq 'zh-tw'
|
30
30
|
end
|
31
31
|
|
32
32
|
should 'build empty query string' do
|
33
33
|
rg = RestCore::Facebook.new
|
34
34
|
(rg.ask.call(rg.send(:build_env))[RestCore::REQUEST_QUERY] || {}).
|
35
|
-
should
|
35
|
+
should.eq({})
|
36
36
|
end
|
37
37
|
|
38
38
|
should 'create access_token in query string' do
|
39
39
|
rg = RestCore::Facebook.new(:access_token => 'token')
|
40
40
|
(rg.ask.call(rg.send(:build_env))[RestCore::REQUEST_QUERY] || {}).
|
41
|
-
should
|
41
|
+
should.eq({'access_token' => 'token'})
|
42
42
|
end
|
43
43
|
|
44
44
|
should 'build correct query string' do
|
45
45
|
rg = RestCore::Facebook.new(:access_token => 'token')
|
46
46
|
TestHelper.normalize_url(rg.url('', :message => 'hi!!')).
|
47
|
-
should
|
47
|
+
should.eq "#{rg.site}?access_token=token&message=hi%21%21"
|
48
48
|
|
49
49
|
rg.access_token = nil
|
50
50
|
TestHelper.normalize_url(rg.url('', :message => 'hi!!',
|
51
51
|
:subject => '(&oh&)')).
|
52
|
-
should
|
52
|
+
should.eq "#{rg.site}?message=hi%21%21&subject=%28%26oh%26%29"
|
53
53
|
end
|
54
54
|
|
55
55
|
should 'auto decode json' do
|
56
56
|
rg = RestCore::Facebook.new(:json_decode => true)
|
57
57
|
stub_request(:get, rg.site).to_return(:body => '[]')
|
58
|
-
rg.get('').should
|
58
|
+
rg.get('').should.eq []
|
59
59
|
end
|
60
60
|
|
61
61
|
should 'not auto decode json' do
|
62
62
|
rg = RestCore::Facebook.new(:json_decode => false)
|
63
63
|
stub_request(:get, rg.site).to_return(:body => '[]')
|
64
|
-
rg.get('').should
|
64
|
+
rg.get('').should.eq '[]'
|
65
65
|
end
|
66
66
|
|
67
67
|
should 'give attributes' do
|
@@ -13,7 +13,7 @@ describe RestCore::Facebook do
|
|
13
13
|
|
14
14
|
should 'return correct oauth url' do
|
15
15
|
TestHelper.normalize_url(@rg.authorize_url(:redirect_uri => @uri)).
|
16
|
-
should
|
16
|
+
should.eq 'https://graph.facebook.com/oauth/authorize?' \
|
17
17
|
'client_id=29&redirect_uri=http%3A%2F%2Fzzz.tw'
|
18
18
|
end
|
19
19
|
|
@@ -26,13 +26,13 @@ describe RestCore::Facebook do
|
|
26
26
|
result = {'access_token' => 'baken', 'expires' => '2918'}
|
27
27
|
|
28
28
|
@rg.authorize!(:redirect_uri => @uri, :code => 'zzz').
|
29
|
-
should
|
30
|
-
@rg.data.should
|
29
|
+
should.eq result
|
30
|
+
@rg.data.should.eq result
|
31
31
|
end
|
32
32
|
|
33
33
|
should 'not append access_token in authorize_url even presented' do
|
34
34
|
RestCore::Facebook.new(:access_token => 'do not use me').authorize_url.
|
35
|
-
should
|
35
|
+
should.eq 'https://graph.facebook.com/oauth/authorize'
|
36
36
|
end
|
37
37
|
|
38
38
|
end
|
@@ -13,14 +13,14 @@ describe RestCore::Facebook do
|
|
13
13
|
stub_request(:get, "https://api.facebook.com/method/fql.query?#{query}").
|
14
14
|
to_return(:body => '[]')
|
15
15
|
|
16
|
-
RestCore::Facebook.new.fql(fql).should
|
16
|
+
RestCore::Facebook.new.fql(fql).should.eq []
|
17
17
|
|
18
18
|
token = 'token'.reverse
|
19
19
|
stub_request(:get, "https://api.facebook.com/method/fql.query?#{query}" \
|
20
20
|
"&access_token=#{token}").
|
21
21
|
to_return(:body => '[]')
|
22
22
|
|
23
|
-
RestCore::Facebook.new(:access_token => token).fql(fql).should
|
23
|
+
RestCore::Facebook.new(:access_token => token).fql(fql).should.eq []
|
24
24
|
end
|
25
25
|
|
26
26
|
should 'do fql.mutilquery correctly' do
|
@@ -41,7 +41,7 @@ describe RestCore::Facebook do
|
|
41
41
|
}
|
42
42
|
|
43
43
|
stub_multi.call
|
44
|
-
RestCore::Facebook.new.fql_multi(:f0 => f0, :f1 => f1).should
|
44
|
+
RestCore::Facebook.new.fql_multi(:f0 => f0, :f1 => f1).should.eq []
|
45
45
|
end
|
46
46
|
|
47
47
|
should 'cache fake post in fql' do
|
@@ -54,16 +54,16 @@ describe RestCore::Facebook do
|
|
54
54
|
|
55
55
|
RestCore::Facebook.new(:cache => (cache = {})).
|
56
56
|
fql(query, {}, :post => true).
|
57
|
-
first['name'] .should
|
58
|
-
cache.size .should
|
59
|
-
cache.values.first.should
|
57
|
+
first['name'] .should.eq 'Mark Zuckerberg'
|
58
|
+
cache.size .should.eq 1
|
59
|
+
cache.values.first.should.eq body
|
60
60
|
|
61
61
|
WebMock.reset! # should hit the cache
|
62
62
|
|
63
63
|
RestCore::Facebook.new(:cache => cache).fql(query, {}, :post => true).
|
64
|
-
first['name'] .should
|
65
|
-
cache.size .should
|
66
|
-
cache.values.first.should
|
64
|
+
first['name'] .should.eq 'Mark Zuckerberg'
|
65
|
+
cache.size .should.eq 1
|
66
|
+
cache.values.first.should.eq body
|
67
67
|
|
68
68
|
# query changed
|
69
69
|
should.raise(WebMock::NetConnectNotAllowedError) do
|
@@ -73,9 +73,9 @@ describe RestCore::Facebook do
|
|
73
73
|
|
74
74
|
# cache should work for normal get
|
75
75
|
RestCore::Facebook.new(:cache => cache).fql(query).
|
76
|
-
first['name'] .should
|
77
|
-
cache.size .should
|
78
|
-
cache.values.first.should
|
76
|
+
first['name'] .should.eq 'Mark Zuckerberg'
|
77
|
+
cache.size .should.eq 1
|
78
|
+
cache.values.first.should.eq body
|
79
79
|
end
|
80
80
|
|
81
81
|
should 'do facebook old rest api' do
|
@@ -98,7 +98,7 @@ describe RestCore::Facebook do
|
|
98
98
|
RestCore::Facebook.new(:app_id => 'id',
|
99
99
|
:secret => 'di').
|
100
100
|
exchange_sessions(:sessions => 'bad bed').
|
101
|
-
first['access_token'].should
|
101
|
+
first['access_token'].should.eq 'bogus'
|
102
102
|
end
|
103
103
|
|
104
104
|
should 'use an secret access_token' do
|
@@ -109,6 +109,6 @@ describe RestCore::Facebook do
|
|
109
109
|
|
110
110
|
RestCore::Facebook.new(:app_id => '123', :secret => 's').
|
111
111
|
secret_old_rest('admin.getAppProperties', :properties => 'app_id').
|
112
|
-
should
|
112
|
+
should.eq({'app_id' => '123'})
|
113
113
|
end
|
114
114
|
end
|
@@ -11,12 +11,12 @@ describe RestCore::Facebook do
|
|
11
11
|
rg = RestCore::Facebook.new(:site => '', :cache => false)
|
12
12
|
%w[next previous].each{ |type|
|
13
13
|
kind = "#{type}_page"
|
14
|
-
rg.send(kind, {}) .should
|
15
|
-
rg.send(kind, {'paging' => []}).should
|
16
|
-
rg.send(kind, {'paging' => {}}).should
|
14
|
+
rg.send(kind, {}) .should.eq nil
|
15
|
+
rg.send(kind, {'paging' => []}).should.eq nil
|
16
|
+
rg.send(kind, {'paging' => {}}).should.eq nil
|
17
17
|
|
18
18
|
stub_request(:get, 'zzz').to_return(:body => '["ok"]')
|
19
|
-
rg.send(kind, {'paging' => {type => 'zzz'}}).should
|
19
|
+
rg.send(kind, {'paging' => {type => 'zzz'}}).should.eq ['ok']
|
20
20
|
}
|
21
21
|
end
|
22
22
|
|
@@ -34,18 +34,18 @@ describe RestCore::Facebook do
|
|
34
34
|
(2..4).each{ |pages|
|
35
35
|
# merge data
|
36
36
|
stub_request(:get, 'zzz').to_return(:body => '{"data":["y"]}')
|
37
|
-
rg.for_pages(data, pages, {}, kind).should
|
37
|
+
rg.for_pages(data, pages, {}, kind).should.eq({'data' => %w[z y]})
|
38
38
|
|
39
39
|
# this data cannot be merged
|
40
40
|
stub_request(:get, 'zzz').to_return(:body => '{"data":"y"}')
|
41
|
-
rg.for_pages(data, pages, {}, kind).should
|
41
|
+
rg.for_pages(data, pages, {}, kind).should.eq({'data' => %w[z]})
|
42
42
|
}
|
43
43
|
|
44
44
|
stub_request(:get, 'zzz').to_return(:body =>
|
45
45
|
'{"paging":{"'+type+'":"yyy"},"data":["y"]}')
|
46
46
|
stub_request(:get, 'yyy').to_return(:body => '{"data":["x"]}')
|
47
47
|
|
48
|
-
rg.for_pages(data, 3, {}, kind).should
|
48
|
+
rg.for_pages(data, 3, {}, kind).should.eq({'data' => %w[z y x]})
|
49
49
|
}
|
50
50
|
end
|
51
51
|
|
@@ -61,30 +61,30 @@ describe RestCore::Facebook do
|
|
61
61
|
ranges.each{ |page|
|
62
62
|
rg.for_pages(data, page, {}, kind){ |r|
|
63
63
|
if r
|
64
|
-
r.should
|
64
|
+
r.should.eq data
|
65
65
|
else
|
66
66
|
nils += 1
|
67
67
|
end
|
68
|
-
}.should
|
68
|
+
}.should.eq data
|
69
69
|
}
|
70
|
-
nils.should
|
70
|
+
nils.should.eq ranges.to_a.size
|
71
71
|
|
72
72
|
(2..4).each{ |pages|
|
73
73
|
# merge data
|
74
74
|
stub_request(:get, 'zzz').to_return(:body => '{"data":["y"]}')
|
75
75
|
expects = [{'data' => %w[y]}, nil]
|
76
76
|
rg.for_pages(data, pages, {}, kind){ |r|
|
77
|
-
r.should
|
78
|
-
}.should
|
79
|
-
expects.empty?.should
|
77
|
+
r.should.eq expects.shift
|
78
|
+
}.should.eq({'data' => %w[z y]})
|
79
|
+
expects.empty?.should.eq true
|
80
80
|
|
81
81
|
# this data cannot be merged
|
82
82
|
stub_request(:get, 'zzz').to_return(:body => '{"data":"y"}')
|
83
83
|
expects = [{'data' => 'y'}, nil]
|
84
84
|
rg.for_pages(data, pages, {}, kind){ |r|
|
85
|
-
r.should
|
86
|
-
}.should
|
87
|
-
expects.empty?.should
|
85
|
+
r.should.eq expects.shift
|
86
|
+
}.should.eq({'data' => %w[z]})
|
87
|
+
expects.empty?.should.eq true
|
88
88
|
}
|
89
89
|
|
90
90
|
stub_request(:get, 'zzz').to_return(:body =>
|
@@ -99,8 +99,8 @@ describe RestCore::Facebook do
|
|
99
99
|
else
|
100
100
|
r = rr
|
101
101
|
end
|
102
|
-
r.should
|
103
|
-
}.should
|
102
|
+
r.should.eq expects.shift
|
103
|
+
}.should.eq({'data' => %w[z y x]})
|
104
104
|
}
|
105
105
|
end
|
106
106
|
end
|
@@ -5,8 +5,8 @@ describe RestCore::Facebook do
|
|
5
5
|
|
6
6
|
should 'return nil if parse error, but not when call data directly' do
|
7
7
|
rg = RestCore::Facebook.new
|
8
|
-
rg.parse_cookies!({}).should
|
9
|
-
rg.data .should
|
8
|
+
rg.parse_cookies!({}).should.eq nil
|
9
|
+
rg.data .should.eq({})
|
10
10
|
end
|
11
11
|
|
12
12
|
should 'parse if fbs contains json as well' do
|
@@ -15,7 +15,7 @@ describe RestCore::Facebook do
|
|
15
15
|
data = {'algorithm' => algorithm, 'user' => user}
|
16
16
|
rg = RestCore::Facebook.new(:data => data, :secret => 'secret')
|
17
17
|
sig = rg.send(:calculate_sig, data)
|
18
|
-
rg.parse_fbs!("\"#{rg.fbs}\"").should
|
18
|
+
rg.parse_fbs!("\"#{rg.fbs}\"").should.eq data.merge('sig' => sig)
|
19
19
|
end
|
20
20
|
|
21
21
|
should 'extract correct access_token or fail checking sig' do
|
@@ -26,26 +26,26 @@ describe RestCore::Facebook do
|
|
26
26
|
fbs = "access_token=#{CGI.escape(access_token)}&expires=0&" \
|
27
27
|
"secret=abc&session_key=def-456&sig=#{sig}&uid=3"
|
28
28
|
|
29
|
-
check = lambda{ |token,
|
29
|
+
check = lambda{ |token, fbs1|
|
30
30
|
http_cookie =
|
31
31
|
"__utma=123; __utmz=456.utmcsr=(d)|utmccn=(d)|utmcmd=(n); " \
|
32
|
-
"fbs_#{app_id}=#{
|
32
|
+
"fbs_#{app_id}=#{fbs1}"
|
33
33
|
|
34
34
|
rg = RestCore::Facebook.new(:app_id => app_id, :secret => secret)
|
35
35
|
rg.parse_rack_env!('HTTP_COOKIE' => http_cookie).
|
36
36
|
should.kind_of?(token ? Hash : NilClass)
|
37
|
-
rg.access_token.should
|
37
|
+
rg.access_token.should.eq token
|
38
38
|
|
39
|
-
rg.parse_rack_env!('HTTP_COOKIE' => nil).should
|
40
|
-
rg.data.should
|
39
|
+
rg.parse_rack_env!('HTTP_COOKIE' => nil).should.eq nil
|
40
|
+
rg.data.should.eq({})
|
41
41
|
|
42
|
-
rg.parse_cookies!({"fbs_#{app_id}" =>
|
42
|
+
rg.parse_cookies!({"fbs_#{app_id}" => fbs1}).
|
43
43
|
should.kind_of?(token ? Hash : NilClass)
|
44
|
-
rg.access_token.should
|
44
|
+
rg.access_token.should.eq token
|
45
45
|
|
46
|
-
rg.parse_fbs!(
|
46
|
+
rg.parse_fbs!(fbs1).
|
47
47
|
should.kind_of?(token ? Hash : NilClass)
|
48
|
-
rg.access_token.should
|
48
|
+
rg.access_token.should.eq token
|
49
49
|
}
|
50
50
|
check.call(access_token, fbs)
|
51
51
|
check.call(access_token, "\"#{fbs}\"")
|
@@ -57,23 +57,23 @@ describe RestCore::Facebook do
|
|
57
57
|
should 'not pass if there is no secret, prevent from forgery' do
|
58
58
|
rg = RestCore::Facebook.new
|
59
59
|
rg.parse_fbs!('"feed=me&sig=bddd192cf27f22c05f61c8bea24fa4b7"').
|
60
|
-
should
|
60
|
+
should.eq nil
|
61
61
|
end
|
62
62
|
|
63
63
|
should 'parse json correctly' do
|
64
64
|
rg = RestCore::Facebook.new
|
65
65
|
|
66
|
-
rg.parse_json!('bad json') .should
|
67
|
-
rg.parse_json!('{"no":"sig"}').should
|
66
|
+
rg.parse_json!('bad json') .should.eq nil
|
67
|
+
rg.parse_json!('{"no":"sig"}').should.eq nil
|
68
68
|
rg.parse_json!('{"feed":"me","sig":"bddd192cf27f22c05f61c8bea24fa4b7"}').
|
69
|
-
should
|
69
|
+
should.eq nil
|
70
70
|
|
71
71
|
rg = RestCore::Facebook.new(:secret => 'bread')
|
72
72
|
rg.parse_json!('{"feed":"me","sig":"20393e7823730308938a86ecf1c88b14"}').
|
73
|
-
should
|
74
|
-
rg.data.empty?.should
|
73
|
+
should.eq({'feed' => 'me', 'sig' => "20393e7823730308938a86ecf1c88b14"})
|
74
|
+
rg.data.empty?.should.eq false
|
75
75
|
rg.parse_json!('bad json')
|
76
|
-
rg.data.empty?.should
|
76
|
+
rg.data.empty?.should.eq true
|
77
77
|
end
|
78
78
|
|
79
79
|
should 'parse signed_request' do
|
@@ -88,19 +88,19 @@ describe RestCore::Facebook do
|
|
88
88
|
|
89
89
|
rg = RestCore::Facebook.new(:secret => secret)
|
90
90
|
rg.parse_signed_request!(signed_request)
|
91
|
-
rg.data['ooh'].should
|
92
|
-
rg.data['moo'].should
|
91
|
+
rg.data['ooh'].should.eq 'dir'
|
92
|
+
rg.data['moo'].should.eq 'bar'
|
93
93
|
|
94
94
|
signed_request = "#{encode[sig[0..-4]+'bad']}.#{json_encoded}"
|
95
|
-
rg.parse_signed_request!(signed_request).should
|
96
|
-
rg.data .should
|
95
|
+
rg.parse_signed_request!(signed_request).should.eq nil
|
96
|
+
rg.data .should.eq({})
|
97
97
|
end
|
98
98
|
|
99
99
|
should 'fallback to ruby-hmac if Digest.new raise an runtime error' do
|
100
100
|
key, data = 'top', 'secret'
|
101
101
|
digest = OpenSSL::HMAC.digest('sha256', key, data)
|
102
102
|
mock(OpenSSL::HMAC).digest('sha256', key, data){ raise 'boom' }
|
103
|
-
RestCore::Hmac.sha256(key, data).should
|
103
|
+
RestCore::Hmac.sha256(key, data).should.eq digest
|
104
104
|
end
|
105
105
|
|
106
106
|
should 'generate correct fbs with correct sig' do
|
@@ -112,17 +112,17 @@ describe RestCore::Facebook do
|
|
112
112
|
should 'parse fbs from facebook response which lacks sig...' do
|
113
113
|
rg = RestCore::Facebook.new(:access_token => 'a', :secret => 'z')
|
114
114
|
rg.parse_fbs!(rg.fbs) .should.kind_of?(Hash)
|
115
|
-
rg.data.empty?.should
|
116
|
-
rg.parse_fbs!(rg.fbs.sub(/sig\=\w+/, 'sig=abc')).should
|
117
|
-
rg.data.empty?.should
|
115
|
+
rg.data.empty?.should.eq false
|
116
|
+
rg.parse_fbs!(rg.fbs.sub(/sig\=\w+/, 'sig=abc')).should.eq nil
|
117
|
+
rg.data.empty?.should.eq true
|
118
118
|
end
|
119
119
|
|
120
120
|
should 'generate correct fbs with additional parameters' do
|
121
121
|
rg = RestCore::Facebook.new(:access_token => 'a', :secret => 'z')
|
122
122
|
rg.data['expires'] = '1234'
|
123
123
|
rg.parse_fbs!(rg.fbs).should.kind_of?(Hash)
|
124
|
-
rg.access_token .should
|
125
|
-
rg.data['expires'] .should
|
124
|
+
rg.access_token .should.eq 'a'
|
125
|
+
rg.data['expires'] .should.eq '1234'
|
126
126
|
end
|
127
127
|
|
128
128
|
end
|
@@ -17,9 +17,10 @@ describe RestCore::Facebook do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
# sorry, it is marshal in 1.8 is broken
|
20
|
-
if defined?(RUBY_ENGINE)
|
21
|
-
|
22
|
-
|
20
|
+
if defined?(RUBY_ENGINE)
|
21
|
+
if RUBY_ENGINE == 'ruby' && RUBY_VERSION == '1.8.7'
|
22
|
+
engines.pop # REE 1.8.7
|
23
|
+
end
|
23
24
|
else
|
24
25
|
engines.pop # MRI 1.8.7
|
25
26
|
end
|
@@ -28,10 +29,10 @@ describe RestCore::Facebook do
|
|
28
29
|
test = lambda{ |obj| engine.load(engine.dump(obj)) }
|
29
30
|
rg = RestCore::Facebook.new(:log_handler => lambda{})
|
30
31
|
lambda{ test[rg] }.should.raise(TypeError)
|
31
|
-
test[rg.lighten].should
|
32
|
+
test[rg.lighten].should.eq rg.lighten
|
32
33
|
lambda{ test[rg] }.should.raise(TypeError)
|
33
34
|
rg.lighten!
|
34
|
-
test[rg.lighten].should
|
35
|
+
test[rg.lighten].should.eq rg
|
35
36
|
}
|
36
37
|
end
|
37
38
|
|
data/test/test_oauth1_header.rb
CHANGED
@@ -25,7 +25,7 @@ describe RestCore::Oauth1Header do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
should 'have correct base_string' do
|
28
|
-
@auth.base_string(@env, @oauth_params).should.
|
28
|
+
@auth.base_string(@env, @oauth_params).should.eq(
|
29
29
|
'POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&' \
|
30
30
|
'oauth_callback%3Dhttp%253A%252F%252Flocalhost%253A3005%252F' \
|
31
31
|
'the_dance%252Fprocess_callback%253Fservice_provider_id%253D' \
|
@@ -38,7 +38,7 @@ describe RestCore::Oauth1Header do
|
|
38
38
|
should 'not use payload in multipart request for base_string' do
|
39
39
|
@env = @env.merge(RestCore::REQUEST_PAYLOAD =>
|
40
40
|
{'file' => File.open(__FILE__)})
|
41
|
-
@auth.base_string(@env, @oauth_params).should.
|
41
|
+
@auth.base_string(@env, @oauth_params).should.eq(
|
42
42
|
'POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&' \
|
43
43
|
'oauth_callback%3Dhttp%253A%252F%252Flocalhost%253A3005%252F' \
|
44
44
|
'the_dance%252Fprocess_callback%253Fservice_provider_id%253D' \
|
@@ -49,7 +49,7 @@ describe RestCore::Oauth1Header do
|
|
49
49
|
end
|
50
50
|
|
51
51
|
should 'have correct signature' do
|
52
|
-
@auth.signature(@env, @oauth_params).should.
|
52
|
+
@auth.signature(@env, @oauth_params).should.eq(
|
53
53
|
'8wUi7m5HFQy76nowoCThusfgB+Q=')
|
54
54
|
end
|
55
55
|
end
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rest-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.0
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Cardinal Blue
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-09-
|
13
|
+
date: 2011-09-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rest-client
|
17
|
-
requirement: &
|
17
|
+
requirement: &2164656700 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,106 +22,7 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: yajl-ruby
|
28
|
-
requirement: &2157313900 !ruby/object:Gem::Requirement
|
29
|
-
none: false
|
30
|
-
requirements:
|
31
|
-
- - ! '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: *2157313900
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rack
|
39
|
-
requirement: &2157313240 !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
|
-
requirements:
|
42
|
-
- - ! '>='
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version: '0'
|
45
|
-
type: :development
|
46
|
-
prerelease: false
|
47
|
-
version_requirements: *2157313240
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: json
|
50
|
-
requirement: &2157312760 !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
|
-
requirements:
|
53
|
-
- - ! '>='
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: '0'
|
56
|
-
type: :development
|
57
|
-
prerelease: false
|
58
|
-
version_requirements: *2157312760
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: json_pure
|
61
|
-
requirement: &2157312220 !ruby/object:Gem::Requirement
|
62
|
-
none: false
|
63
|
-
requirements:
|
64
|
-
- - ! '>='
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '0'
|
67
|
-
type: :development
|
68
|
-
prerelease: false
|
69
|
-
version_requirements: *2157312220
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: ruby-hmac
|
72
|
-
requirement: &2157298280 !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
78
|
-
type: :development
|
79
|
-
prerelease: false
|
80
|
-
version_requirements: *2157298280
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: webmock
|
83
|
-
requirement: &2157297200 !ruby/object:Gem::Requirement
|
84
|
-
none: false
|
85
|
-
requirements:
|
86
|
-
- - ! '>='
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: '0'
|
89
|
-
type: :development
|
90
|
-
prerelease: false
|
91
|
-
version_requirements: *2157297200
|
92
|
-
- !ruby/object:Gem::Dependency
|
93
|
-
name: bacon
|
94
|
-
requirement: &2157296380 !ruby/object:Gem::Requirement
|
95
|
-
none: false
|
96
|
-
requirements:
|
97
|
-
- - ! '>='
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: '0'
|
100
|
-
type: :development
|
101
|
-
prerelease: false
|
102
|
-
version_requirements: *2157296380
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: rr
|
105
|
-
requirement: &2157295440 !ruby/object:Gem::Requirement
|
106
|
-
none: false
|
107
|
-
requirements:
|
108
|
-
- - ! '>='
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
type: :development
|
112
|
-
prerelease: false
|
113
|
-
version_requirements: *2157295440
|
114
|
-
- !ruby/object:Gem::Dependency
|
115
|
-
name: rake
|
116
|
-
requirement: &2157294480 !ruby/object:Gem::Requirement
|
117
|
-
none: false
|
118
|
-
requirements:
|
119
|
-
- - ! '>='
|
120
|
-
- !ruby/object:Gem::Version
|
121
|
-
version: '0'
|
122
|
-
type: :development
|
123
|
-
prerelease: false
|
124
|
-
version_requirements: *2157294480
|
25
|
+
version_requirements: *2164656700
|
125
26
|
description: ! 'A modular Ruby REST client collection/infrastructure.
|
126
27
|
|
127
28
|
|
@@ -276,9 +177,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
276
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
277
178
|
none: false
|
278
179
|
requirements:
|
279
|
-
- - ! '
|
180
|
+
- - ! '>='
|
280
181
|
- !ruby/object:Gem::Version
|
281
|
-
version:
|
182
|
+
version: '0'
|
282
183
|
requirements: []
|
283
184
|
rubyforge_project:
|
284
185
|
rubygems_version: 1.8.10
|