rest-graph 1.5.0 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.specification +309 -0
- data/CHANGES +78 -0
- data/Gemfile +4 -2
- data/Gemfile.lock +12 -7
- data/README +20 -9
- data/README.rdoc +20 -9
- data/Rakefile +2 -1
- data/TODO +2 -0
- data/example/multi/config.ru +44 -0
- data/example/multi/rainbows.rb +5 -0
- data/example/rails2/test/functional/application_controller_test.rb +6 -6
- data/lib/rest-graph.rb +179 -75
- data/lib/rest-graph/rails_util.rb +2 -13
- data/lib/rest-graph/test_util.rb +95 -0
- data/lib/rest-graph/version.rb +1 -1
- data/rest-graph.gemspec +305 -57
- data/test/common.rb +3 -3
- data/test/test_api.rb +12 -11
- data/test/test_cache.rb +3 -3
- data/test/test_default.rb +2 -2
- data/test/test_error.rb +3 -3
- data/test/test_handler.rb +13 -10
- data/test/test_load_config.rb +1 -1
- data/test/test_misc.rb +14 -12
- data/test/test_multi.rb +126 -0
- data/test/test_oauth.rb +4 -4
- data/test/test_old.rb +8 -8
- data/test/test_page.rb +70 -14
- data/test/test_parse.rb +9 -9
- data/test/test_serialize.rb +13 -4
- data/test/test_test_util.rb +74 -0
- data/test/test_timeout.rb +20 -0
- metadata +56 -30
data/test/test_oauth.rb
CHANGED
@@ -12,16 +12,16 @@ describe RestGraph do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
after do
|
15
|
-
reset_webmock
|
15
|
+
WebMock.reset_webmock
|
16
16
|
end
|
17
17
|
|
18
|
-
|
18
|
+
should 'return correct oauth url' do
|
19
19
|
TestHelper.normalize_url(@rg.authorize_url(:redirect_uri => @uri)).
|
20
20
|
should == 'https://graph.facebook.com/oauth/authorize?' \
|
21
21
|
'client_id=29&redirect_uri=http%3A%2F%2Fzzz.tw'
|
22
22
|
end
|
23
23
|
|
24
|
-
|
24
|
+
should 'do authorizing and parse result and save it in data' do
|
25
25
|
stub_request(:get, 'https://graph.facebook.com/oauth/access_token?' \
|
26
26
|
'client_id=29&client_secret=18&code=zzz&' \
|
27
27
|
'redirect_uri=http%3A%2F%2Fzzz.tw').
|
@@ -34,7 +34,7 @@ describe RestGraph do
|
|
34
34
|
@rg.data.should == result
|
35
35
|
end
|
36
36
|
|
37
|
-
|
37
|
+
should 'not append access_token in authorize_url even presented' do
|
38
38
|
RestGraph.new(:access_token => 'do not use me').authorize_url.
|
39
39
|
should == 'https://graph.facebook.com/oauth/authorize'
|
40
40
|
end
|
data/test/test_old.rb
CHANGED
@@ -7,11 +7,11 @@ end
|
|
7
7
|
|
8
8
|
describe RestGraph do
|
9
9
|
after do
|
10
|
-
reset_webmock
|
10
|
+
WebMock.reset_webmock
|
11
11
|
RR.verify
|
12
12
|
end
|
13
13
|
|
14
|
-
|
14
|
+
should 'do fql query with/without access_token' do
|
15
15
|
fql = 'SELECT name FROM likes where id="123"'
|
16
16
|
query = "format=json&query=#{CGI.escape(fql)}"
|
17
17
|
stub_request(:get, "https://api.facebook.com/method/fql.query?#{query}").
|
@@ -27,7 +27,7 @@ describe RestGraph do
|
|
27
27
|
RestGraph.new(:access_token => token).fql(fql).should == []
|
28
28
|
end
|
29
29
|
|
30
|
-
|
30
|
+
should 'do fql.mutilquery correctly' do
|
31
31
|
f0 = 'SELECT display_name FROM application WHERE app_id="233082465238"'
|
32
32
|
f1 = 'SELECT display_name FROM application WHERE app_id="110225210740"'
|
33
33
|
f0q, f1q = "\"#{f0.gsub('"', '\\"')}\"", "\"#{f1.gsub('"', '\\"')}\""
|
@@ -48,7 +48,7 @@ describe RestGraph do
|
|
48
48
|
RestGraph.new.fql_multi(:f0 => f0, :f1 => f1).should == []
|
49
49
|
end
|
50
50
|
|
51
|
-
|
51
|
+
should 'do facebook old rest api' do
|
52
52
|
body = 'hate facebook inconsistent'
|
53
53
|
stub_request(:get,
|
54
54
|
'https://api.facebook.com/method/notes.create?format=json').
|
@@ -58,7 +58,7 @@ describe RestGraph do
|
|
58
58
|
should == body
|
59
59
|
end
|
60
60
|
|
61
|
-
|
61
|
+
should 'exchange sessions for access token' do
|
62
62
|
stub_request(:post,
|
63
63
|
'https://graph.facebook.com/oauth/exchange_sessions?' \
|
64
64
|
'type=client_cred&client_id=id&client_secret=di&' \
|
@@ -71,7 +71,7 @@ describe RestGraph do
|
|
71
71
|
first['access_token'].should == 'bogus'
|
72
72
|
end
|
73
73
|
|
74
|
-
|
74
|
+
should 'broken json' do
|
75
75
|
stub_request(:get,
|
76
76
|
'https://api.facebook.com/method/admin.getAppProperties?' \
|
77
77
|
'access_token=123%7Cs&format=json&properties=app_id'
|
@@ -82,7 +82,7 @@ describe RestGraph do
|
|
82
82
|
should == {'app_id' => '123'}
|
83
83
|
end
|
84
84
|
|
85
|
-
|
85
|
+
should 'use an secret access_token' do
|
86
86
|
stub_request(:get,
|
87
87
|
'https://api.facebook.com/method/admin.getAppProperties?' \
|
88
88
|
'access_token=123%7Cs&format=json&properties=app_id'
|
@@ -93,7 +93,7 @@ describe RestGraph do
|
|
93
93
|
should == {'app_id' => '123'}
|
94
94
|
end
|
95
95
|
|
96
|
-
|
96
|
+
should 'not parse twice in strict mode' do
|
97
97
|
stub_request(:get,
|
98
98
|
'https://api.facebook.com/method/admin.getAppProperties?' \
|
99
99
|
'access_token=123%7Cs&format=json&properties=app_id'
|
data/test/test_page.rb
CHANGED
@@ -7,11 +7,11 @@ end
|
|
7
7
|
|
8
8
|
describe RestGraph do
|
9
9
|
after do
|
10
|
-
reset_webmock
|
10
|
+
WebMock.reset_webmock
|
11
11
|
RR.verify
|
12
12
|
end
|
13
13
|
|
14
|
-
|
14
|
+
should 'get the next/prev page' do
|
15
15
|
rg = RestGraph.new
|
16
16
|
%w[next previous].each{ |type|
|
17
17
|
kind = "#{type}_page"
|
@@ -19,12 +19,12 @@ describe RestGraph do
|
|
19
19
|
rg.send(kind, {'paging' => []}).should == nil
|
20
20
|
rg.send(kind, {'paging' => {}}).should == nil
|
21
21
|
|
22
|
-
|
23
|
-
rg.send(kind, {'paging' => {type => 'zzz'}}).should == 'ok'
|
22
|
+
stub_request(:get, 'zzz').to_return(:body => '["ok"]')
|
23
|
+
rg.send(kind, {'paging' => {type => 'zzz'}}).should == ['ok']
|
24
24
|
}
|
25
25
|
end
|
26
26
|
|
27
|
-
|
27
|
+
should 'merge all pages into one' do
|
28
28
|
rg = RestGraph.new
|
29
29
|
%w[next previous].each{ |type|
|
30
30
|
kind = "#{type}_page"
|
@@ -32,23 +32,79 @@ describe RestGraph do
|
|
32
32
|
|
33
33
|
# invalid pages or just the page itself
|
34
34
|
(-1..1).each{ |page|
|
35
|
-
rg.for_pages(data, page, kind).should == data
|
35
|
+
rg.for_pages(data, page, {}, kind).should == data
|
36
36
|
}
|
37
37
|
|
38
38
|
(2..4).each{ |pages|
|
39
39
|
# merge data
|
40
|
-
|
41
|
-
rg.for_pages(data, pages, kind).should == {'data' => %w[z y]}
|
40
|
+
stub_request(:get, 'zzz').to_return(:body => '{"data":["y"]}')
|
41
|
+
rg.for_pages(data, pages, {}, kind).should == {'data' => %w[z y]}
|
42
42
|
|
43
43
|
# this data cannot be merged
|
44
|
-
|
45
|
-
rg.for_pages(data, pages, kind).should == {'data' => %w[z]}
|
44
|
+
stub_request(:get, 'zzz').to_return(:body => '{"data":"y"}')
|
45
|
+
rg.for_pages(data, pages, {}, kind).should == {'data' => %w[z]}
|
46
46
|
}
|
47
47
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
48
|
+
stub_request(:get, 'zzz').to_return(:body =>
|
49
|
+
'{"paging":{"'+type+'":"yyy"},"data":["y"]}')
|
50
|
+
stub_request(:get, 'yyy').to_return(:body => '{"data":["x"]}')
|
51
|
+
|
52
|
+
rg.for_pages(data, 3, {}, kind).should == {'data' => %w[z y x]}
|
53
|
+
}
|
54
|
+
end
|
55
|
+
|
56
|
+
should 'for_pages with callback' do
|
57
|
+
rg = RestGraph.new
|
58
|
+
%w[next previous].each{ |type|
|
59
|
+
kind = "#{type}_page"
|
60
|
+
data = {'paging' => {type => 'zzz'}, 'data' => ['z']}
|
61
|
+
|
62
|
+
# invalid pages or just the page itself
|
63
|
+
nils = 0
|
64
|
+
ranges = -1..1
|
65
|
+
ranges.each{ |page|
|
66
|
+
rg.for_pages(data, page, {}, kind){ |r|
|
67
|
+
if r
|
68
|
+
r.should == data
|
69
|
+
else
|
70
|
+
nils += 1
|
71
|
+
end
|
72
|
+
}.should == data
|
73
|
+
}
|
74
|
+
nils.should == ranges.to_a.size
|
75
|
+
|
76
|
+
(2..4).each{ |pages|
|
77
|
+
# merge data
|
78
|
+
stub_request(:get, 'zzz').to_return(:body => '{"data":["y"]}')
|
79
|
+
expects = [{'data' => %w[y]}, nil]
|
80
|
+
rg.for_pages(data, pages, {}, kind){ |r|
|
81
|
+
r.should == expects.shift
|
82
|
+
}.should == {'data' => %w[z y]}
|
83
|
+
expects.empty?.should == true
|
84
|
+
|
85
|
+
# this data cannot be merged
|
86
|
+
stub_request(:get, 'zzz').to_return(:body => '{"data":"y"}')
|
87
|
+
expects = [{'data' => 'y'}, nil]
|
88
|
+
rg.for_pages(data, pages, {}, kind){ |r|
|
89
|
+
r.should == expects.shift
|
90
|
+
}.should == {'data' => %w[z]}
|
91
|
+
expects.empty?.should == true
|
92
|
+
}
|
93
|
+
|
94
|
+
stub_request(:get, 'zzz').to_return(:body =>
|
95
|
+
'{"paging":{"'+type+'":"yyy"},"data":["y"]}')
|
96
|
+
stub_request(:get, 'yyy').to_return(:body => '{"data":["x"]}')
|
97
|
+
|
98
|
+
expects = [{'data' => %w[y]}, {'data' => %w[x]}, nil]
|
99
|
+
rg.for_pages(data, 3, {}, kind){ |rr|
|
100
|
+
if rr
|
101
|
+
r = rr.dup
|
102
|
+
r.delete('paging')
|
103
|
+
else
|
104
|
+
r = rr
|
105
|
+
end
|
106
|
+
r.should == expects.shift
|
107
|
+
}.should == {'data' => %w[z y x]}
|
52
108
|
}
|
53
109
|
end
|
54
110
|
end
|
data/test/test_parse.rb
CHANGED
@@ -7,13 +7,13 @@ end
|
|
7
7
|
|
8
8
|
describe RestGraph do
|
9
9
|
|
10
|
-
|
10
|
+
should 'return nil if parse error, but not when call data directly' do
|
11
11
|
rg = RestGraph.new
|
12
12
|
rg.parse_cookies!({}).should == nil
|
13
13
|
rg.data .should == {}
|
14
14
|
end
|
15
15
|
|
16
|
-
|
16
|
+
should 'extract correct access_token or fail checking sig' do
|
17
17
|
access_token = '1|2-5|f.'
|
18
18
|
app_id = '1829'
|
19
19
|
secret = app_id.reverse
|
@@ -49,13 +49,13 @@ describe RestGraph do
|
|
49
49
|
check.call(nil, "\"#{fbs}\"")
|
50
50
|
end
|
51
51
|
|
52
|
-
|
52
|
+
should 'not pass if there is no secret, prevent from forgery' do
|
53
53
|
rg = RestGraph.new
|
54
54
|
rg.parse_fbs!('"feed=me&sig=bddd192cf27f22c05f61c8bea24fa4b7"').
|
55
55
|
should == nil
|
56
56
|
end
|
57
57
|
|
58
|
-
|
58
|
+
should 'parse json correctly' do
|
59
59
|
rg = RestGraph.new
|
60
60
|
|
61
61
|
rg.parse_json!('bad json').should == nil
|
@@ -68,7 +68,7 @@ describe RestGraph do
|
|
68
68
|
should == {'feed' => 'me', 'sig' => "20393e7823730308938a86ecf1c88b14"}
|
69
69
|
end
|
70
70
|
|
71
|
-
|
71
|
+
should 'parse signed_request' do
|
72
72
|
secret = 'aloha'
|
73
73
|
json = RestGraph.json_encode('ooh' => 'dir', 'moo' => 'bar')
|
74
74
|
encode = lambda{ |str|
|
@@ -87,25 +87,25 @@ describe RestGraph do
|
|
87
87
|
rg.parse_signed_request!(signed_request).should == nil
|
88
88
|
end
|
89
89
|
|
90
|
-
|
90
|
+
should 'fallback to ruby-hmac if Digest.new raise an runtime error' do
|
91
91
|
key, data = 'top', 'secret'
|
92
92
|
mock(OpenSSL::Digest::Digest).new('sha256'){ raise 'boom' }
|
93
93
|
RestGraph.hmac_sha256(key, data).should ==
|
94
94
|
OpenSSL::HMAC.digest('sha256', key, data)
|
95
95
|
end
|
96
96
|
|
97
|
-
|
97
|
+
should 'generate correct fbs with correct sig' do
|
98
98
|
RestGraph.new(:access_token => 'fake', :secret => 's').fbs.should ==
|
99
99
|
"access_token=fake&sig=#{Digest::MD5.hexdigest('access_token=fakes')}"
|
100
100
|
end
|
101
101
|
|
102
|
-
|
102
|
+
should 'parse fbs from facebook response which lacks sig...' do
|
103
103
|
rg = RestGraph.new(:access_token => 'a', :secret => 'z')
|
104
104
|
rg.parse_fbs!(rg.fbs) .should.kind_of?(Hash)
|
105
105
|
rg.parse_fbs!(rg.fbs.sub(/sig\=\w+/, 'sig=abc')).should == nil
|
106
106
|
end
|
107
107
|
|
108
|
-
|
108
|
+
should 'generate correct fbs with additional parameters' do
|
109
109
|
rg = RestGraph.new(:access_token => 'a', :secret => 'z')
|
110
110
|
rg.data['expires'] = '1234'
|
111
111
|
rg.parse_fbs!(rg.fbs) .should.kind_of?(Hash)
|
data/test/test_serialize.rb
CHANGED
@@ -7,13 +7,22 @@ end
|
|
7
7
|
|
8
8
|
describe RestGraph do
|
9
9
|
after do
|
10
|
-
reset_webmock
|
10
|
+
WebMock.reset_webmock
|
11
11
|
RR.verify
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
should 'be serialized with lighten' do
|
15
|
+
engines = if RUBY_VERSION >= '1.9.2'
|
16
|
+
require 'psych'
|
17
|
+
YAML::ENGINE.yamler = 'syck' # TODO: probably a bug?
|
18
|
+
[Marshal, YAML, Psych]
|
19
|
+
elsif defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
|
20
|
+
[Marshal]
|
21
|
+
else
|
22
|
+
[YAML]
|
23
|
+
end
|
24
|
+
|
25
|
+
engines.each{ |engine|
|
17
26
|
test = lambda{ |obj| engine.load(engine.dump(obj)) }
|
18
27
|
rg = RestGraph.new(:log_handler => lambda{})
|
19
28
|
lambda{ test[rg] }.should.raise(TypeError)
|
@@ -0,0 +1,74 @@
|
|
1
|
+
|
2
|
+
if respond_to?(:require_relative, true)
|
3
|
+
require_relative 'common'
|
4
|
+
else
|
5
|
+
require File.dirname(__FILE__) + '/common'
|
6
|
+
end
|
7
|
+
|
8
|
+
require 'rest-graph/test_util'
|
9
|
+
|
10
|
+
describe RestGraph::TestUtil do
|
11
|
+
before do
|
12
|
+
RestGraph::TestUtil.setup
|
13
|
+
end
|
14
|
+
|
15
|
+
after do
|
16
|
+
RestGraph::TestUtil.teardown
|
17
|
+
end
|
18
|
+
|
19
|
+
should 'stub requests and store result and teardown do cleanup' do
|
20
|
+
RestGraph.new.get('me') .should == {'data' => []}
|
21
|
+
RestGraph::TestUtil.history .should ==
|
22
|
+
[[:get, "https://graph.facebook.com/me", nil]]
|
23
|
+
|
24
|
+
RestGraph::TestUtil.teardown
|
25
|
+
|
26
|
+
RestGraph::TestUtil.history.should == []
|
27
|
+
begin
|
28
|
+
RestGraph.new.get('me')
|
29
|
+
rescue => e
|
30
|
+
e.should.kind_of?(WebMock::NetConnectNotAllowedError)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
should 'have default response' do
|
35
|
+
default = {'meta' => []}
|
36
|
+
RestGraph::TestUtil.default_response = default
|
37
|
+
RestGraph.new.get('me') .should == default
|
38
|
+
end
|
39
|
+
|
40
|
+
should 'have default data' do
|
41
|
+
rg = RestGraph.new
|
42
|
+
rg.data['uid'] .should == '1234'
|
43
|
+
RestGraph::TestUtil.default_data = {'uid' => '4321'}
|
44
|
+
rg.data['uid'] .should == '4321'
|
45
|
+
RestGraph.new.data['uid'].should == '4321'
|
46
|
+
end
|
47
|
+
|
48
|
+
should 'be easy to stub data' do
|
49
|
+
response = {'data' => 'me'}
|
50
|
+
RestGraph::TestUtil.get('me'){ response }
|
51
|
+
RestGraph.new.get('me').should == response
|
52
|
+
RestGraph.new.get('he').should == RestGraph::TestUtil.default_response
|
53
|
+
end
|
54
|
+
|
55
|
+
should 'emulate login' do
|
56
|
+
RestGraph::TestUtil.login(1829)
|
57
|
+
rg = RestGraph.new
|
58
|
+
rg.data['uid'].should == '1829'
|
59
|
+
rg.authorized?.should == true
|
60
|
+
rg.get('me').should == RestGraph::TestUtil.user('1829')
|
61
|
+
end
|
62
|
+
|
63
|
+
should 'reset before login' do
|
64
|
+
RestGraph::TestUtil.login(1234).login(1829)
|
65
|
+
rg = RestGraph.new
|
66
|
+
rg.data['uid'].should == '1829'
|
67
|
+
rg.authorized?.should == true
|
68
|
+
rg.get('me').should == RestGraph::TestUtil.user('1829')
|
69
|
+
RestGraph::TestUtil.login(1234)
|
70
|
+
rg.data['uid'].should == '1234'
|
71
|
+
rg.authorized?.should == true
|
72
|
+
rg.get('me').should == RestGraph::TestUtil.user('1234')
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
if respond_to?(:require_relative, true)
|
3
|
+
require_relative 'common'
|
4
|
+
else
|
5
|
+
require File.dirname(__FILE__) + '/common'
|
6
|
+
end
|
7
|
+
|
8
|
+
describe RestGraph do
|
9
|
+
should 'respect timeout' do
|
10
|
+
stub_request(:get, 'https://graph.facebook.com/me').to_return(
|
11
|
+
lambda{ |r| sleep(0.05); '{}' })
|
12
|
+
e = nil
|
13
|
+
begin
|
14
|
+
RestGraph.new(:timeout => 0.01).get('me')
|
15
|
+
nil.should == 'timeout must be thrown'
|
16
|
+
rescue Timeout::Error => e
|
17
|
+
end
|
18
|
+
e.should.kind_of?(Timeout::Error)
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 1
|
7
|
-
-
|
7
|
+
- 6
|
8
8
|
- 0
|
9
|
-
version: 1.
|
9
|
+
version: 1.6.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Cardinal Blue
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-11-19 00:00:00 +08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -31,12 +31,27 @@ dependencies:
|
|
31
31
|
- 6
|
32
32
|
- 1
|
33
33
|
version: 1.6.1
|
34
|
-
type: :
|
34
|
+
type: :development
|
35
35
|
version_requirements: *id001
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
37
|
+
name: em-http-request
|
38
38
|
prerelease: false
|
39
39
|
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
- 2
|
47
|
+
- 15
|
48
|
+
version: 0.2.15
|
49
|
+
type: :development
|
50
|
+
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: rack
|
53
|
+
prerelease: false
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
55
|
none: false
|
41
56
|
requirements:
|
42
57
|
- - ">="
|
@@ -47,11 +62,11 @@ dependencies:
|
|
47
62
|
- 1
|
48
63
|
version: 1.2.1
|
49
64
|
type: :development
|
50
|
-
version_requirements: *
|
65
|
+
version_requirements: *id003
|
51
66
|
- !ruby/object:Gem::Dependency
|
52
67
|
name: yajl-ruby
|
53
68
|
prerelease: false
|
54
|
-
requirement: &
|
69
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
55
70
|
none: false
|
56
71
|
requirements:
|
57
72
|
- - ">="
|
@@ -62,11 +77,11 @@ dependencies:
|
|
62
77
|
- 8
|
63
78
|
version: 0.7.8
|
64
79
|
type: :development
|
65
|
-
version_requirements: *
|
80
|
+
version_requirements: *id004
|
66
81
|
- !ruby/object:Gem::Dependency
|
67
82
|
name: json
|
68
83
|
prerelease: false
|
69
|
-
requirement: &
|
84
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
70
85
|
none: false
|
71
86
|
requirements:
|
72
87
|
- - ">="
|
@@ -77,11 +92,11 @@ dependencies:
|
|
77
92
|
- 6
|
78
93
|
version: 1.4.6
|
79
94
|
type: :development
|
80
|
-
version_requirements: *
|
95
|
+
version_requirements: *id005
|
81
96
|
- !ruby/object:Gem::Dependency
|
82
97
|
name: json_pure
|
83
98
|
prerelease: false
|
84
|
-
requirement: &
|
99
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
85
100
|
none: false
|
86
101
|
requirements:
|
87
102
|
- - ">="
|
@@ -92,11 +107,11 @@ dependencies:
|
|
92
107
|
- 6
|
93
108
|
version: 1.4.6
|
94
109
|
type: :development
|
95
|
-
version_requirements: *
|
110
|
+
version_requirements: *id006
|
96
111
|
- !ruby/object:Gem::Dependency
|
97
112
|
name: ruby-hmac
|
98
113
|
prerelease: false
|
99
|
-
requirement: &
|
114
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
100
115
|
none: false
|
101
116
|
requirements:
|
102
117
|
- - ">="
|
@@ -107,11 +122,11 @@ dependencies:
|
|
107
122
|
- 0
|
108
123
|
version: 0.4.0
|
109
124
|
type: :development
|
110
|
-
version_requirements: *
|
125
|
+
version_requirements: *id007
|
111
126
|
- !ruby/object:Gem::Dependency
|
112
127
|
name: rr
|
113
128
|
prerelease: false
|
114
|
-
requirement: &
|
129
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
115
130
|
none: false
|
116
131
|
requirements:
|
117
132
|
- - ">="
|
@@ -119,29 +134,29 @@ dependencies:
|
|
119
134
|
segments:
|
120
135
|
- 1
|
121
136
|
- 0
|
122
|
-
-
|
123
|
-
version: 1.0.
|
137
|
+
- 2
|
138
|
+
version: 1.0.2
|
124
139
|
type: :development
|
125
|
-
version_requirements: *
|
140
|
+
version_requirements: *id008
|
126
141
|
- !ruby/object:Gem::Dependency
|
127
142
|
name: webmock
|
128
143
|
prerelease: false
|
129
|
-
requirement: &
|
144
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
130
145
|
none: false
|
131
146
|
requirements:
|
132
147
|
- - ">="
|
133
148
|
- !ruby/object:Gem::Version
|
134
149
|
segments:
|
135
150
|
- 1
|
136
|
-
-
|
137
|
-
-
|
138
|
-
version: 1.
|
151
|
+
- 6
|
152
|
+
- 1
|
153
|
+
version: 1.6.1
|
139
154
|
type: :development
|
140
|
-
version_requirements: *
|
155
|
+
version_requirements: *id009
|
141
156
|
- !ruby/object:Gem::Dependency
|
142
157
|
name: bacon
|
143
158
|
prerelease: false
|
144
|
-
requirement: &
|
159
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
145
160
|
none: false
|
146
161
|
requirements:
|
147
162
|
- - ">="
|
@@ -152,22 +167,22 @@ dependencies:
|
|
152
167
|
- 0
|
153
168
|
version: 1.1.0
|
154
169
|
type: :development
|
155
|
-
version_requirements: *
|
170
|
+
version_requirements: *id010
|
156
171
|
- !ruby/object:Gem::Dependency
|
157
172
|
name: bones
|
158
173
|
prerelease: false
|
159
|
-
requirement: &
|
174
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
160
175
|
none: false
|
161
176
|
requirements:
|
162
177
|
- - ">="
|
163
178
|
- !ruby/object:Gem::Version
|
164
179
|
segments:
|
165
180
|
- 3
|
166
|
-
-
|
167
|
-
-
|
168
|
-
version: 3.
|
181
|
+
- 5
|
182
|
+
- 1
|
183
|
+
version: 3.5.1
|
169
184
|
type: :development
|
170
|
-
version_requirements: *
|
185
|
+
version_requirements: *id011
|
171
186
|
description: A super simple Facebook Open Graph API client
|
172
187
|
email: dev (XD) cardinalblue.com
|
173
188
|
executables: []
|
@@ -175,6 +190,7 @@ executables: []
|
|
175
190
|
extensions: []
|
176
191
|
|
177
192
|
extra_rdoc_files:
|
193
|
+
- .specification
|
178
194
|
- CHANGES
|
179
195
|
- CONTRIBUTORS
|
180
196
|
- Gemfile
|
@@ -184,6 +200,7 @@ extra_rdoc_files:
|
|
184
200
|
- TODO
|
185
201
|
- rest-graph.gemspec
|
186
202
|
files:
|
203
|
+
- .specification
|
187
204
|
- CHANGES
|
188
205
|
- CONTRIBUTORS
|
189
206
|
- Gemfile
|
@@ -193,6 +210,8 @@ files:
|
|
193
210
|
- README.rdoc
|
194
211
|
- Rakefile
|
195
212
|
- TODO
|
213
|
+
- example/multi/config.ru
|
214
|
+
- example/multi/rainbows.rb
|
196
215
|
- example/rails2/README
|
197
216
|
- example/rails2/Rakefile
|
198
217
|
- example/rails2/app/controllers/application_controller.rb
|
@@ -217,6 +236,7 @@ files:
|
|
217
236
|
- lib/rest-graph/auto_load.rb
|
218
237
|
- lib/rest-graph/load_config.rb
|
219
238
|
- lib/rest-graph/rails_util.rb
|
239
|
+
- lib/rest-graph/test_util.rb
|
220
240
|
- lib/rest-graph/version.rb
|
221
241
|
- rest-graph.gemspec
|
222
242
|
- test/common.rb
|
@@ -228,12 +248,15 @@ files:
|
|
228
248
|
- test/test_handler.rb
|
229
249
|
- test/test_load_config.rb
|
230
250
|
- test/test_misc.rb
|
251
|
+
- test/test_multi.rb
|
231
252
|
- test/test_oauth.rb
|
232
253
|
- test/test_old.rb
|
233
254
|
- test/test_page.rb
|
234
255
|
- test/test_parse.rb
|
235
256
|
- test/test_rest-graph.rb
|
236
257
|
- test/test_serialize.rb
|
258
|
+
- test/test_test_util.rb
|
259
|
+
- test/test_timeout.rb
|
237
260
|
has_rdoc: true
|
238
261
|
homepage: http://github.com/cardinalblue/rest-graph
|
239
262
|
licenses: []
|
@@ -275,9 +298,12 @@ test_files:
|
|
275
298
|
- test/test_handler.rb
|
276
299
|
- test/test_load_config.rb
|
277
300
|
- test/test_misc.rb
|
301
|
+
- test/test_multi.rb
|
278
302
|
- test/test_oauth.rb
|
279
303
|
- test/test_old.rb
|
280
304
|
- test/test_page.rb
|
281
305
|
- test/test_parse.rb
|
282
306
|
- test/test_rest-graph.rb
|
283
307
|
- test/test_serialize.rb
|
308
|
+
- test/test_test_util.rb
|
309
|
+
- test/test_timeout.rb
|