rest_easy 1.0.0 → 1.0.1
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 +7 -0
- data/lib/rest_easy/version.rb +1 -1
- data/lib/rest_easy.rb +29 -5
- data/spec/rest_easy_spec.rb +42 -48
- metadata +16 -26
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 585db11a520c92a13a825548000e6b4232530cc1
|
4
|
+
data.tar.gz: 2ecb104902a57a516560e1625e04512b76c67e4e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 147c770bacf4c00b5ed632afee678a82d693c3776023c14817d59680ce50739be07ab51a9acb2cae52e32222cb86fd645028f15874b35beaa59a586b47c101ba
|
7
|
+
data.tar.gz: 2a8951c303f14f4ed78cc5c340071a1acb5a63bd6889dd353194f6cddf3287959b1072f04b4769a14f4a03834b8179fb1bd9aece43b14e763c3f714c43dc79b4
|
data/lib/rest_easy/version.rb
CHANGED
data/lib/rest_easy.rb
CHANGED
@@ -3,26 +3,50 @@ require "rest_easy/version"
|
|
3
3
|
|
4
4
|
module RestEasy
|
5
5
|
extend self
|
6
|
-
|
6
|
+
|
7
|
+
#
|
8
|
+
# Wait until an API call block resolves to true or the timeout
|
9
|
+
# is reached. The default is 10 seconds.
|
10
|
+
#
|
11
|
+
# @param uri [String] API endpoint
|
12
|
+
# @param timeout [Fixnum] time to wait until false is returned
|
13
|
+
# @param opts [Hash] options yielded to block
|
14
|
+
# @param block [Proc] API call to evaluate
|
15
|
+
#
|
16
|
+
# @return [Boolean]
|
17
|
+
#
|
7
18
|
def get_until uri, timeout = 10, opts = {}, &block
|
8
19
|
iterate timeout do
|
9
20
|
result = RestClient.get(uri, opts){ |resp| yield resp }
|
10
|
-
return
|
21
|
+
return true if result
|
11
22
|
sleep 0.5
|
12
23
|
end
|
13
24
|
end
|
14
25
|
|
26
|
+
#
|
27
|
+
# Wait while an API call block resolves to true or the timeout
|
28
|
+
# is reached. The default is 10 seconds.
|
29
|
+
#
|
30
|
+
# @param uri [String] API endpoint
|
31
|
+
# @param timeout [Fixnum] time to wait until false is returned
|
32
|
+
# @param opts [Hash] options yielded to block
|
33
|
+
# @param block [Proc] API call to evaluate
|
34
|
+
#
|
35
|
+
# @return [Boolean]
|
36
|
+
#
|
15
37
|
def get_while uri, timeout = 10, opts = {}, &block
|
16
38
|
iterate timeout do
|
17
39
|
result = RestClient.get(uri, opts){ |resp| yield resp }
|
18
|
-
return
|
40
|
+
return true unless result
|
19
41
|
sleep 0.5
|
20
42
|
end
|
21
43
|
end
|
22
44
|
|
45
|
+
private
|
46
|
+
|
23
47
|
def iterate timeout, &block
|
24
|
-
|
25
|
-
yield block until Time.now >
|
48
|
+
timed_out = Time.now + timeout
|
49
|
+
yield block until Time.now > timed_out
|
26
50
|
false
|
27
51
|
end
|
28
52
|
end
|
data/spec/rest_easy_spec.rb
CHANGED
@@ -2,72 +2,66 @@ require 'rspec'
|
|
2
2
|
require 'rest_easy'
|
3
3
|
|
4
4
|
describe RestEasy do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
5
|
+
let(:uri){ "http://example.com" }
|
6
|
+
|
7
|
+
describe "#get_until" do
|
8
|
+
it "performs an HTTP GET through the REST client" do
|
9
|
+
expect(RestClient).to receive(:get).with(uri, Hash).and_return(true)
|
10
|
+
RestEasy.get_until(uri){ |resp| resp }
|
11
|
+
end
|
12
|
+
|
13
|
+
context "when given block resolves to true" do
|
14
|
+
it "returns true" do
|
15
|
+
expect(RestClient).to receive(:get).and_return(true)
|
16
|
+
expect(RestEasy.get_until(uri){ |resp| resp }).to be true
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
18
|
-
context "
|
19
|
-
|
20
|
+
context "when given block never resolves to true" do
|
21
|
+
before do
|
20
22
|
expect(RestClient).to receive(:get).twice.and_return(false)
|
21
|
-
expect(RestEasy.get_until('url', 1){ |r| r }).to be_falsey
|
22
23
|
end
|
23
24
|
|
24
|
-
it "
|
25
|
-
|
26
|
-
expect(RestClient).to receive(:get).exactly(20).times.and_return(false)
|
27
|
-
RestEasy.get_until('url'){ |r| r }
|
28
|
-
expect(Time.now - start_time).to be > 10
|
25
|
+
it "returns false" do
|
26
|
+
expect(RestEasy.get_until(uri, 1){ |resp| resp }).to be false
|
29
27
|
end
|
30
|
-
|
31
|
-
it "
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
expect(
|
28
|
+
|
29
|
+
it "waits to timeout" do
|
30
|
+
start = Time.now
|
31
|
+
RestEasy.get_until(uri, 1){ |resp| resp }
|
32
|
+
duration = Time.now - start
|
33
|
+
expect(duration).to be_between 1, 2
|
36
34
|
end
|
37
35
|
end
|
38
36
|
end
|
39
37
|
|
40
|
-
describe "
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
38
|
+
describe "#get_while" do
|
39
|
+
it "performs an HTTP GET through the REST client" do
|
40
|
+
expect(RestClient).to receive(:get).with(uri, Hash).and_return(false)
|
41
|
+
RestEasy.get_while(uri){ |resp| resp }
|
42
|
+
end
|
43
|
+
|
44
|
+
context "when given block continues to resolve to true" do
|
45
|
+
before do
|
46
|
+
expect(RestClient).to receive(:get).twice.and_return(true)
|
45
47
|
end
|
46
48
|
|
47
|
-
it "returns true after one iteration" do
|
48
|
-
expect(RestClient).to receive(:get).once.and_return(false)
|
49
|
-
expect(RestEasy.get_while('url'){ |r| r }).to be_truthy
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
context "with failing validation" do
|
54
49
|
it "returns false" do
|
55
|
-
expect(
|
56
|
-
expect(RestEasy.get_while('url', 1){ |r| r }).to be_falsey
|
50
|
+
expect(RestEasy.get_while(uri, 1){ |resp| resp }).to be false
|
57
51
|
end
|
58
52
|
|
59
|
-
it "
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
expect(
|
53
|
+
it "waits to timeout" do
|
54
|
+
start = Time.now
|
55
|
+
RestEasy.get_while(uri, 1){ |resp| resp }
|
56
|
+
duration = Time.now - start
|
57
|
+
expect(duration).to be_between 1, 2
|
64
58
|
end
|
59
|
+
end
|
65
60
|
|
66
|
-
|
67
|
-
|
68
|
-
expect(RestClient).to receive(:get).
|
69
|
-
RestEasy.get_while(
|
70
|
-
expect(Time.now - start_time).to be_within(1).of(3).and be > 3
|
61
|
+
context "when given block resolves to false" do
|
62
|
+
it "returns true" do
|
63
|
+
expect(RestClient).to receive(:get).and_return(false)
|
64
|
+
expect(RestEasy.get_while(uri){ |resp| resp }).to be true
|
71
65
|
end
|
72
66
|
end
|
73
67
|
end
|
metadata
CHANGED
@@ -1,78 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rest_easy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Johnson Denen
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-02-19 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rest-client
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: bundler
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '1.7'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - ~>
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '1.7'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rake
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- - ~>
|
45
|
+
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '10.0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- - ~>
|
52
|
+
- - "~>"
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '10.0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rspec
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
description: Test an API call until its response passes validation or times out.
|
@@ -82,7 +73,7 @@ executables: []
|
|
82
73
|
extensions: []
|
83
74
|
extra_rdoc_files: []
|
84
75
|
files:
|
85
|
-
- .gitignore
|
76
|
+
- ".gitignore"
|
86
77
|
- Gemfile
|
87
78
|
- LICENSE.txt
|
88
79
|
- README.md
|
@@ -94,27 +85,26 @@ files:
|
|
94
85
|
homepage: http://github.com/jdenen/rest_easy
|
95
86
|
licenses:
|
96
87
|
- MIT
|
88
|
+
metadata: {}
|
97
89
|
post_install_message:
|
98
90
|
rdoc_options: []
|
99
91
|
require_paths:
|
100
92
|
- lib
|
101
93
|
required_ruby_version: !ruby/object:Gem::Requirement
|
102
|
-
none: false
|
103
94
|
requirements:
|
104
|
-
- -
|
95
|
+
- - ">="
|
105
96
|
- !ruby/object:Gem::Version
|
106
97
|
version: '0'
|
107
98
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
-
none: false
|
109
99
|
requirements:
|
110
|
-
- -
|
100
|
+
- - ">="
|
111
101
|
- !ruby/object:Gem::Version
|
112
102
|
version: '0'
|
113
103
|
requirements: []
|
114
104
|
rubyforge_project:
|
115
|
-
rubygems_version:
|
105
|
+
rubygems_version: 2.2.2
|
116
106
|
signing_key:
|
117
|
-
specification_version:
|
107
|
+
specification_version: 4
|
118
108
|
summary: Test an API call until its response passes validation or times out.
|
119
109
|
test_files:
|
120
110
|
- spec/rest_easy_spec.rb
|