rest-core 3.6.0 → 4.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.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +3 -0
  3. data/.travis.yml +0 -1
  4. data/CHANGES.md +28 -0
  5. data/Gemfile +0 -2
  6. data/README.md +14 -95
  7. data/Rakefile +16 -3
  8. data/example/simple.rb +1 -0
  9. data/example/use-cases.rb +15 -3
  10. data/lib/rest-core.rb +38 -75
  11. data/lib/rest-core/client/universal.rb +3 -1
  12. data/lib/rest-core/client_oauth1.rb +64 -59
  13. data/lib/rest-core/event.rb +9 -11
  14. data/lib/rest-core/middleware/auth_basic.rb +21 -21
  15. data/lib/rest-core/middleware/bypass.rb +8 -8
  16. data/lib/rest-core/middleware/cache.rb +94 -90
  17. data/lib/rest-core/middleware/clash_response.rb +15 -14
  18. data/lib/rest-core/middleware/common_logger.rb +27 -26
  19. data/lib/rest-core/middleware/default_headers.rb +8 -8
  20. data/lib/rest-core/middleware/default_payload.rb +8 -8
  21. data/lib/rest-core/middleware/default_query.rb +8 -8
  22. data/lib/rest-core/middleware/default_site.rb +12 -12
  23. data/lib/rest-core/middleware/defaults.rb +38 -38
  24. data/lib/rest-core/middleware/error_detector.rb +10 -10
  25. data/lib/rest-core/middleware/error_detector_http.rb +6 -4
  26. data/lib/rest-core/middleware/error_handler.rb +14 -14
  27. data/lib/rest-core/middleware/follow_redirect.rb +28 -27
  28. data/lib/rest-core/middleware/json_request.rb +13 -11
  29. data/lib/rest-core/middleware/json_response.rb +29 -28
  30. data/lib/rest-core/middleware/oauth1_header.rb +84 -83
  31. data/lib/rest-core/middleware/oauth2_header.rb +27 -25
  32. data/lib/rest-core/middleware/oauth2_query.rb +15 -15
  33. data/lib/rest-core/middleware/query_response.rb +14 -14
  34. data/lib/rest-core/middleware/retry.rb +25 -23
  35. data/lib/rest-core/middleware/smash_response.rb +15 -14
  36. data/lib/rest-core/middleware/timeout.rb +18 -19
  37. data/lib/rest-core/test.rb +1 -18
  38. data/lib/rest-core/util/clash.rb +38 -37
  39. data/lib/rest-core/util/config.rb +40 -39
  40. data/lib/rest-core/util/dalli_extension.rb +11 -10
  41. data/lib/rest-core/util/hmac.rb +9 -8
  42. data/lib/rest-core/util/json.rb +55 -54
  43. data/lib/rest-core/util/parse_link.rb +13 -12
  44. data/lib/rest-core/util/parse_query.rb +24 -22
  45. data/lib/rest-core/version.rb +1 -1
  46. data/rest-core.gemspec +121 -158
  47. data/test/test_cache.rb +2 -0
  48. data/test/test_default_payload.rb +1 -1
  49. data/test/test_error_handler.rb +5 -4
  50. data/test/test_timeout.rb +9 -8
  51. data/test/test_universal.rb +8 -0
  52. metadata +9 -73
  53. data/lib/rest-core/builder.rb +0 -162
  54. data/lib/rest-core/client.rb +0 -277
  55. data/lib/rest-core/client/simple.rb +0 -2
  56. data/lib/rest-core/engine.rb +0 -36
  57. data/lib/rest-core/engine/dry.rb +0 -9
  58. data/lib/rest-core/engine/http-client.rb +0 -41
  59. data/lib/rest-core/error.rb +0 -5
  60. data/lib/rest-core/event_source.rb +0 -137
  61. data/lib/rest-core/middleware.rb +0 -151
  62. data/lib/rest-core/promise.rb +0 -249
  63. data/lib/rest-core/thread_pool.rb +0 -131
  64. data/lib/rest-core/timer.rb +0 -58
  65. data/lib/rest-core/util/payload.rb +0 -173
  66. data/test/test_builder.rb +0 -40
  67. data/test/test_client.rb +0 -177
  68. data/test/test_event_source.rb +0 -159
  69. data/test/test_future.rb +0 -16
  70. data/test/test_httpclient.rb +0 -118
  71. data/test/test_payload.rb +0 -204
  72. data/test/test_promise.rb +0 -146
  73. data/test/test_simple.rb +0 -38
  74. data/test/test_thread_pool.rb +0 -10
@@ -1,16 +1,17 @@
1
1
 
2
- module RestCore; end
3
- module RestCore::ParseLink
4
- module_function
5
- # http://tools.ietf.org/html/rfc5988
6
- parname = '"?([^"]+)"?'
7
- LINKPARAM = /#{parname}=#{parname}/
8
- def parse_link link
9
- link.split(',').inject({}) do |r, value|
10
- uri, *pairs = value.split(';')
11
- params = Hash[pairs.map{ |p| p.strip.match(LINKPARAM)[1..2] }]
12
- r[params['rel']] = params.merge('uri' => uri[/<([^>]+)>/, 1])
13
- r
2
+ module RestCore
3
+ module ParseLink
4
+ module_function
5
+ # http://tools.ietf.org/html/rfc5988
6
+ parname = '"?([^"]+)"?'
7
+ LINKPARAM = /#{parname}=#{parname}/
8
+ def parse_link link
9
+ link.split(',').inject({}) do |r, value|
10
+ uri, *pairs = value.split(';')
11
+ params = Hash[pairs.map{ |p| p.strip.match(LINKPARAM)[1..2] }]
12
+ r[params['rel']] = params.merge('uri' => uri[/<([^>]+)>/, 1])
13
+ r
14
+ end
14
15
  end
15
16
  end
16
17
  end
@@ -1,31 +1,33 @@
1
1
 
2
- module RestCore; end
3
- module RestCore::ParseQuery
4
- module_function
5
- begin
6
- require 'rack/utils'
7
- def parse_query(qs, d = nil)
8
- Rack::Utils.parse_query(qs, d)
9
- end
10
- rescue LoadError
11
- # Stolen from Rack
12
- def parse_query(qs, d = nil)
13
- params = {}
2
+ module RestCore
3
+ module ParseQuery
4
+ module_function
5
+ begin
6
+ require 'rack/utils'
7
+ def parse_query(qs, d = nil)
8
+ Rack::Utils.parse_query(qs, d)
9
+ end
10
+ rescue LoadError
11
+ require 'uri'
12
+ # Stolen from Rack
13
+ def parse_query(qs, d = nil)
14
+ params = {}
14
15
 
15
- (qs || '').split(d ? /[#{d}] */n : /[&;] */n).each do |p|
16
- k, v = p.split('=', 2).map { |x| URI.decode_www_form_component(x) }
17
- if cur = params[k]
18
- if cur.class == Array
19
- params[k] << v
16
+ (qs || '').split(d ? /[#{d}] */n : /[&;] */n).each do |p|
17
+ k, v = p.split('=', 2).map { |x| URI.decode_www_form_component(x) }
18
+ if cur = params[k]
19
+ if cur.class == Array
20
+ params[k] << v
21
+ else
22
+ params[k] = [cur, v]
23
+ end
20
24
  else
21
- params[k] = [cur, v]
25
+ params[k] = v
22
26
  end
23
- else
24
- params[k] = v
25
27
  end
26
- end
27
28
 
28
- return params
29
+ return params
30
+ end
29
31
  end
30
32
  end
31
33
  end
@@ -1,4 +1,4 @@
1
1
 
2
2
  module RestCore
3
- VERSION = '3.6.0'
3
+ VERSION = '4.0.0'
4
4
  end
@@ -1,174 +1,137 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: rest-core 3.6.0 ruby lib
2
+ # stub: rest-core 4.0.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
- s.name = "rest-core"
6
- s.version = "3.6.0"
5
+ s.name = "rest-core".freeze
6
+ s.version = "4.0.0"
7
7
 
8
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
- s.require_paths = ["lib"]
10
- s.authors = ["Lin Jen-Shin (godfat)"]
11
- s.date = "2016-01-27"
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-more]: https://github.com/godfat/rest-more"
13
- s.email = ["godfat (XD) godfat.org"]
8
+ s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
+ s.require_paths = ["lib".freeze]
10
+ s.authors = ["Lin Jen-Shin (godfat)".freeze]
11
+ s.date = "2016-02-04"
12
+ s.description = "Various [rest-builder](https://github.com/godfat/rest-builder) middleware\nfor building REST clients.\n\nCheckout [rest-more](https://github.com/godfat/rest-more) for pre-built\nclients.".freeze
13
+ s.email = ["godfat (XD) godfat.org".freeze]
14
14
  s.files = [
15
- ".gitignore",
16
- ".gitmodules",
17
- ".travis.yml",
18
- "CHANGES.md",
19
- "Gemfile",
20
- "LICENSE",
21
- "NOTE.md",
22
- "README.md",
23
- "Rakefile",
24
- "TODO.md",
25
- "example/simple.rb",
26
- "example/use-cases.rb",
27
- "lib/rest-core.rb",
28
- "lib/rest-core/builder.rb",
29
- "lib/rest-core/client.rb",
30
- "lib/rest-core/client/simple.rb",
31
- "lib/rest-core/client/universal.rb",
32
- "lib/rest-core/client_oauth1.rb",
33
- "lib/rest-core/engine.rb",
34
- "lib/rest-core/engine/dry.rb",
35
- "lib/rest-core/engine/http-client.rb",
36
- "lib/rest-core/error.rb",
37
- "lib/rest-core/event.rb",
38
- "lib/rest-core/event_source.rb",
39
- "lib/rest-core/middleware.rb",
40
- "lib/rest-core/middleware/auth_basic.rb",
41
- "lib/rest-core/middleware/bypass.rb",
42
- "lib/rest-core/middleware/cache.rb",
43
- "lib/rest-core/middleware/clash_response.rb",
44
- "lib/rest-core/middleware/common_logger.rb",
45
- "lib/rest-core/middleware/default_headers.rb",
46
- "lib/rest-core/middleware/default_payload.rb",
47
- "lib/rest-core/middleware/default_query.rb",
48
- "lib/rest-core/middleware/default_site.rb",
49
- "lib/rest-core/middleware/defaults.rb",
50
- "lib/rest-core/middleware/error_detector.rb",
51
- "lib/rest-core/middleware/error_detector_http.rb",
52
- "lib/rest-core/middleware/error_handler.rb",
53
- "lib/rest-core/middleware/follow_redirect.rb",
54
- "lib/rest-core/middleware/json_request.rb",
55
- "lib/rest-core/middleware/json_response.rb",
56
- "lib/rest-core/middleware/oauth1_header.rb",
57
- "lib/rest-core/middleware/oauth2_header.rb",
58
- "lib/rest-core/middleware/oauth2_query.rb",
59
- "lib/rest-core/middleware/query_response.rb",
60
- "lib/rest-core/middleware/retry.rb",
61
- "lib/rest-core/middleware/smash_response.rb",
62
- "lib/rest-core/middleware/timeout.rb",
63
- "lib/rest-core/promise.rb",
64
- "lib/rest-core/test.rb",
65
- "lib/rest-core/thread_pool.rb",
66
- "lib/rest-core/timer.rb",
67
- "lib/rest-core/util/clash.rb",
68
- "lib/rest-core/util/config.rb",
69
- "lib/rest-core/util/dalli_extension.rb",
70
- "lib/rest-core/util/hmac.rb",
71
- "lib/rest-core/util/json.rb",
72
- "lib/rest-core/util/parse_link.rb",
73
- "lib/rest-core/util/parse_query.rb",
74
- "lib/rest-core/util/payload.rb",
75
- "lib/rest-core/util/smash.rb",
76
- "lib/rest-core/version.rb",
77
- "rest-core.gemspec",
78
- "task/README.md",
79
- "task/gemgem.rb",
80
- "test/config/rest-core.yaml",
81
- "test/test_auth_basic.rb",
82
- "test/test_builder.rb",
83
- "test/test_cache.rb",
84
- "test/test_clash.rb",
85
- "test/test_clash_response.rb",
86
- "test/test_client.rb",
87
- "test/test_client_oauth1.rb",
88
- "test/test_config.rb",
89
- "test/test_dalli_extension.rb",
90
- "test/test_default_headers.rb",
91
- "test/test_default_payload.rb",
92
- "test/test_default_query.rb",
93
- "test/test_default_site.rb",
94
- "test/test_error_detector.rb",
95
- "test/test_error_detector_http.rb",
96
- "test/test_error_handler.rb",
97
- "test/test_event_source.rb",
98
- "test/test_follow_redirect.rb",
99
- "test/test_future.rb",
100
- "test/test_httpclient.rb",
101
- "test/test_json_request.rb",
102
- "test/test_json_response.rb",
103
- "test/test_oauth1_header.rb",
104
- "test/test_oauth2_header.rb",
105
- "test/test_parse_link.rb",
106
- "test/test_payload.rb",
107
- "test/test_promise.rb",
108
- "test/test_query_response.rb",
109
- "test/test_retry.rb",
110
- "test/test_simple.rb",
111
- "test/test_smash.rb",
112
- "test/test_smash_response.rb",
113
- "test/test_thread_pool.rb",
114
- "test/test_timeout.rb",
115
- "test/test_universal.rb"]
116
- s.homepage = "https://github.com/godfat/rest-core"
117
- s.licenses = ["Apache License 2.0"]
118
- s.rubygems_version = "2.5.1"
119
- s.summary = "Modular Ruby clients interface for REST APIs."
15
+ ".gitignore".freeze,
16
+ ".gitmodules".freeze,
17
+ ".travis.yml".freeze,
18
+ "CHANGES.md".freeze,
19
+ "Gemfile".freeze,
20
+ "LICENSE".freeze,
21
+ "NOTE.md".freeze,
22
+ "README.md".freeze,
23
+ "Rakefile".freeze,
24
+ "TODO.md".freeze,
25
+ "example/simple.rb".freeze,
26
+ "example/use-cases.rb".freeze,
27
+ "lib/rest-core.rb".freeze,
28
+ "lib/rest-core/client/universal.rb".freeze,
29
+ "lib/rest-core/client_oauth1.rb".freeze,
30
+ "lib/rest-core/event.rb".freeze,
31
+ "lib/rest-core/middleware/auth_basic.rb".freeze,
32
+ "lib/rest-core/middleware/bypass.rb".freeze,
33
+ "lib/rest-core/middleware/cache.rb".freeze,
34
+ "lib/rest-core/middleware/clash_response.rb".freeze,
35
+ "lib/rest-core/middleware/common_logger.rb".freeze,
36
+ "lib/rest-core/middleware/default_headers.rb".freeze,
37
+ "lib/rest-core/middleware/default_payload.rb".freeze,
38
+ "lib/rest-core/middleware/default_query.rb".freeze,
39
+ "lib/rest-core/middleware/default_site.rb".freeze,
40
+ "lib/rest-core/middleware/defaults.rb".freeze,
41
+ "lib/rest-core/middleware/error_detector.rb".freeze,
42
+ "lib/rest-core/middleware/error_detector_http.rb".freeze,
43
+ "lib/rest-core/middleware/error_handler.rb".freeze,
44
+ "lib/rest-core/middleware/follow_redirect.rb".freeze,
45
+ "lib/rest-core/middleware/json_request.rb".freeze,
46
+ "lib/rest-core/middleware/json_response.rb".freeze,
47
+ "lib/rest-core/middleware/oauth1_header.rb".freeze,
48
+ "lib/rest-core/middleware/oauth2_header.rb".freeze,
49
+ "lib/rest-core/middleware/oauth2_query.rb".freeze,
50
+ "lib/rest-core/middleware/query_response.rb".freeze,
51
+ "lib/rest-core/middleware/retry.rb".freeze,
52
+ "lib/rest-core/middleware/smash_response.rb".freeze,
53
+ "lib/rest-core/middleware/timeout.rb".freeze,
54
+ "lib/rest-core/test.rb".freeze,
55
+ "lib/rest-core/util/clash.rb".freeze,
56
+ "lib/rest-core/util/config.rb".freeze,
57
+ "lib/rest-core/util/dalli_extension.rb".freeze,
58
+ "lib/rest-core/util/hmac.rb".freeze,
59
+ "lib/rest-core/util/json.rb".freeze,
60
+ "lib/rest-core/util/parse_link.rb".freeze,
61
+ "lib/rest-core/util/parse_query.rb".freeze,
62
+ "lib/rest-core/util/smash.rb".freeze,
63
+ "lib/rest-core/version.rb".freeze,
64
+ "rest-core.gemspec".freeze,
65
+ "task/README.md".freeze,
66
+ "task/gemgem.rb".freeze,
67
+ "test/config/rest-core.yaml".freeze,
68
+ "test/test_auth_basic.rb".freeze,
69
+ "test/test_cache.rb".freeze,
70
+ "test/test_clash.rb".freeze,
71
+ "test/test_clash_response.rb".freeze,
72
+ "test/test_client_oauth1.rb".freeze,
73
+ "test/test_config.rb".freeze,
74
+ "test/test_dalli_extension.rb".freeze,
75
+ "test/test_default_headers.rb".freeze,
76
+ "test/test_default_payload.rb".freeze,
77
+ "test/test_default_query.rb".freeze,
78
+ "test/test_default_site.rb".freeze,
79
+ "test/test_error_detector.rb".freeze,
80
+ "test/test_error_detector_http.rb".freeze,
81
+ "test/test_error_handler.rb".freeze,
82
+ "test/test_follow_redirect.rb".freeze,
83
+ "test/test_json_request.rb".freeze,
84
+ "test/test_json_response.rb".freeze,
85
+ "test/test_oauth1_header.rb".freeze,
86
+ "test/test_oauth2_header.rb".freeze,
87
+ "test/test_parse_link.rb".freeze,
88
+ "test/test_query_response.rb".freeze,
89
+ "test/test_retry.rb".freeze,
90
+ "test/test_smash.rb".freeze,
91
+ "test/test_smash_response.rb".freeze,
92
+ "test/test_timeout.rb".freeze,
93
+ "test/test_universal.rb".freeze]
94
+ s.homepage = "https://github.com/godfat/rest-core".freeze
95
+ s.licenses = ["Apache License 2.0".freeze]
96
+ s.rubygems_version = "2.5.2".freeze
97
+ s.summary = "Various [rest-builder](https://github.com/godfat/rest-builder) middleware".freeze
120
98
  s.test_files = [
121
- "test/test_auth_basic.rb",
122
- "test/test_builder.rb",
123
- "test/test_cache.rb",
124
- "test/test_clash.rb",
125
- "test/test_clash_response.rb",
126
- "test/test_client.rb",
127
- "test/test_client_oauth1.rb",
128
- "test/test_config.rb",
129
- "test/test_dalli_extension.rb",
130
- "test/test_default_headers.rb",
131
- "test/test_default_payload.rb",
132
- "test/test_default_query.rb",
133
- "test/test_default_site.rb",
134
- "test/test_error_detector.rb",
135
- "test/test_error_detector_http.rb",
136
- "test/test_error_handler.rb",
137
- "test/test_event_source.rb",
138
- "test/test_follow_redirect.rb",
139
- "test/test_future.rb",
140
- "test/test_httpclient.rb",
141
- "test/test_json_request.rb",
142
- "test/test_json_response.rb",
143
- "test/test_oauth1_header.rb",
144
- "test/test_oauth2_header.rb",
145
- "test/test_parse_link.rb",
146
- "test/test_payload.rb",
147
- "test/test_promise.rb",
148
- "test/test_query_response.rb",
149
- "test/test_retry.rb",
150
- "test/test_simple.rb",
151
- "test/test_smash.rb",
152
- "test/test_smash_response.rb",
153
- "test/test_thread_pool.rb",
154
- "test/test_timeout.rb",
155
- "test/test_universal.rb"]
99
+ "test/test_auth_basic.rb".freeze,
100
+ "test/test_cache.rb".freeze,
101
+ "test/test_clash.rb".freeze,
102
+ "test/test_clash_response.rb".freeze,
103
+ "test/test_client_oauth1.rb".freeze,
104
+ "test/test_config.rb".freeze,
105
+ "test/test_dalli_extension.rb".freeze,
106
+ "test/test_default_headers.rb".freeze,
107
+ "test/test_default_payload.rb".freeze,
108
+ "test/test_default_query.rb".freeze,
109
+ "test/test_default_site.rb".freeze,
110
+ "test/test_error_detector.rb".freeze,
111
+ "test/test_error_detector_http.rb".freeze,
112
+ "test/test_error_handler.rb".freeze,
113
+ "test/test_follow_redirect.rb".freeze,
114
+ "test/test_json_request.rb".freeze,
115
+ "test/test_json_response.rb".freeze,
116
+ "test/test_oauth1_header.rb".freeze,
117
+ "test/test_oauth2_header.rb".freeze,
118
+ "test/test_parse_link.rb".freeze,
119
+ "test/test_query_response.rb".freeze,
120
+ "test/test_retry.rb".freeze,
121
+ "test/test_smash.rb".freeze,
122
+ "test/test_smash_response.rb".freeze,
123
+ "test/test_timeout.rb".freeze,
124
+ "test/test_universal.rb".freeze]
156
125
 
157
126
  if s.respond_to? :specification_version then
158
127
  s.specification_version = 4
159
128
 
160
129
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
161
- s.add_runtime_dependency(%q<httpclient>, [">= 0"])
162
- s.add_runtime_dependency(%q<mime-types>, [">= 0"])
163
- s.add_runtime_dependency(%q<timers>, [">= 4.0.1"])
130
+ s.add_runtime_dependency(%q<rest-builder>.freeze, [">= 0"])
164
131
  else
165
- s.add_dependency(%q<httpclient>, [">= 0"])
166
- s.add_dependency(%q<mime-types>, [">= 0"])
167
- s.add_dependency(%q<timers>, [">= 4.0.1"])
132
+ s.add_dependency(%q<rest-builder>.freeze, [">= 0"])
168
133
  end
169
134
  else
170
- s.add_dependency(%q<httpclient>, [">= 0"])
171
- s.add_dependency(%q<mime-types>, [">= 0"])
172
- s.add_dependency(%q<timers>, [">= 4.0.1"])
135
+ s.add_dependency(%q<rest-builder>.freeze, [">= 0"])
173
136
  end
174
137
  end
@@ -137,6 +137,8 @@ describe RC::Cache do
137
137
  2.times{ c.get(*args).yield[RC::REQUEST_URI].should.eq uri }
138
138
  end
139
139
 
140
+ # TODO: Pork::Error: Missing assertions
141
+ # https://travis-ci.org/godfat/rest-core/jobs/105298775
140
142
  would 'preserve promise and preserve wrapped call' do
141
143
  c = json_client
142
144
  stub_request(:get, 'http://me').to_return(:body => '{"a":"b"}')
@@ -37,7 +37,7 @@ describe RC::DefaultPayload do
37
37
  would 'accept non-hash payload' do
38
38
  u = RC::Universal.new(:log_method => false)
39
39
  e = {RC::REQUEST_PAYLOAD => 'payload'}
40
- u.request_full(e, u.dry)[RC::REQUEST_PAYLOAD].should.eq('payload')
40
+ u.request_full( e, u.dry)[RC::REQUEST_PAYLOAD].should.eq('payload')
41
41
 
42
42
  u.payload = 'default'
43
43
  u.request_full( e, u.dry)[RC::REQUEST_PAYLOAD].should.eq('payload')
@@ -19,21 +19,22 @@ describe RC::ErrorHandler do
19
19
  would 'give an error with callback' do
20
20
  client.new.get('/', {}, RC::FAIL => [exp.new('fail')]){ |res|
21
21
  res.should.kind_of?(exp)
22
- }
22
+ }.wait
23
23
  end
24
24
  end
25
25
 
26
26
  describe 'error_handler gives an exception' do
27
27
  would 'raise an error with future' do
28
28
  lambda{
29
- client.new(:error_handler => lambda{ |res| exp.new }).
30
- get('/', {}, RC::FAIL => [true])
29
+ client.new(:error_handler => lambda{ |res| exp.new }).
30
+ get('/', {}, RC::FAIL => [true])
31
31
  }.should.raise(exp)
32
32
  end
33
33
 
34
34
  would 'give an error with callback' do
35
35
  client.new(:error_handler => lambda{ |res| exp.new }).
36
- get('/', {}, RC::FAIL => [true]){ |res| res.should.kind_of?(exp) }
36
+ get('/', {}, RC::FAIL => [true]){ |res| res.should.kind_of?(exp) }.
37
+ wait
37
38
  end
38
39
  end
39
40
 
@@ -1,6 +1,5 @@
1
1
 
2
2
  require 'rest-core/test'
3
- require 'rest-core/engine'
4
3
 
5
4
  describe RC::Timeout do
6
5
  app = RC::Timeout.new(RC::Dry.new, 0)
@@ -18,7 +17,7 @@ describe RC::Timeout do
18
17
  would 'run the process to setup timeout' do
19
18
  env = {'timeout' => 2}
20
19
  mock(app).process(env)
21
- app.call(env){|e| e[RC::TIMER].should.kind_of?(RC::Timer)}
20
+ app.call(env){|e| e[RC::TIMER].should.kind_of?(PromisePool::Timer)}
22
21
  end
23
22
 
24
23
  would "not raise timeout error if there's already an error" do
@@ -32,7 +31,7 @@ describe RC::Timeout do
32
31
  Object.new.instance_eval do
33
32
  @block = nil
34
33
  def on_timeout; @block = true; Thread.new{yield}; end
35
- def error ; 'boom'; end
34
+ def error ; RuntimeError.new('boom') ; end
36
35
  def cancel ; ; end
37
36
  def timer ; @block; end
38
37
  self
@@ -42,7 +41,7 @@ describe RC::Timeout do
42
41
  def sleeping_app
43
42
  RC::Builder.client do
44
43
  run Class.new(RC::Engine){
45
- def request _, _
44
+ def request _
46
45
  sleep
47
46
  end
48
47
  }
@@ -68,6 +67,8 @@ describe RC::Timeout do
68
67
  a.wait
69
68
  end
70
69
 
70
+ # TODO: ConcurrencyError: interrupted waiting for mutex
71
+ # https://travis-ci.org/godfat/rest-core/jobs/105298777
71
72
  would 'interrupt the task if timing out' do
72
73
  rd, wr = IO.pipe
73
74
  timer = Object.new.instance_eval do
@@ -80,14 +81,14 @@ describe RC::Timeout do
80
81
  @block = nil
81
82
  end
82
83
  end
83
- def error ; 'boom'; end
84
- def cancel ; ; end
85
- def timer ; @block; end
84
+ def error ; RuntimeError.new('boom'); end
85
+ def cancel ; ; end
86
+ def timer ; @block ; end
86
87
  self
87
88
  end
88
89
  a = RC::Builder.client do
89
90
  run Class.new(RC::Engine){
90
- def request _, env
91
+ def request env
91
92
  env['pipe'].puts
92
93
  sleep
93
94
  end