jeff 0.2.2 → 0.2.4
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/README.md +19 -7
- data/lib/jeff.rb +5 -4
- data/lib/jeff/version.rb +1 -1
- data/spec/jeff_spec.rb +18 -0
- metadata +8 -2
data/README.md
CHANGED
@@ -22,7 +22,7 @@ Customise default headers and parameters.
|
|
22
22
|
class Client
|
23
23
|
headers 'User-Agent' => 'Client'
|
24
24
|
params 'Service' => 'SomeService',
|
25
|
-
'Tag' =>
|
25
|
+
'Tag' => -> { tag }
|
26
26
|
|
27
27
|
attr_accessor :tag
|
28
28
|
end
|
@@ -80,7 +80,7 @@ class Logger
|
|
80
80
|
$stderr.puts [
|
81
81
|
params[:scheme],
|
82
82
|
'://',
|
83
|
-
params[:host]
|
83
|
+
params[:host],
|
84
84
|
'/',
|
85
85
|
params[:path],
|
86
86
|
'?',
|
@@ -95,9 +95,21 @@ client.get query: {},
|
|
95
95
|
instrumentor: Logger
|
96
96
|
```
|
97
97
|
|
98
|
-
|
98
|
+
### Miscellaneous
|
99
99
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
100
|
+
HTTP connections are persistent.
|
101
|
+
|
102
|
+
By default, Jeff will retry failed requests 4 times.
|
103
|
+
|
104
|
+
For more detailed configuration options, check out [excon][excon].
|
105
|
+
|
106
|
+
## Compatibility
|
107
|
+
|
108
|
+
**Jeff** is Ruby 1.9-compatible. It is tested against [MRI 1.9.3 plus JRuby and
|
109
|
+
Rubinius in 1.9 mode][travis].
|
110
|
+
|
111
|
+
[aws]: http://aws.amazon.com/
|
112
|
+
[excon]: https://github.com/geemus/excon
|
113
|
+
[sign]: http://docs.amazonwebservices.com/general/latest/gr/signature-version-2.html
|
114
|
+
[jeff]: http://f.cl.ly/items/0a3R3J0k1R2f423k1q2l/jeff.jpg
|
115
|
+
[travis]: http://travis-ci.org/#!/hakanensari/jeff
|
data/lib/jeff.rb
CHANGED
@@ -19,13 +19,14 @@ module Jeff
|
|
19
19
|
|
20
20
|
# Returns an Excon::Connection.
|
21
21
|
def connection
|
22
|
-
@connection ||= Excon.new endpoint, :
|
22
|
+
@connection ||= Excon.new endpoint, headers: default_headers,
|
23
|
+
idempotent: true
|
23
24
|
end
|
24
25
|
|
25
26
|
# Returns the Hash default request parameters.
|
26
27
|
def default_params
|
27
28
|
self.class.params.reduce({}) do |a, (k, v)|
|
28
|
-
a.update k => (v.is_a?(Proc) ?
|
29
|
+
a.update k => (v.is_a?(Proc) ? instance_exec(&v) : v)
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
@@ -138,10 +139,10 @@ module Jeff
|
|
138
139
|
# Returns the Hash parameters.
|
139
140
|
def params(hsh = nil)
|
140
141
|
@params ||= {
|
141
|
-
'AWSAccessKeyId' =>
|
142
|
+
'AWSAccessKeyId' => -> { key },
|
142
143
|
'SignatureVersion' => '2',
|
143
144
|
'SignatureMethod' => 'HmacSHA256',
|
144
|
-
'Timestamp' =>
|
145
|
+
'Timestamp' => -> { Time.now.utc.iso8601 }
|
145
146
|
}
|
146
147
|
@params.update hsh if hsh
|
147
148
|
|
data/lib/jeff/version.rb
CHANGED
data/spec/jeff_spec.rb
CHANGED
@@ -137,5 +137,23 @@ describe Jeff do
|
|
137
137
|
end
|
138
138
|
end
|
139
139
|
end
|
140
|
+
|
141
|
+
context 'given a failed request' do
|
142
|
+
before do
|
143
|
+
has_run = false
|
144
|
+
Excon.stub({ method: :get }) do |params|
|
145
|
+
if has_run
|
146
|
+
{ status: 200 }
|
147
|
+
else
|
148
|
+
has_run = true
|
149
|
+
raise Excon::Errors::SocketError.new Exception.new 'Mock Error'
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
it 'should retry' do
|
155
|
+
client.get(mock: true).status.should be 200
|
156
|
+
end
|
157
|
+
end
|
140
158
|
end
|
141
159
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jeff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: excon
|
@@ -122,12 +122,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
122
|
- - ! '>='
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
|
+
segments:
|
126
|
+
- 0
|
127
|
+
hash: 13761434509478082
|
125
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
129
|
none: false
|
127
130
|
requirements:
|
128
131
|
- - ! '>='
|
129
132
|
- !ruby/object:Gem::Version
|
130
133
|
version: '0'
|
134
|
+
segments:
|
135
|
+
- 0
|
136
|
+
hash: 13761434509478082
|
131
137
|
requirements: []
|
132
138
|
rubyforge_project:
|
133
139
|
rubygems_version: 1.8.23
|