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.
- checksums.yaml +4 -4
- data/.gitmodules +3 -0
- data/.travis.yml +0 -1
- data/CHANGES.md +28 -0
- data/Gemfile +0 -2
- data/README.md +14 -95
- data/Rakefile +16 -3
- data/example/simple.rb +1 -0
- data/example/use-cases.rb +15 -3
- data/lib/rest-core.rb +38 -75
- data/lib/rest-core/client/universal.rb +3 -1
- data/lib/rest-core/client_oauth1.rb +64 -59
- data/lib/rest-core/event.rb +9 -11
- data/lib/rest-core/middleware/auth_basic.rb +21 -21
- data/lib/rest-core/middleware/bypass.rb +8 -8
- data/lib/rest-core/middleware/cache.rb +94 -90
- data/lib/rest-core/middleware/clash_response.rb +15 -14
- data/lib/rest-core/middleware/common_logger.rb +27 -26
- data/lib/rest-core/middleware/default_headers.rb +8 -8
- data/lib/rest-core/middleware/default_payload.rb +8 -8
- data/lib/rest-core/middleware/default_query.rb +8 -8
- data/lib/rest-core/middleware/default_site.rb +12 -12
- data/lib/rest-core/middleware/defaults.rb +38 -38
- data/lib/rest-core/middleware/error_detector.rb +10 -10
- data/lib/rest-core/middleware/error_detector_http.rb +6 -4
- data/lib/rest-core/middleware/error_handler.rb +14 -14
- data/lib/rest-core/middleware/follow_redirect.rb +28 -27
- data/lib/rest-core/middleware/json_request.rb +13 -11
- data/lib/rest-core/middleware/json_response.rb +29 -28
- data/lib/rest-core/middleware/oauth1_header.rb +84 -83
- data/lib/rest-core/middleware/oauth2_header.rb +27 -25
- data/lib/rest-core/middleware/oauth2_query.rb +15 -15
- data/lib/rest-core/middleware/query_response.rb +14 -14
- data/lib/rest-core/middleware/retry.rb +25 -23
- data/lib/rest-core/middleware/smash_response.rb +15 -14
- data/lib/rest-core/middleware/timeout.rb +18 -19
- data/lib/rest-core/test.rb +1 -18
- data/lib/rest-core/util/clash.rb +38 -37
- data/lib/rest-core/util/config.rb +40 -39
- data/lib/rest-core/util/dalli_extension.rb +11 -10
- data/lib/rest-core/util/hmac.rb +9 -8
- data/lib/rest-core/util/json.rb +55 -54
- data/lib/rest-core/util/parse_link.rb +13 -12
- data/lib/rest-core/util/parse_query.rb +24 -22
- data/lib/rest-core/version.rb +1 -1
- data/rest-core.gemspec +121 -158
- data/test/test_cache.rb +2 -0
- data/test/test_default_payload.rb +1 -1
- data/test/test_error_handler.rb +5 -4
- data/test/test_timeout.rb +9 -8
- data/test/test_universal.rb +8 -0
- metadata +9 -73
- data/lib/rest-core/builder.rb +0 -162
- data/lib/rest-core/client.rb +0 -277
- data/lib/rest-core/client/simple.rb +0 -2
- data/lib/rest-core/engine.rb +0 -36
- data/lib/rest-core/engine/dry.rb +0 -9
- data/lib/rest-core/engine/http-client.rb +0 -41
- data/lib/rest-core/error.rb +0 -5
- data/lib/rest-core/event_source.rb +0 -137
- data/lib/rest-core/middleware.rb +0 -151
- data/lib/rest-core/promise.rb +0 -249
- data/lib/rest-core/thread_pool.rb +0 -131
- data/lib/rest-core/timer.rb +0 -58
- data/lib/rest-core/util/payload.rb +0 -173
- data/test/test_builder.rb +0 -40
- data/test/test_client.rb +0 -177
- data/test/test_event_source.rb +0 -159
- data/test/test_future.rb +0 -16
- data/test/test_httpclient.rb +0 -118
- data/test/test_payload.rb +0 -204
- data/test/test_promise.rb +0 -146
- data/test/test_simple.rb +0 -38
- data/test/test_thread_pool.rb +0 -10
@@ -1,16 +1,17 @@
|
|
1
1
|
|
2
|
-
module RestCore
|
3
|
-
module
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
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
|
3
|
-
module
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
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
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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] =
|
25
|
+
params[k] = v
|
22
26
|
end
|
23
|
-
else
|
24
|
-
params[k] = v
|
25
27
|
end
|
26
|
-
end
|
27
28
|
|
28
|
-
|
29
|
+
return params
|
30
|
+
end
|
29
31
|
end
|
30
32
|
end
|
31
33
|
end
|
data/lib/rest-core/version.rb
CHANGED
data/rest-core.gemspec
CHANGED
@@ -1,174 +1,137 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: rest-core
|
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 = "
|
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-
|
12
|
-
s.description = "
|
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/
|
29
|
-
"lib/rest-core/
|
30
|
-
"lib/rest-core/
|
31
|
-
"lib/rest-core/
|
32
|
-
"lib/rest-core/
|
33
|
-
"lib/rest-core/
|
34
|
-
"lib/rest-core/
|
35
|
-
"lib/rest-core/
|
36
|
-
"lib/rest-core/
|
37
|
-
"lib/rest-core/
|
38
|
-
"lib/rest-core/
|
39
|
-
"lib/rest-core/middleware.rb",
|
40
|
-
"lib/rest-core/middleware/
|
41
|
-
"lib/rest-core/middleware/
|
42
|
-
"lib/rest-core/middleware/
|
43
|
-
"lib/rest-core/middleware/
|
44
|
-
"lib/rest-core/middleware/
|
45
|
-
"lib/rest-core/middleware/
|
46
|
-
"lib/rest-core/middleware/
|
47
|
-
"lib/rest-core/middleware/
|
48
|
-
"lib/rest-core/middleware/
|
49
|
-
"lib/rest-core/middleware/
|
50
|
-
"lib/rest-core/middleware/
|
51
|
-
"lib/rest-core/middleware/
|
52
|
-
"lib/rest-core/middleware/
|
53
|
-
"lib/rest-core/middleware/
|
54
|
-
"lib/rest-core/
|
55
|
-
"lib/rest-core/
|
56
|
-
"lib/rest-core/
|
57
|
-
"lib/rest-core/
|
58
|
-
"lib/rest-core/
|
59
|
-
"lib/rest-core/
|
60
|
-
"lib/rest-core/
|
61
|
-
"lib/rest-core/
|
62
|
-
"lib/rest-core/
|
63
|
-
"lib/rest-core/
|
64
|
-
"
|
65
|
-
"
|
66
|
-
"
|
67
|
-
"
|
68
|
-
"
|
69
|
-
"
|
70
|
-
"
|
71
|
-
"
|
72
|
-
"
|
73
|
-
"
|
74
|
-
"
|
75
|
-
"
|
76
|
-
"
|
77
|
-
"
|
78
|
-
"
|
79
|
-
"
|
80
|
-
"test/
|
81
|
-
"test/
|
82
|
-
"test/
|
83
|
-
"test/
|
84
|
-
"test/
|
85
|
-
"test/
|
86
|
-
"test/
|
87
|
-
"test/
|
88
|
-
"test/
|
89
|
-
"test/
|
90
|
-
"test/
|
91
|
-
"test/
|
92
|
-
"test/
|
93
|
-
"test/
|
94
|
-
"
|
95
|
-
"
|
96
|
-
"
|
97
|
-
"
|
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/
|
123
|
-
"test/
|
124
|
-
"test/
|
125
|
-
"test/
|
126
|
-
"test/
|
127
|
-
"test/
|
128
|
-
"test/
|
129
|
-
"test/
|
130
|
-
"test/
|
131
|
-
"test/
|
132
|
-
"test/
|
133
|
-
"test/
|
134
|
-
"test/
|
135
|
-
"test/
|
136
|
-
"test/
|
137
|
-
"test/
|
138
|
-
"test/
|
139
|
-
"test/
|
140
|
-
"test/
|
141
|
-
"test/
|
142
|
-
"test/
|
143
|
-
"test/
|
144
|
-
"test/
|
145
|
-
"test/
|
146
|
-
"test/
|
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<
|
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<
|
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<
|
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
|
data/test/test_cache.rb
CHANGED
@@ -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')
|
data/test/test_error_handler.rb
CHANGED
@@ -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
|
-
|
30
|
-
|
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
|
|
data/test/test_timeout.rb
CHANGED
@@ -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?(
|
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 ;
|
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
|
91
|
+
def request env
|
91
92
|
env['pipe'].puts
|
92
93
|
sleep
|
93
94
|
end
|