rest 0.1.3 → 0.2.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.
- data/VERSION.yml +2 -2
- data/lib/rest/client.rb +49 -6
- data/rest.gemspec +2 -2
- data/test/test_rest.rb +1 -1
- metadata +6 -6
data/VERSION.yml
CHANGED
data/lib/rest/client.rb
CHANGED
@@ -41,12 +41,14 @@ module Rest
|
|
41
41
|
|
42
42
|
class Client
|
43
43
|
|
44
|
+
attr_accessor :options
|
44
45
|
# options:
|
45
46
|
# - :gem => specify gem explicitly
|
46
47
|
#
|
47
48
|
def initialize(options={})
|
48
49
|
@logger = Logger.new(STDOUT)
|
49
50
|
@logger.level=Logger::INFO
|
51
|
+
@options = options
|
50
52
|
|
51
53
|
Rest.gem = options[:gem] if options[:gem]
|
52
54
|
|
@@ -58,24 +60,65 @@ module Rest
|
|
58
60
|
|
59
61
|
end
|
60
62
|
|
61
|
-
|
62
63
|
def get(url, req_hash={})
|
63
|
-
|
64
|
+
res = nil
|
65
|
+
perform_op do
|
66
|
+
res = @wrapper.get(url, req_hash)
|
67
|
+
end
|
68
|
+
return res
|
69
|
+
end
|
70
|
+
|
71
|
+
def perform_op(&blk)
|
72
|
+
max_retries = @options[:max_retries] || 5
|
73
|
+
current_retry = 0
|
74
|
+
success = false
|
75
|
+
res = nil
|
76
|
+
while current_retry < max_retries do
|
77
|
+
res = yield blk
|
78
|
+
#p res
|
79
|
+
#p res.code
|
80
|
+
if res.code == 503
|
81
|
+
pow = (4 ** (current_retry)) * 100 # milliseconds
|
82
|
+
#puts 'pow=' + pow.to_s
|
83
|
+
s = Random.rand * pow
|
84
|
+
#puts 's=' + s.to_s
|
85
|
+
sleep_secs = 1.0 * s / 1000.0
|
86
|
+
#puts 'sleep for ' + sleep_secs.to_s
|
87
|
+
current_retry += 1
|
88
|
+
@logger.debug "503 Error. Retrying #{current_retry} out of #{max_retries} max."
|
89
|
+
sleep sleep_secs
|
90
|
+
else
|
91
|
+
break
|
92
|
+
end
|
93
|
+
end
|
94
|
+
res
|
64
95
|
end
|
65
96
|
|
66
97
|
# req_hash options:
|
67
98
|
# - :body => post body
|
68
99
|
#
|
69
100
|
def post(url, req_hash={})
|
70
|
-
|
101
|
+
res = nil
|
102
|
+
perform_op do
|
103
|
+
res = @wrapper.post(url, req_hash)
|
104
|
+
end
|
105
|
+
return res
|
71
106
|
end
|
72
107
|
|
73
108
|
def put(url, req_hash={})
|
74
|
-
|
109
|
+
res = nil
|
110
|
+
perform_op do
|
111
|
+
res = @wrapper.put(url, req_hash)
|
112
|
+
end
|
113
|
+
return res
|
75
114
|
end
|
76
115
|
|
77
116
|
def delete(url, req_hash={})
|
78
|
-
|
117
|
+
res = nil
|
118
|
+
perform_op do
|
119
|
+
res = @wrapper.delete(url, req_hash)
|
120
|
+
end
|
121
|
+
return res
|
79
122
|
end
|
80
123
|
end
|
81
|
-
end
|
124
|
+
end
|
data/rest.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "rest"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Travis Reeder"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-03-05"
|
13
13
|
s.description = "Rest client wrapper that chooses best installed client."
|
14
14
|
s.email = "travis@iron.io"
|
15
15
|
s.extra_rdoc_files = [
|
data/test/test_rest.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-03-05 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
16
|
-
requirement: &
|
16
|
+
requirement: &23203180 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *23203180
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rest-client
|
27
|
-
requirement: &
|
27
|
+
requirement: &23202640 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *23202640
|
36
36
|
description: Rest client wrapper that chooses best installed client.
|
37
37
|
email: travis@iron.io
|
38
38
|
executables: []
|