rest-core 0.8.1 → 0.8.2

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/CHANGES.md CHANGED
@@ -1,9 +1,32 @@
1
1
  # CHANGES
2
2
 
3
+ ## rest-core 0.8.2 -- 2012-02-18
4
+
5
+ ### Enhancement
6
+
7
+ * [DefaultPayload] This middleware allows you to have default payload for
8
+ POST and PUT requests.
9
+
10
+ * [Client] Now `lighten` would give all Unserializable to nil instead of false
11
+
12
+ ### Bugs fixes
13
+
14
+ * [ErrorDetector] Now it would do nothing instead of crashing if there's no
15
+ any error_detector.
16
+
3
17
  ## rest-core 0.8.1 -- 2012-02-09
4
18
 
19
+ ### Enhancement
20
+
21
+ * [Wrapper] Introducing `Wrapper.default_app` (also `Builder.default_app`)
22
+ which you can change the default app from `RestClient` to other HTTP
23
+ clients.
24
+
5
25
  ### Bugs fixes
6
26
 
27
+ * [OAuth1Header] Correctly handle the signature when it comes to multipart
28
+ requests.
29
+
7
30
  * [ErrorDetectorHttp] Fixed argument error upon calling `lighten` for
8
31
  clients using this middleware. (e.g. rest-more's Twitter client)
9
32
 
data/README.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  by Cardinal Blue <http://cardinalblue.com>
4
4
 
5
+ Lin Jen-Shin ([godfat][]) had given a talk about rest-core on [RubyConf Taiwan 2011][talk].
6
+ The slide is in English, but the talk is in Mandarin.
7
+
8
+ [godfat]: https://github.com/godfat
9
+ [talk]: http://rubyconf.tw/2011/#6
10
+
5
11
  ## LINKS:
6
12
 
7
13
  * [github](https://github.com/cardinalblue/rest-core)
data/lib/rest-core.rb CHANGED
@@ -36,6 +36,7 @@ module RestCore
36
36
  autoload :CommonLogger , 'rest-core/middleware/common_logger'
37
37
  autoload :DefaultHeaders, 'rest-core/middleware/default_headers'
38
38
  autoload :DefaultQuery , 'rest-core/middleware/default_query'
39
+ autoload :DefaultPayload, 'rest-core/middleware/default_payload'
39
40
  autoload :DefaultSite , 'rest-core/middleware/default_site'
40
41
  autoload :Defaults , 'rest-core/middleware/defaults'
41
42
  autoload :ErrorDetector , 'rest-core/middleware/error_detector'
@@ -68,9 +68,9 @@ module RestCore::Client
68
68
  attributes.each{ |k, v| vv = case v;
69
69
  when Hash; lighten_hash(v)
70
70
  when Array; lighten_array(v)
71
- when *Unserializable; false
71
+ when *Unserializable; nil
72
72
  else v
73
- end
73
+ end
74
74
  send("#{k}=", vv)}
75
75
  initialize(o)
76
76
  @app, @dry = lighten_app(app), lighten_app(dry)
@@ -0,0 +1,11 @@
1
+
2
+ require 'rest-core/middleware'
3
+
4
+ class RestCore::DefaultPayload
5
+ def self.members; [:payload]; end
6
+ include RestCore::Middleware
7
+ def call env
8
+ app.call(env.merge(REQUEST_PAYLOAD =>
9
+ @payload.merge(payload(env)).merge(env[REQUEST_PAYLOAD] || {})))
10
+ end
11
+ end
@@ -7,7 +7,8 @@ class RestCore::ErrorDetector
7
7
 
8
8
  def call env
9
9
  response = app.call(env)
10
- if error = error_detector(env).call(response)
10
+ detector = error_detector(env)
11
+ if error = (detector && detector.call(response))
11
12
  fail(response, error)
12
13
  else
13
14
  response
@@ -1,4 +1,4 @@
1
1
 
2
2
  module RestCore
3
- VERSION = '0.8.1'
3
+ VERSION = '0.8.2'
4
4
  end
data/rest-core.gemspec CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "rest-core"
5
- s.version = "0.8.1"
5
+ s.version = "0.8.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = [
9
9
  "Cardinal Blue",
10
10
  "Lin Jen-Shin (godfat)"]
11
- s.date = "2012-02-09"
11
+ s.date = "2012-02-18"
12
12
  s.description = "Modular Ruby clients interface for REST APIs\n\nThere has been an explosion in the number of REST APIs available today.\nTo address the need for a way to access these APIs easily and elegantly,\nwe have developed [rest-core][], which consists of composable middleware\nthat allows you to build a REST client for any REST API. Or in the case of\ncommon APIs such as Facebook, Github, and Twitter, you can simply use the\ndedicated clients provided by [rest-more][].\n\n[rest-core]: http://github.com/cardinalblue/rest-core\n[rest-more]: http://github.com/cardinalblue/rest-more"
13
13
  s.email = ["dev (XD) cardinalblue.com"]
14
14
  s.files = [
@@ -42,6 +42,7 @@ Gem::Specification.new do |s|
42
42
  "lib/rest-core/middleware/cache.rb",
43
43
  "lib/rest-core/middleware/common_logger.rb",
44
44
  "lib/rest-core/middleware/default_headers.rb",
45
+ "lib/rest-core/middleware/default_payload.rb",
45
46
  "lib/rest-core/middleware/default_query.rb",
46
47
  "lib/rest-core/middleware/default_site.rb",
47
48
  "lib/rest-core/middleware/defaults.rb",
@@ -67,21 +68,25 @@ Gem::Specification.new do |s|
67
68
  "test/test_builder.rb",
68
69
  "test/test_client.rb",
69
70
  "test/test_client_oauth1.rb",
71
+ "test/test_error_detector.rb",
70
72
  "test/test_error_detector_http.rb",
71
73
  "test/test_oauth1_header.rb",
74
+ "test/test_payload.rb",
72
75
  "test/test_universal.rb",
73
76
  "test/test_wrapper.rb"]
74
77
  s.homepage = "https://github.com/cardinalblue/rest-core"
75
78
  s.require_paths = ["lib"]
76
- s.rubygems_version = "1.8.15"
79
+ s.rubygems_version = "1.8.16"
77
80
  s.summary = "Modular Ruby clients interface for REST APIs"
78
81
  s.test_files = [
79
82
  "test/test_auth_basic.rb",
80
83
  "test/test_builder.rb",
81
84
  "test/test_client.rb",
82
85
  "test/test_client_oauth1.rb",
86
+ "test/test_error_detector.rb",
83
87
  "test/test_error_detector_http.rb",
84
88
  "test/test_oauth1_header.rb",
89
+ "test/test_payload.rb",
85
90
  "test/test_universal.rb",
86
91
  "test/test_wrapper.rb"]
87
92
 
@@ -0,0 +1,15 @@
1
+
2
+ require 'rest-core/test'
3
+
4
+ describe RC::ErrorDetector do
5
+ should 'lighten' do
6
+ client = RC::Builder.client do
7
+ s = self.class # this is only for ruby 1.8!
8
+ use s::ErrorDetector
9
+ run s::Dry
10
+ end.new.lighten
11
+
12
+ client.attributes.should.key?(:error_detector)
13
+ client.app.call({}).should.eq({})
14
+ end
15
+ end
@@ -1,12 +1,15 @@
1
1
 
2
2
  require 'rest-core/test'
3
3
 
4
- describe RC::AuthBasic do
4
+ describe RC::ErrorDetectorHttp do
5
5
  should 'lighten' do
6
- RC::Builder.client do
6
+ client = RC::Builder.client do
7
7
  s = self.class # this is only for ruby 1.8!
8
8
  use s::ErrorDetectorHttp
9
9
  run s::Dry
10
- end.new.lighten.attributes.should.key?(:error_detector)
10
+ end.new.lighten
11
+
12
+ client.attributes.should.key?(:error_detector)
13
+ client.error_detector.should.kind_of?(Proc)
11
14
  end
12
15
  end
@@ -0,0 +1,29 @@
1
+
2
+ require 'rest-core/test'
3
+
4
+ describe RC::DefaultPayload do
5
+ before do
6
+ @app = RC::DefaultPayload.new(RC::Dry.new, {})
7
+ end
8
+
9
+ def app
10
+ @app
11
+ end
12
+
13
+ should 'do nothing' do
14
+ app.call({})[RC::REQUEST_PAYLOAD].should.eq({})
15
+ end
16
+
17
+ should 'merge payload' do
18
+ app.instance_eval{@payload = {'pay' => 'load'}}
19
+
20
+ app.call({}).should.eq({RC::REQUEST_PAYLOAD =>
21
+ {'pay' => 'load'}})
22
+
23
+ format = {'format' => 'json'}
24
+ env = {RC::REQUEST_PAYLOAD => format}
25
+
26
+ app.call(env).should.eq({RC::REQUEST_PAYLOAD =>
27
+ {'pay' => 'load'}.merge(format)})
28
+ end
29
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-02-09 00:00:00.000000000 Z
13
+ date: 2012-02-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rest-client
17
- requirement: &2168550920 !ruby/object:Gem::Requirement
17
+ requirement: &2157113980 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,7 +22,7 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2168550920
25
+ version_requirements: *2157113980
26
26
  description: ! 'Modular Ruby clients interface for REST APIs
27
27
 
28
28
 
@@ -78,6 +78,7 @@ files:
78
78
  - lib/rest-core/middleware/cache.rb
79
79
  - lib/rest-core/middleware/common_logger.rb
80
80
  - lib/rest-core/middleware/default_headers.rb
81
+ - lib/rest-core/middleware/default_payload.rb
81
82
  - lib/rest-core/middleware/default_query.rb
82
83
  - lib/rest-core/middleware/default_site.rb
83
84
  - lib/rest-core/middleware/defaults.rb
@@ -103,8 +104,10 @@ files:
103
104
  - test/test_builder.rb
104
105
  - test/test_client.rb
105
106
  - test/test_client_oauth1.rb
107
+ - test/test_error_detector.rb
106
108
  - test/test_error_detector_http.rb
107
109
  - test/test_oauth1_header.rb
110
+ - test/test_payload.rb
108
111
  - test/test_universal.rb
109
112
  - test/test_wrapper.rb
110
113
  homepage: https://github.com/cardinalblue/rest-core
@@ -127,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
130
  version: '0'
128
131
  requirements: []
129
132
  rubyforge_project:
130
- rubygems_version: 1.8.15
133
+ rubygems_version: 1.8.16
131
134
  signing_key:
132
135
  specification_version: 3
133
136
  summary: Modular Ruby clients interface for REST APIs
@@ -136,7 +139,10 @@ test_files:
136
139
  - test/test_builder.rb
137
140
  - test/test_client.rb
138
141
  - test/test_client_oauth1.rb
142
+ - test/test_error_detector.rb
139
143
  - test/test_error_detector_http.rb
140
144
  - test/test_oauth1_header.rb
145
+ - test/test_payload.rb
141
146
  - test/test_universal.rb
142
147
  - test/test_wrapper.rb
148
+ has_rdoc: