rest_easy 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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