rest-graph 1.9.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +13 -0
- data/{CHANGES → CHANGES.md} +59 -23
- data/Gemfile +21 -16
- data/README.md +24 -14
- data/Rakefile +34 -20
- data/{TODO → TODO.md} +5 -3
- data/example/rails2/Gemfile +2 -2
- data/example/rails2/Rakefile +1 -0
- data/example/rails2/app/controllers/application_controller.rb +12 -3
- data/example/rails2/config/environment.rb +1 -1
- data/example/rails2/test/functional/application_controller_test.rb +28 -1
- data/example/rails3/Gemfile +2 -2
- data/example/rails3/app/controllers/application_controller.rb +12 -3
- data/example/rails3/config/boot.rb +6 -0
- data/example/rails3/config/environments/development.rb +0 -3
- data/example/rails3/test/functional/application_controller_test.rb +28 -1
- data/lib/rest-graph/config_util.rb +1 -1
- data/lib/rest-graph/core.rb +26 -8
- data/lib/rest-graph/rails_util.rb +6 -3
- data/lib/rest-graph/version.rb +1 -1
- data/rest-graph.gemspec +116 -152
- data/task/.gitignore +1 -0
- data/task/gemgem.rb +117 -18
- data/test/test_default.rb +8 -12
- data/test/test_parse.rb +4 -0
- data/test/test_timeout.rb +9 -9
- metadata +27 -127
- data/README +0 -371
data/task/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
*.rbc
|
data/task/gemgem.rb
CHANGED
@@ -11,23 +11,87 @@ module Gemgem
|
|
11
11
|
yield(spec = Gem::Specification.new{ |s|
|
12
12
|
s.authors = ['Lin Jen-Shin (godfat)']
|
13
13
|
s.email = ['godfat (XD) godfat.org']
|
14
|
-
s.homepage = "https://github.com/godfat/#{s.name}"
|
15
14
|
|
16
|
-
s.
|
17
|
-
|
18
|
-
s.description = s.summary
|
15
|
+
s.description = description.join
|
16
|
+
s.summary = description.first
|
19
17
|
|
20
|
-
s.extra_rdoc_files = %w[CHANGES CONTRIBUTORS LICENSE TODO]
|
21
|
-
s.rdoc_options = %w[--main README]
|
22
18
|
s.rubygems_version = Gem::VERSION
|
23
19
|
s.date = Time.now.strftime('%Y-%m-%d')
|
24
20
|
s.files = gem_files
|
25
21
|
s.test_files = gem_files.grep(%r{^test/(.+?/)*test_.+?\.rb$})
|
22
|
+
s.executables = Dir['bin/*'].map{ |f| File.basename(f) }
|
26
23
|
s.require_paths = %w[lib]
|
27
24
|
})
|
25
|
+
spec.homepage ||= "https://github.com/godfat/#{spec.name}"
|
28
26
|
spec
|
29
27
|
end
|
30
28
|
|
29
|
+
def readme
|
30
|
+
path = %w[README.md README].find{ |name|
|
31
|
+
File.exist?("#{Gemgem.dir}/#{name}")
|
32
|
+
}
|
33
|
+
@readme ||=
|
34
|
+
if path
|
35
|
+
ps = File.read(path).scan(/#+[^\n]+\n\n.+?(?=\n\n#+[^\n]+\n)/m)
|
36
|
+
ps.inject({'HEADER' => ps.first}){ |r, s, i|
|
37
|
+
r[s[/\w+/]] = s
|
38
|
+
r
|
39
|
+
}
|
40
|
+
else
|
41
|
+
{}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def description
|
46
|
+
@description ||= (readme['DESCRIPTION']||'').sub(/.+\n\n/, '').lines.to_a
|
47
|
+
end
|
48
|
+
|
49
|
+
def changes
|
50
|
+
path = %w[CHANGES.md CHANGES].find{ |name|
|
51
|
+
File.exist?("#{Gemgem.dir}/#{name}")
|
52
|
+
}
|
53
|
+
@changes ||=
|
54
|
+
if path
|
55
|
+
date = '\d+{4}\-\d+{2}\-\d{2}'
|
56
|
+
File.read(path).match(
|
57
|
+
/([^\n]+#{date}\n\n(.+?))(?=\n\n[^\n]+#{date}\n|\Z)/m)[1]
|
58
|
+
else
|
59
|
+
''
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def ann_md
|
64
|
+
"##{readme['HEADER'].sub(/([\w\-]+)/, "[\\1](#{spec.homepage})")}\n\n" \
|
65
|
+
"##{readme['DESCRIPTION'][/[^\n]+\n\n[^\n]+/]}\n\n" \
|
66
|
+
"### CHANGES:\n\n" \
|
67
|
+
"###{changes}\n\n" \
|
68
|
+
"##{readme['INSTALLATION']}\n\n" +
|
69
|
+
if readme['SYNOPSIS'] then "##{readme['SYNOPSIS']}" else '' end
|
70
|
+
end
|
71
|
+
|
72
|
+
def ann_html
|
73
|
+
gem 'nokogiri'
|
74
|
+
gem 'kramdown'
|
75
|
+
|
76
|
+
IO.popen('kramdown', 'r+') do |md|
|
77
|
+
md.puts Gemgem.ann_md
|
78
|
+
md.close_write
|
79
|
+
require 'nokogiri'
|
80
|
+
html = Nokogiri::XML.parse("<gemgem>#{md.read}</gemgem>")
|
81
|
+
html.css('*').each{ |n| n.delete('id') }
|
82
|
+
html.root.children.to_html
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def ann_email
|
87
|
+
"#{readme['HEADER'].sub(/([\w\-]+)/, "\\1 <#{spec.homepage}>")}\n\n" \
|
88
|
+
"#{readme['DESCRIPTION']}\n\n" \
|
89
|
+
"#{readme['INSTALLATION']}\n\n" +
|
90
|
+
if readme['SYNOPSIS'] then "##{readme['SYNOPSIS']}\n\n" else '' end +
|
91
|
+
"## CHANGES:\n\n" \
|
92
|
+
"##{changes}\n\n"
|
93
|
+
end
|
94
|
+
|
31
95
|
def gem_tag
|
32
96
|
"#{spec.name}-#{spec.version}"
|
33
97
|
end
|
@@ -82,7 +146,7 @@ module Gemgem
|
|
82
146
|
|
83
147
|
def ignore_patterns
|
84
148
|
@ignore_files ||= expand_patterns(
|
85
|
-
|
149
|
+
gitignore.split("\n").reject{ |pattern|
|
86
150
|
pattern.strip == ''
|
87
151
|
}).map{ |pattern| %r{^([^/]+/)*?#{Regexp.escape(pattern)}(/[^/]+)*?$} }
|
88
152
|
end
|
@@ -99,6 +163,14 @@ module Gemgem
|
|
99
163
|
end
|
100
164
|
}.flatten
|
101
165
|
end
|
166
|
+
|
167
|
+
def gitignore
|
168
|
+
if File.exist?(path = "#{dir}/.gitignore")
|
169
|
+
File.read(path)
|
170
|
+
else
|
171
|
+
''
|
172
|
+
end
|
173
|
+
end
|
102
174
|
end
|
103
175
|
|
104
176
|
namespace :gem do
|
@@ -127,23 +199,52 @@ task :check do
|
|
127
199
|
ver = Gemgem.spec.version.to_s
|
128
200
|
|
129
201
|
if ENV['VERSION'].nil?
|
130
|
-
puts("\
|
131
|
-
"\
|
202
|
+
puts("\e[35mExpected " \
|
203
|
+
"\e[33mVERSION\e[35m=\e[33m#{ver}\e[m")
|
132
204
|
exit(1)
|
133
205
|
|
134
206
|
elsif ENV['VERSION'] != ver
|
135
|
-
puts("\
|
136
|
-
"\
|
137
|
-
"\
|
207
|
+
puts("\e[35mExpected \e[33mVERSION\e[35m=\e[33m#{ver} " \
|
208
|
+
"\e[35mbut got\n " \
|
209
|
+
"\e[33mVERSION\e[35m=\e[33m#{ENV['VERSION']}\e[m")
|
138
210
|
exit(2)
|
139
211
|
end
|
140
212
|
end
|
141
213
|
|
142
214
|
end # of gem namespace
|
143
215
|
|
144
|
-
desc 'Run tests'
|
216
|
+
desc 'Run tests in memory'
|
145
217
|
task :test do
|
146
|
-
|
218
|
+
require 'bacon'
|
219
|
+
Bacon.extend(Bacon::TestUnitOutput)
|
220
|
+
Bacon.summary_on_exit
|
221
|
+
$LOAD_PATH.unshift('lib')
|
222
|
+
Dir['./test/**/test_*.rb'].each{ |file| require file[0..-4] }
|
223
|
+
end
|
224
|
+
|
225
|
+
desc 'Run tests with shell'
|
226
|
+
task 'test:shell', :RUBY_OPTS do |t, args|
|
227
|
+
files = Dir['test/**/test_*.rb'].join(' ')
|
228
|
+
|
229
|
+
cmd = [Gem.ruby, args[:RUBY_OPTS],
|
230
|
+
'-I', 'lib', '-S', 'bacon', '--quiet', files]
|
231
|
+
|
232
|
+
sh(cmd.compact.join(' '))
|
233
|
+
end
|
234
|
+
|
235
|
+
desc 'Generate ann markdown'
|
236
|
+
task 'ann:md' => ['gem:spec'] do
|
237
|
+
puts Gemgem.ann_md
|
238
|
+
end
|
239
|
+
|
240
|
+
desc 'Generate ann html'
|
241
|
+
task 'ann:html' => ['gem:spec'] do
|
242
|
+
puts Gemgem.ann_html
|
243
|
+
end
|
244
|
+
|
245
|
+
desc 'Generate ann email'
|
246
|
+
task 'ann:email' => ['gem:spec'] do
|
247
|
+
puts Gemgem.ann_email
|
147
248
|
end
|
148
249
|
|
149
250
|
desc 'Generate rdoc'
|
@@ -152,15 +253,13 @@ task :doc => ['gem:spec'] do
|
|
152
253
|
" --files #{Gemgem.spec.extra_rdoc_files.join(',')}")
|
153
254
|
end
|
154
255
|
|
155
|
-
desc '
|
256
|
+
desc 'Remove ignored files'
|
156
257
|
task :clean => ['gem:spec'] do
|
157
258
|
trash = "~/.Trash/#{Gemgem.spec.name}/"
|
158
259
|
sh "mkdir -p #{trash}" unless File.exist?(File.expand_path(trash))
|
159
260
|
Gemgem.ignored_files.each{ |file| sh "mv #{file} #{trash}" }
|
160
261
|
end
|
161
262
|
|
162
|
-
|
163
263
|
task :default do
|
164
|
-
|
165
|
-
Rake.application.display_tasks_and_comments
|
264
|
+
puts `#{Gem.ruby} -S #{$PROGRAM_NAME} -T`
|
166
265
|
end
|
data/test/test_default.rb
CHANGED
@@ -7,25 +7,21 @@ end
|
|
7
7
|
|
8
8
|
describe RestGraph do
|
9
9
|
should 'honor default attributes' do
|
10
|
-
|
11
|
-
|
12
|
-
RestGraph.send(
|
13
|
-
|
14
|
-
RestGraph.new.send(name).should ==
|
15
|
-
RestGraph::DefaultAttributes.send("default_#{name}")
|
10
|
+
RestGraph.members.reject{ |name|
|
11
|
+
name.to_s =~ /method$|handler$|detector$/ }.each{ |name|
|
12
|
+
RestGraph.new.send(name).should ==
|
13
|
+
RestGraph .send("default_#{name}")
|
16
14
|
}
|
17
15
|
end
|
18
16
|
|
19
17
|
should 'use module to override default attributes' do
|
20
|
-
|
18
|
+
klass = RestGraph.dup
|
19
|
+
klass.send(:extend, Module.new do
|
21
20
|
def default_app_id
|
22
21
|
'1829'
|
23
22
|
end
|
24
|
-
end
|
23
|
+
end)
|
25
24
|
|
26
|
-
|
27
|
-
RestGraph.send(:extend, BlahAttributes)
|
28
|
-
RestGraph.default_app_id.should == '1829'
|
29
|
-
}
|
25
|
+
klass.new.app_id.should == '1829'
|
30
26
|
end
|
31
27
|
end
|
data/test/test_parse.rb
CHANGED
@@ -100,6 +100,10 @@ describe RestGraph do
|
|
100
100
|
rg.data .should == {}
|
101
101
|
end
|
102
102
|
|
103
|
+
should 'parse invalid signed_request' do
|
104
|
+
RestGraph.new.parse_signed_request!('bad').should == nil
|
105
|
+
end
|
106
|
+
|
103
107
|
should 'fallback to ruby-hmac if Digest.new raise an runtime error' do
|
104
108
|
key, data = 'top', 'secret'
|
105
109
|
digest = OpenSSL::HMAC.digest('sha256', key, data)
|
data/test/test_timeout.rb
CHANGED
@@ -6,16 +6,16 @@ else
|
|
6
6
|
end
|
7
7
|
|
8
8
|
describe RestGraph do
|
9
|
+
after do
|
10
|
+
WebMock.reset!
|
11
|
+
RR.verify
|
12
|
+
end
|
13
|
+
|
9
14
|
should 'respect timeout' do
|
10
|
-
stub_request(:get, 'https://graph.facebook.com/me').
|
11
|
-
|
12
|
-
|
13
|
-
|
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)
|
15
|
+
stub_request(:get, 'https://graph.facebook.com/me').
|
16
|
+
to_return(:body => '{}')
|
17
|
+
mock.proxy(Timeout).timeout(numeric)
|
18
|
+
RestGraph.new.get('me').should == {}
|
19
19
|
end
|
20
20
|
|
21
21
|
should 'override timeout' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rest-graph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,139 +10,39 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
requirements:
|
31
|
-
- - ! '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: *2153136940
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rack
|
39
|
-
requirement: &2153136260 !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: *2153136260
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: yajl-ruby
|
50
|
-
requirement: &2153135660 !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: *2153135660
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: json
|
61
|
-
requirement: &2153135040 !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: *2153135040
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: json_pure
|
72
|
-
requirement: &2153134480 !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: *2153134480
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: ruby-hmac
|
83
|
-
requirement: &2153118560 !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: *2153118560
|
92
|
-
- !ruby/object:Gem::Dependency
|
93
|
-
name: webmock
|
94
|
-
requirement: &2153118020 !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: *2153118020
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: bacon
|
105
|
-
requirement: &2153117440 !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: *2153117440
|
114
|
-
- !ruby/object:Gem::Dependency
|
115
|
-
name: rr
|
116
|
-
requirement: &2153116840 !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: *2153116840
|
125
|
-
description: A lightweight Facebook Graph API client
|
13
|
+
date: 2011-10-08 00:00:00.000000000Z
|
14
|
+
dependencies: []
|
15
|
+
description: ! 'A lightweight Facebook Graph API client
|
16
|
+
|
17
|
+
|
18
|
+
We have moved the development from rest-graph to [rest-core][].
|
19
|
+
|
20
|
+
By now on, we would only fix bugs in rest-graph rather than adding
|
21
|
+
|
22
|
+
features, and we would only backport important changes from rest-core
|
23
|
+
|
24
|
+
once in a period. If you want the latest goodies, please see [rest-core][]
|
25
|
+
|
26
|
+
Otherwise, you can stay with rest-graph with bugs fixes.
|
27
|
+
|
28
|
+
|
29
|
+
[rest-core]: https://github.com/cardinalblue/rest-core'
|
126
30
|
email:
|
127
31
|
- dev (XD) cardinalblue.com
|
128
32
|
executables: []
|
129
33
|
extensions: []
|
130
|
-
extra_rdoc_files:
|
131
|
-
- CHANGES
|
132
|
-
- CONTRIBUTORS
|
133
|
-
- LICENSE
|
134
|
-
- TODO
|
34
|
+
extra_rdoc_files: []
|
135
35
|
files:
|
136
36
|
- .gitignore
|
137
37
|
- .gitmodules
|
138
|
-
-
|
38
|
+
- .travis.yml
|
39
|
+
- CHANGES.md
|
139
40
|
- CONTRIBUTORS
|
140
41
|
- Gemfile
|
141
42
|
- LICENSE
|
142
|
-
- README
|
143
43
|
- README.md
|
144
44
|
- Rakefile
|
145
|
-
- TODO
|
45
|
+
- TODO.md
|
146
46
|
- doc/ToC.md
|
147
47
|
- doc/dependency.md
|
148
48
|
- doc/design.md
|
@@ -178,6 +78,7 @@ files:
|
|
178
78
|
- example/rails3/app/views/application/helper.html.erb
|
179
79
|
- example/rails3/config.ru
|
180
80
|
- example/rails3/config/application.rb
|
81
|
+
- example/rails3/config/boot.rb
|
181
82
|
- example/rails3/config/environment.rb
|
182
83
|
- example/rails3/config/environments/development.rb
|
183
84
|
- example/rails3/config/environments/production.rb
|
@@ -199,6 +100,7 @@ files:
|
|
199
100
|
- lib/rest-graph/test_util.rb
|
200
101
|
- lib/rest-graph/version.rb
|
201
102
|
- rest-graph.gemspec
|
103
|
+
- task/.gitignore
|
202
104
|
- task/gemgem.rb
|
203
105
|
- test/common.rb
|
204
106
|
- test/config/rest-graph.yaml
|
@@ -219,12 +121,10 @@ files:
|
|
219
121
|
- test/test_serialize.rb
|
220
122
|
- test/test_test_util.rb
|
221
123
|
- test/test_timeout.rb
|
222
|
-
homepage: https://github.com/
|
124
|
+
homepage: https://github.com/cardinalblue/rest-graph
|
223
125
|
licenses: []
|
224
126
|
post_install_message:
|
225
|
-
rdoc_options:
|
226
|
-
- --main
|
227
|
-
- README
|
127
|
+
rdoc_options: []
|
228
128
|
require_paths:
|
229
129
|
- lib
|
230
130
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -241,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
241
141
|
version: '0'
|
242
142
|
requirements: []
|
243
143
|
rubyforge_project:
|
244
|
-
rubygems_version: 1.8.
|
144
|
+
rubygems_version: 1.8.11
|
245
145
|
signing_key:
|
246
146
|
specification_version: 3
|
247
147
|
summary: A lightweight Facebook Graph API client
|