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 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
@@ -1,3 +1,3 @@
1
1
  module RestEasy
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
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 result if result
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 !result unless result
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
- end_time = Time.now + timeout
25
- yield block until Time.now > end_time
48
+ timed_out = Time.now + timeout
49
+ yield block until Time.now > timed_out
26
50
  false
27
51
  end
28
52
  end
@@ -2,72 +2,66 @@ require 'rspec'
2
2
  require 'rest_easy'
3
3
 
4
4
  describe RestEasy do
5
- describe ".get_until" do
6
- context "with passing validation" do
7
- it "passes uri and options to RestClient" do
8
- expect(RestClient).to receive(:get).with('url', header: 'header').once.and_return(true)
9
- RestEasy.get_until('url', 1, header: 'header'){ |r| r }
10
- end
11
-
12
- it "returns true after one iteration" do
13
- expect(RestClient).to receive(:get).once.and_return(true)
14
- expect(RestEasy.get_until('url'){ |r| r }).to be_truthy
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 "with failing validation" do
19
- it "returns false" do
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 "times out after 10 seconds default" do
25
- start_time = Time.now
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 "times out after n seconds" do
32
- start_time = Time.now
33
- expect(RestClient).to receive(:get).exactly(6).times.and_return(false)
34
- RestEasy.get_until('url', 3){ |r| r }
35
- expect(Time.now - start_time).to be_within(1).of(3).and be > 3
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 ".get_while" do
41
- context "with passing validation" do
42
- it "passes uri and options to RestClient" do
43
- expect(RestClient).to receive(:get).with('url', header: 'header').once.and_return(false)
44
- RestEasy.get_while('url', 1, header: 'header'){ |r| r }
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(RestClient).to receive(:get).twice.and_return(true)
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 "times out after 10 seconds by default" do
60
- start_time = Time.now
61
- expect(RestClient).to receive(:get).exactly(20).times.and_return(true)
62
- RestEasy.get_while('url'){ |r| r }
63
- expect(Time.now - start_time).to be > 10
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
- it "times out after n seconds" do
67
- start_time = Time.now
68
- expect(RestClient).to receive(:get).exactly(6).times.and_return(true)
69
- RestEasy.get_while('url', 3){ |r| r }
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.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: 2014-11-03 00:00:00.000000000 Z
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: 1.8.23.2
105
+ rubygems_version: 2.2.2
116
106
  signing_key:
117
- specification_version: 3
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