rest-graph 1.9.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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.summary = File.read("#{Gemgem.dir}/README").
17
- match(/DESCRIPTION:\n\n(.+?)\n\n/m)[1]
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
- File.read("#{dir}/.gitignore").split("\n").reject{ |pattern|
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("\x1b[35mExpected " \
131
- "\x1b[33mVERSION\x1b[35m=\x1b[33m#{ver}\x1b[m")
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("\x1b[35mExpected \x1b[33mVERSION\x1b[35m=\x1b[33m#{ver} " \
136
- "\x1b[35mbut got\n " \
137
- "\x1b[33mVERSION\x1b[35m=\x1b[33m#{ENV['VERSION']}\x1b[m")
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
- sh("#{Gem.ruby} -I lib -S bacon test/test_*.rb")
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 'Removed ignored files'
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
- Rake.application.options.show_task_pattern = /./
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
- TestHelper.attrs_no_callback.each{ |name|
11
- RestGraph.new.send(name).should ==
12
- RestGraph.send("default_#{name}")
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
- module BlahAttributes
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
- TestHelper.ensure_rollback{
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').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)
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: 1.9.1
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-06-07 00:00:00.000000000Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: rest-client
17
- requirement: &2153137640 !ruby/object:Gem::Requirement
18
- none: false
19
- requirements:
20
- - - ! '>='
21
- - !ruby/object:Gem::Version
22
- version: '0'
23
- type: :development
24
- prerelease: false
25
- version_requirements: *2153137640
26
- - !ruby/object:Gem::Dependency
27
- name: em-http-request
28
- requirement: &2153136940 !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: *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
- - CHANGES
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/godfat/
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.5
144
+ rubygems_version: 1.8.11
245
145
  signing_key:
246
146
  specification_version: 3
247
147
  summary: A lightweight Facebook Graph API client