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/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