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 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']
@@ -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
@@ -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
@@ -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.module_eval(src.join("\n"), __FILE__, __LINE__)
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, URI.encode(hash['paging']['next'])], &cb)
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, URI.encode(hash['paging']['previous'])], &cb)
102
+ request(opts, [:get, hash['paging']['previous']], &cb)
103
103
  else
104
104
  yield(nil) if block_given?
105
105
  end
@@ -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.module_eval(src.join("\n"), __FILE__, __LINE__)
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 'uri'
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' => encode(signature(env, params)))
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
- "#{encode(k.to_s)}=#{encode(v.to_s)}"}.join('&')
70
+ "#{escape(k.to_s)}=#{escape(v.to_s)}"}.join('&')
71
71
 
72
- "#{method}&#{encode(base_uri)}&#{encode(params)}"
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 encode string
93
- URI.encode(string, /[^a-zA-Z0-9\-\.\_\~]/)
92
+ def escape string
93
+ CGI.escape(string).gsub('+', '%20')
94
94
  end
95
95
  end
@@ -30,4 +30,8 @@ module Kernel
30
30
  def eq? rhs
31
31
  self == rhs
32
32
  end
33
+
34
+ def lt? rhs
35
+ self < rhs
36
+ end
33
37
  end
@@ -1,4 +1,4 @@
1
1
 
2
2
  module RestCore
3
- VERSION = '0.3.0.pre.2'
3
+ VERSION = '0.3.0'
4
4
  end
@@ -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.pre.2"
5
+ s.version = "0.3.0"
6
6
 
7
- s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
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-02"
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 == 'ok'
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 == 'bad json'
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 == @body }
21
- @cache.should == {@cache_key => @body}
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 == @body
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 == @body
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 == @body
34
- @rg.get('cache', {}, :cache => false).should == @body.reverse
35
- @rg.get('cache') .should == @body.reverse
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 == @body.reverse
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 == {'message' => 'ok'}
50
+ rg.send(meth, 'cache').should.eq({'message' => 'ok'})
51
51
  else
52
- rg.send(meth, 'cache', 'payload').should == {'message' => 'ok'}
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
@@ -18,6 +18,6 @@ describe RestCore::Facebook do
18
18
  end
19
19
  end)
20
20
 
21
- klass.new.app_id.should == '1829'
21
+ klass.new.app_id.should.eq('1829')
22
22
  end
23
23
  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 < RestCore::Facebook::Error
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 == 1
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 == @error_hash
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 == @fql_error_hash
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 == @fql_error_hash
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 == 41829
19
- @klass.default_secret .should == 'r41829'.reverse
20
- @klass.default_json_decode.should == false
21
- @klass.default_lang .should == 'zh-tw'
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 == true
12
- RestCore::Facebook.new(:access_token => nil).authorized?.should == false
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 == true
20
- rg.access_token == hate_facebook
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 == 'text/html'
29
- headers['Accept-Language'].should == 'zh-tw'
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 == {'access_token' => 'token'}
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 == "#{rg.site}?access_token=token&message=hi%21%21"
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 == "#{rg.site}?message=hi%21%21&subject=%28%26oh%26%29"
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 == 'https://graph.facebook.com/oauth/authorize?' \
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 == result
30
- @rg.data.should == result
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 == 'https://graph.facebook.com/oauth/authorize'
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 == 'Mark Zuckerberg'
58
- cache.size .should == 1
59
- cache.values.first.should == body
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 == 'Mark Zuckerberg'
65
- cache.size .should == 1
66
- cache.values.first.should == body
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 == 'Mark Zuckerberg'
77
- cache.size .should == 1
78
- cache.values.first.should == body
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 == 'bogus'
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 == {'app_id' => '123'}
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 == nil
15
- rg.send(kind, {'paging' => []}).should == nil
16
- rg.send(kind, {'paging' => {}}).should == nil
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 == ['ok']
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 == {'data' => %w[z y]}
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 == {'data' => %w[z]}
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 == {'data' => %w[z y x]}
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 == data
64
+ r.should.eq data
65
65
  else
66
66
  nils += 1
67
67
  end
68
- }.should == data
68
+ }.should.eq data
69
69
  }
70
- nils.should == ranges.to_a.size
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 == expects.shift
78
- }.should == {'data' => %w[z y]}
79
- expects.empty?.should == true
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 == expects.shift
86
- }.should == {'data' => %w[z]}
87
- expects.empty?.should == true
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 == expects.shift
103
- }.should == {'data' => %w[z y x]}
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 == nil
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 == data.merge('sig' => sig)
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, fbs|
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}=#{fbs}"
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 == token
37
+ rg.access_token.should.eq token
38
38
 
39
- rg.parse_rack_env!('HTTP_COOKIE' => nil).should == nil
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}" => fbs}).
42
+ rg.parse_cookies!({"fbs_#{app_id}" => fbs1}).
43
43
  should.kind_of?(token ? Hash : NilClass)
44
- rg.access_token.should == token
44
+ rg.access_token.should.eq token
45
45
 
46
- rg.parse_fbs!(fbs).
46
+ rg.parse_fbs!(fbs1).
47
47
  should.kind_of?(token ? Hash : NilClass)
48
- rg.access_token.should == token
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 == nil
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 == nil
67
- rg.parse_json!('{"no":"sig"}').should == nil
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 == nil
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 == {'feed' => 'me', 'sig' => "20393e7823730308938a86ecf1c88b14"}
74
- rg.data.empty?.should == false
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 == true
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 == 'dir'
92
- rg.data['moo'].should == 'bar'
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 == nil
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 == digest
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 == false
116
- rg.parse_fbs!(rg.fbs.sub(/sig\=\w+/, 'sig=abc')).should == nil
117
- rg.data.empty?.should == true
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 == 'a'
125
- rg.data['expires'] .should == '1234'
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) && RUBY_ENGINE == 'ruby' &&
21
- RUBY_VERSION == '1.8.7'
22
- engines.pop # REE 1.8.7
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 == rg.lighten
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 == rg
35
+ test[rg.lighten].should.eq rg
35
36
  }
36
37
  end
37
38
 
@@ -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.equal(
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.equal(
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.equal(
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.pre.2
5
- prerelease: 6
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-02 00:00:00.000000000Z
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: &2157314400 !ruby/object:Gem::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: *2157314400
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: 1.3.1
182
+ version: '0'
282
183
  requirements: []
283
184
  rubyforge_project:
284
185
  rubygems_version: 1.8.10