rest-core 0.3.0 → 0.4.0.pre.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/CHANGES.md +55 -0
  2. data/README.md +101 -4
  3. data/bin/rib-rest-core +22 -0
  4. data/example/rails2/app/controllers/application_controller.rb +1 -0
  5. data/example/rails2/app/views/application/helper.html.erb +2 -1
  6. data/example/rails2/config/rest-core.yaml +4 -0
  7. data/example/rails2/test/functional/application_controller_test.rb +3 -1
  8. data/example/rails3/app/controllers/application_controller.rb +1 -0
  9. data/example/rails3/app/views/application/helper.html.erb +2 -1
  10. data/example/rails3/config/rest-core.yaml +4 -0
  11. data/example/rails3/test/functional/application_controller_test.rb +3 -1
  12. data/lib/rest-core/app/{ask.rb → dry.rb} +1 -1
  13. data/lib/rest-core/builder.rb +19 -3
  14. data/lib/rest-core/client/facebook/rails_util.rb +26 -37
  15. data/lib/rest-core/client/facebook.rb +19 -23
  16. data/lib/rest-core/client/flurry/rails_util.rb +72 -0
  17. data/lib/rest-core/client/flurry.rb +89 -0
  18. data/lib/rest-core/client/github.rb +3 -6
  19. data/lib/rest-core/client/linkedin.rb +3 -7
  20. data/lib/rest-core/client/mixi.rb +51 -0
  21. data/lib/rest-core/client/simple.rb +2 -0
  22. data/lib/rest-core/client/twitter.rb +5 -9
  23. data/lib/rest-core/client/universal.rb +18 -0
  24. data/lib/rest-core/client.rb +40 -82
  25. data/lib/rest-core/error.rb +5 -0
  26. data/lib/rest-core/middleware/bypass.rb +13 -0
  27. data/lib/rest-core/middleware/common_logger.rb +3 -2
  28. data/lib/rest-core/middleware/json_decode.rb +1 -0
  29. data/lib/rest-core/middleware/oauth2_header.rb +23 -0
  30. data/lib/rest-core/middleware.rb +2 -1
  31. data/lib/rest-core/test.rb +1 -3
  32. data/lib/rest-core/util/rails_util_util.rb +19 -0
  33. data/lib/rest-core/version.rb +1 -1
  34. data/lib/rest-core/wrapper.rb +10 -4
  35. data/lib/rest-core.rb +9 -2
  36. data/lib/rib/app/rest-core.rb +15 -0
  37. data/rest-core.gemspec +26 -8
  38. data/task/gemgem.rb +75 -9
  39. data/test/client/facebook/test_api.rb +3 -3
  40. data/test/client/facebook/test_misc.rb +3 -3
  41. data/test/test_builder.rb +14 -0
  42. data/test/test_client.rb +14 -0
  43. data/test/test_oauth1_header.rb +1 -1
  44. data/test/test_wrapper.rb +30 -0
  45. metadata +29 -11
data/rest-core.gemspec CHANGED
@@ -2,15 +2,16 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "rest-core"
5
- s.version = "0.3.0"
5
+ s.version = "0.4.0.pre.0"
6
6
 
7
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
7
+ s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") 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-03"
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"
11
+ s.date = "2011-09-18"
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
+ s.executables = ["rib-rest-core"]
14
15
  s.files = [
15
16
  ".gitignore",
16
17
  ".gitmodules",
@@ -23,6 +24,7 @@ Gem::Specification.new do |s|
23
24
  "README.md",
24
25
  "Rakefile",
25
26
  "TODO.md",
27
+ "bin/rib-rest-core",
26
28
  "example/facebook.rb",
27
29
  "example/github.rb",
28
30
  "example/linkedin.rb",
@@ -67,18 +69,25 @@ Gem::Specification.new do |s|
67
69
  "example/sinatra/config.ru",
68
70
  "example/twitter.rb",
69
71
  "lib/rest-core.rb",
70
- "lib/rest-core/app/ask.rb",
72
+ "lib/rest-core/app/dry.rb",
71
73
  "lib/rest-core/app/rest-client.rb",
72
74
  "lib/rest-core/builder.rb",
73
75
  "lib/rest-core/client.rb",
74
76
  "lib/rest-core/client/facebook.rb",
75
77
  "lib/rest-core/client/facebook/rails_util.rb",
78
+ "lib/rest-core/client/flurry.rb",
79
+ "lib/rest-core/client/flurry/rails_util.rb",
76
80
  "lib/rest-core/client/github.rb",
77
81
  "lib/rest-core/client/linkedin.rb",
82
+ "lib/rest-core/client/mixi.rb",
83
+ "lib/rest-core/client/simple.rb",
78
84
  "lib/rest-core/client/twitter.rb",
85
+ "lib/rest-core/client/universal.rb",
79
86
  "lib/rest-core/client_oauth1.rb",
87
+ "lib/rest-core/error.rb",
80
88
  "lib/rest-core/event.rb",
81
89
  "lib/rest-core/middleware.rb",
90
+ "lib/rest-core/middleware/bypass.rb",
82
91
  "lib/rest-core/middleware/cache.rb",
83
92
  "lib/rest-core/middleware/common_logger.rb",
84
93
  "lib/rest-core/middleware/default_headers.rb",
@@ -90,14 +99,17 @@ Gem::Specification.new do |s|
90
99
  "lib/rest-core/middleware/error_handler.rb",
91
100
  "lib/rest-core/middleware/json_decode.rb",
92
101
  "lib/rest-core/middleware/oauth1_header.rb",
102
+ "lib/rest-core/middleware/oauth2_header.rb",
93
103
  "lib/rest-core/middleware/oauth2_query.rb",
94
104
  "lib/rest-core/middleware/timeout.rb",
95
105
  "lib/rest-core/test.rb",
96
106
  "lib/rest-core/util/config.rb",
97
107
  "lib/rest-core/util/hmac.rb",
108
+ "lib/rest-core/util/rails_util_util.rb",
98
109
  "lib/rest-core/util/vendor.rb",
99
110
  "lib/rest-core/version.rb",
100
111
  "lib/rest-core/wrapper.rb",
112
+ "lib/rib/app/rest-core.rb",
101
113
  "pending/test_multi.rb",
102
114
  "pending/test_test_util.rb",
103
115
  "rest-core.gemspec",
@@ -118,11 +130,14 @@ Gem::Specification.new do |s|
118
130
  "test/client/facebook/test_serialize.rb",
119
131
  "test/client/facebook/test_timeout.rb",
120
132
  "test/client/twitter/test_api.rb",
121
- "test/test_oauth1_header.rb"]
133
+ "test/test_builder.rb",
134
+ "test/test_client.rb",
135
+ "test/test_oauth1_header.rb",
136
+ "test/test_wrapper.rb"]
122
137
  s.homepage = "https://github.com/cardinalblue/rest-core"
123
138
  s.require_paths = ["lib"]
124
139
  s.rubygems_version = "1.8.10"
125
- s.summary = "A modular Ruby REST client collection/infrastructure."
140
+ s.summary = "A modular Ruby REST client collection/infrastructure"
126
141
  s.test_files = [
127
142
  "test/client/facebook/test_api.rb",
128
143
  "test/client/facebook/test_cache.rb",
@@ -138,7 +153,10 @@ Gem::Specification.new do |s|
138
153
  "test/client/facebook/test_serialize.rb",
139
154
  "test/client/facebook/test_timeout.rb",
140
155
  "test/client/twitter/test_api.rb",
141
- "test/test_oauth1_header.rb"]
156
+ "test/test_builder.rb",
157
+ "test/test_client.rb",
158
+ "test/test_oauth1_header.rb",
159
+ "test/test_wrapper.rb"]
142
160
 
143
161
  if s.respond_to? :specification_version then
144
162
  s.specification_version = 3
data/task/gemgem.rb CHANGED
@@ -12,10 +12,6 @@ module Gemgem
12
12
  s.authors = ['Lin Jen-Shin (godfat)']
13
13
  s.email = ['godfat (XD) godfat.org']
14
14
 
15
- description = readme.
16
- match(/DESCRIPTION:\n\n(.+?)(?=\n\n[^\n]+:\n)/m)[1].
17
- lines.to_a
18
-
19
15
  s.description = description.join
20
16
  s.summary = description.first
21
17
 
@@ -34,13 +30,68 @@ module Gemgem
34
30
  path = %w[README.md README].find{ |name|
35
31
  File.exist?("#{Gemgem.dir}/#{name}")
36
32
  }
37
- if path
38
- File.read(path)
39
- else
40
- "DESCRIPTION:\n\n \n\nEND:\n"
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)/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
41
83
  end
42
84
  end
43
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
+
44
95
  def gem_tag
45
96
  "#{spec.name}-#{spec.version}"
46
97
  end
@@ -173,13 +224,28 @@ task 'test:shell', :RUBY_OPTS do |t, args|
173
224
  sh(cmd.compact.join(' '))
174
225
  end
175
226
 
227
+ desc 'Generate ann markdown'
228
+ task 'ann:md' => ['gem:spec'] do
229
+ puts Gemgem.ann_md
230
+ end
231
+
232
+ desc 'Generate ann html'
233
+ task 'ann:html' => ['gem:spec'] do
234
+ puts Gemgem.ann_html
235
+ end
236
+
237
+ desc 'Generate ann email'
238
+ task 'ann:email' => ['gem:spec'] do
239
+ puts Gemgem.ann_email
240
+ end
241
+
176
242
  desc 'Generate rdoc'
177
243
  task :doc => ['gem:spec'] do
178
244
  sh("yardoc -o rdoc --main README.md" \
179
245
  " --files #{Gemgem.spec.extra_rdoc_files.join(',')}")
180
246
  end
181
247
 
182
- desc 'Removed ignored files'
248
+ desc 'Remove ignored files'
183
249
  task :clean => ['gem:spec'] do
184
250
  trash = "~/.Trash/#{Gemgem.spec.name}/"
185
251
  sh "mkdir -p #{trash}" unless File.exist?(File.expand_path(trash))
@@ -41,9 +41,9 @@ describe RestCore::Facebook do
41
41
  {'User-Agent' => 'Ruby'})). # this is by ruby
42
42
  to_return(:body => '{"data": []}')
43
43
 
44
- RestCore::Facebook.new.request(
45
- {:headers => {'X-Forwarded-For' => '127.0.0.1'}},
46
- [:get, 'http://example.com']).should.eq({'data' => []})
44
+ RestCore::Facebook.new.get('http://example.com', {},
45
+ {:headers => {'X-Forwarded-For' => '127.0.0.1'}} ).
46
+ should.eq({'data' => []})
47
47
  end
48
48
 
49
49
  should 'post right' do
@@ -24,20 +24,20 @@ describe RestCore::Facebook do
24
24
  rg = RestCore::Facebook.new(:accept => 'text/html',
25
25
  :lang => 'zh-tw')
26
26
 
27
- headers = rg.ask.call(rg.send(:build_env))[RestCore::REQUEST_HEADERS]
27
+ headers = rg.dry.call(rg.send(:build_env))[RestCore::REQUEST_HEADERS]
28
28
  headers['Accept' ].should.eq 'text/html'
29
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
- (rg.ask.call(rg.send(:build_env))[RestCore::REQUEST_QUERY] || {}).
34
+ (rg.dry.call(rg.send(:build_env))[RestCore::REQUEST_QUERY] || {}).
35
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
- (rg.ask.call(rg.send(:build_env))[RestCore::REQUEST_QUERY] || {}).
40
+ (rg.dry.call(rg.send(:build_env))[RestCore::REQUEST_QUERY] || {}).
41
41
  should.eq({'access_token' => 'token'})
42
42
  end
43
43
 
@@ -0,0 +1,14 @@
1
+
2
+ require 'rest-core/test'
3
+
4
+ describe RestCore::Builder do
5
+ should 'default app is RestCore::RestClient' do
6
+ RestCore::Builder.client.new.app.class.should.eq RestCore::RestClient
7
+ end
8
+
9
+ should 'switch default_app to RestCore::Dry' do
10
+ builder = RestCore::Builder.dup
11
+ builder.default_app = RestCore::Dry
12
+ builder.client.new.app.class.should.eq RestCore::Dry
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+
2
+ require 'rest-core/test'
3
+
4
+ describe RestCore::Simple do
5
+ after do
6
+ WebMock.reset!
7
+ RR.verify
8
+ end
9
+
10
+ should 'do simple request' do
11
+ stub_request(:get, 'http://localhost/').to_return(:body => '[]')
12
+ RestCore::Simple.new.get('http://localhost/').should.eq '[]'
13
+ end
14
+ end
@@ -18,7 +18,7 @@ describe RestCore::Oauth1Header do
18
18
  'oauth_version' => '1.0' ,
19
19
  'oauth_signature_method' => 'HMAC-SHA1'}
20
20
 
21
- @auth = RestCore::Oauth1Header.new(RestCore::Ask.new,
21
+ @auth = RestCore::Oauth1Header.new(RestCore::Dry.new,
22
22
  nil, nil, nil,
23
23
  'GDdmIQH6jhtmLUypg82g',
24
24
  'MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98')
@@ -0,0 +1,30 @@
1
+
2
+ require 'rest-core/test'
3
+
4
+ describe RestCore::Wrapper do
5
+ should 'wrap around simple middleware' do
6
+ wrapper = RestCore::Bypass.dup
7
+ wrapper.send(:include, RestCore::Wrapper)
8
+ client = RestCore::Builder.client do
9
+ use wrapper do
10
+ use RestCore::Bypass
11
+ end
12
+ run RestCore::Dry
13
+ end
14
+
15
+ client.new.app.call({1=>2}).should.eq({1=>2})
16
+ end
17
+
18
+ should 'default app is RestCore::Dry' do
19
+ wrapper = Class.new
20
+ wrapper.send(:include, RestCore::Wrapper)
21
+ wrapper.new.wrapped.class.should.eq RestCore::Dry
22
+ end
23
+
24
+ should 'switch default_app to RestCore::RestClient' do
25
+ wrapper = Class.new
26
+ wrapper.send(:include, RestCore::Wrapper)
27
+ wrapper.default_app = RestCore::RestClient
28
+ wrapper.new.wrapped.class.should.eq RestCore::RestClient
29
+ end
30
+ 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
5
- prerelease:
4
+ version: 0.4.0.pre.0
5
+ prerelease: 6
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-03 00:00:00.000000000 Z
13
+ date: 2011-09-18 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rest-client
17
- requirement: &2164656700 !ruby/object:Gem::Requirement
17
+ requirement: &2152729180 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,8 +22,8 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2164656700
26
- description: ! 'A modular Ruby REST client collection/infrastructure.
25
+ version_requirements: *2152729180
26
+ description: ! 'A modular Ruby REST client collection/infrastructure
27
27
 
28
28
 
29
29
  In this era of web services and mashups, we have seen a blooming of REST
@@ -51,7 +51,8 @@ description: ! 'A modular Ruby REST client collection/infrastructure.
51
51
  [rest-graph]: http://github.com/cardinalblue/rest-graph'
52
52
  email:
53
53
  - dev (XD) cardinalblue.com
54
- executables: []
54
+ executables:
55
+ - rib-rest-core
55
56
  extensions: []
56
57
  extra_rdoc_files: []
57
58
  files:
@@ -66,6 +67,7 @@ files:
66
67
  - README.md
67
68
  - Rakefile
68
69
  - TODO.md
70
+ - bin/rib-rest-core
69
71
  - example/facebook.rb
70
72
  - example/github.rb
71
73
  - example/linkedin.rb
@@ -110,18 +112,25 @@ files:
110
112
  - example/sinatra/config.ru
111
113
  - example/twitter.rb
112
114
  - lib/rest-core.rb
113
- - lib/rest-core/app/ask.rb
115
+ - lib/rest-core/app/dry.rb
114
116
  - lib/rest-core/app/rest-client.rb
115
117
  - lib/rest-core/builder.rb
116
118
  - lib/rest-core/client.rb
117
119
  - lib/rest-core/client/facebook.rb
118
120
  - lib/rest-core/client/facebook/rails_util.rb
121
+ - lib/rest-core/client/flurry.rb
122
+ - lib/rest-core/client/flurry/rails_util.rb
119
123
  - lib/rest-core/client/github.rb
120
124
  - lib/rest-core/client/linkedin.rb
125
+ - lib/rest-core/client/mixi.rb
126
+ - lib/rest-core/client/simple.rb
121
127
  - lib/rest-core/client/twitter.rb
128
+ - lib/rest-core/client/universal.rb
122
129
  - lib/rest-core/client_oauth1.rb
130
+ - lib/rest-core/error.rb
123
131
  - lib/rest-core/event.rb
124
132
  - lib/rest-core/middleware.rb
133
+ - lib/rest-core/middleware/bypass.rb
125
134
  - lib/rest-core/middleware/cache.rb
126
135
  - lib/rest-core/middleware/common_logger.rb
127
136
  - lib/rest-core/middleware/default_headers.rb
@@ -133,14 +142,17 @@ files:
133
142
  - lib/rest-core/middleware/error_handler.rb
134
143
  - lib/rest-core/middleware/json_decode.rb
135
144
  - lib/rest-core/middleware/oauth1_header.rb
145
+ - lib/rest-core/middleware/oauth2_header.rb
136
146
  - lib/rest-core/middleware/oauth2_query.rb
137
147
  - lib/rest-core/middleware/timeout.rb
138
148
  - lib/rest-core/test.rb
139
149
  - lib/rest-core/util/config.rb
140
150
  - lib/rest-core/util/hmac.rb
151
+ - lib/rest-core/util/rails_util_util.rb
141
152
  - lib/rest-core/util/vendor.rb
142
153
  - lib/rest-core/version.rb
143
154
  - lib/rest-core/wrapper.rb
155
+ - lib/rib/app/rest-core.rb
144
156
  - pending/test_multi.rb
145
157
  - pending/test_test_util.rb
146
158
  - rest-core.gemspec
@@ -161,7 +173,10 @@ files:
161
173
  - test/client/facebook/test_serialize.rb
162
174
  - test/client/facebook/test_timeout.rb
163
175
  - test/client/twitter/test_api.rb
176
+ - test/test_builder.rb
177
+ - test/test_client.rb
164
178
  - test/test_oauth1_header.rb
179
+ - test/test_wrapper.rb
165
180
  homepage: https://github.com/cardinalblue/rest-core
166
181
  licenses: []
167
182
  post_install_message:
@@ -177,15 +192,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
177
192
  required_rubygems_version: !ruby/object:Gem::Requirement
178
193
  none: false
179
194
  requirements:
180
- - - ! '>='
195
+ - - ! '>'
181
196
  - !ruby/object:Gem::Version
182
- version: '0'
197
+ version: 1.3.1
183
198
  requirements: []
184
199
  rubyforge_project:
185
200
  rubygems_version: 1.8.10
186
201
  signing_key:
187
202
  specification_version: 3
188
- summary: A modular Ruby REST client collection/infrastructure.
203
+ summary: A modular Ruby REST client collection/infrastructure
189
204
  test_files:
190
205
  - test/client/facebook/test_api.rb
191
206
  - test/client/facebook/test_cache.rb
@@ -201,4 +216,7 @@ test_files:
201
216
  - test/client/facebook/test_serialize.rb
202
217
  - test/client/facebook/test_timeout.rb
203
218
  - test/client/twitter/test_api.rb
219
+ - test/test_builder.rb
220
+ - test/test_client.rb
204
221
  - test/test_oauth1_header.rb
222
+ - test/test_wrapper.rb