weary 1.1.0 → 1.1.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.
- data/Gemfile.lock +1 -1
- data/lib/weary/client.rb +7 -0
- data/lib/weary/middleware/oauth.rb +17 -1
- data/lib/weary/request.rb +16 -5
- data/lib/weary/requestable.rb +2 -2
- data/lib/weary/version.rb +1 -1
- data/spec/weary/client_spec.rb +21 -0
- metadata +8 -2
data/Gemfile.lock
CHANGED
data/lib/weary/client.rb
CHANGED
@@ -207,10 +207,17 @@ module Weary
|
|
207
207
|
parameters = parameters.first || {}
|
208
208
|
@defaults ||= {}
|
209
209
|
request = resource.request(@defaults.merge(parameters), &block)
|
210
|
+
self.pass_values_onto_requestable(request)
|
210
211
|
request
|
211
212
|
end
|
212
213
|
end
|
213
214
|
end
|
214
215
|
|
216
|
+
include Weary::Requestable
|
217
|
+
|
218
|
+
def initialize
|
219
|
+
yield self if block_given?
|
220
|
+
end
|
221
|
+
|
215
222
|
end
|
216
223
|
end
|
@@ -20,11 +20,27 @@ module Weary
|
|
20
20
|
|
21
21
|
def sign(env)
|
22
22
|
req = Rack::Request.new(env)
|
23
|
+
post_body = req.body.read
|
24
|
+
req.body.rewind
|
23
25
|
SimpleOAuth::Header.new req.request_method,
|
24
26
|
req.url,
|
25
|
-
|
27
|
+
request_body_to_hash(post_body),
|
26
28
|
@oauth
|
27
29
|
end
|
30
|
+
|
31
|
+
# Stolen from Rack::Utils
|
32
|
+
def request_body_to_hash(qs, d = nil)
|
33
|
+
params = Rack::Utils::KeySpaceConstrainedParams.new
|
34
|
+
default_sep = /[&;] */n
|
35
|
+
|
36
|
+
(qs || '').split(d ? /[#{d}] */n : default_sep).each do |p|
|
37
|
+
k, v = p.split('=', 2).map { |s| Rack::Utils.unescape(s, defined?(::Encoding) ? Encoding::BINARY : nil) }
|
38
|
+
|
39
|
+
Rack::Utils.normalize_params(params, k, v)
|
40
|
+
end
|
41
|
+
|
42
|
+
return params.to_params_hash
|
43
|
+
end
|
28
44
|
end
|
29
45
|
end
|
30
46
|
end
|
data/lib/weary/request.rb
CHANGED
@@ -70,7 +70,7 @@ module Weary
|
|
70
70
|
if !parameters.nil?
|
71
71
|
if ["POST", "PUT"].include? method
|
72
72
|
@body = query_params_from_hash(parameters)
|
73
|
-
body
|
73
|
+
body StringIO.new(@body)
|
74
74
|
use Weary::Middleware::ContentType
|
75
75
|
else
|
76
76
|
uri.query_values = parameters
|
@@ -123,10 +123,21 @@ module Weary
|
|
123
123
|
|
124
124
|
private
|
125
125
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
126
|
+
# Stolen from Faraday
|
127
|
+
def query_params_from_hash(value, prefix = nil)
|
128
|
+
case value
|
129
|
+
when Array
|
130
|
+
value.map { |v| query_params_from_hash(v, "#{prefix}%5B%5D") }.join("&")
|
131
|
+
when Hash
|
132
|
+
value.map { |k, v|
|
133
|
+
query_params_from_hash(v, prefix ? "#{prefix}%5B#{Rack::Utils.escape_path(k)}%5D" : Rack::Utils.escape_path(k))
|
134
|
+
}.join("&")
|
135
|
+
when NilClass
|
136
|
+
prefix
|
137
|
+
else
|
138
|
+
raise ArgumentError, "value must be a Hash" if prefix.nil?
|
139
|
+
"#{prefix}=#{Rack::Utils.escape_path(value)}"
|
140
|
+
end
|
130
141
|
end
|
131
142
|
|
132
143
|
def rack_env_defaults
|
data/lib/weary/requestable.rb
CHANGED
@@ -57,8 +57,8 @@ module Weary
|
|
57
57
|
#
|
58
58
|
# Returns the Requestable object.
|
59
59
|
def pass_values_onto_requestable(requestable)
|
60
|
-
requestable.headers self.headers
|
61
|
-
requestable.adapter self.adapter
|
60
|
+
requestable.headers self.headers unless @headers.nil?
|
61
|
+
requestable.adapter self.adapter unless @connection.nil?
|
62
62
|
if has_middleware?
|
63
63
|
@middlewares.each {|middleware| requestable.use *middleware }
|
64
64
|
end
|
data/lib/weary/version.rb
CHANGED
data/spec/weary/client_spec.rb
CHANGED
@@ -257,6 +257,27 @@ describe Weary::Client do
|
|
257
257
|
client.instance_variable_set :@defaults, :user => "mwunsch", :repo => "weary"
|
258
258
|
expect { client.send(action) }.to_not raise_error
|
259
259
|
end
|
260
|
+
|
261
|
+
it "forwards requestables on to the requests" do
|
262
|
+
action = :show
|
263
|
+
url = "http://github.com/api/v2/json/repos/show/{user}/{repo}"
|
264
|
+
@klass.get action, url
|
265
|
+
adapter = Class.new { include Weary::Adapter }
|
266
|
+
client = @klass.new
|
267
|
+
client.adapter adapter
|
268
|
+
client.send(action, :user => "mwunsch", :repo => "weary").adapter.should eql adapter
|
269
|
+
end
|
270
|
+
|
271
|
+
it "accepts a block to further add requestables" do
|
272
|
+
action = :show
|
273
|
+
url = "http://github.com/api/v2/json/repos/show/{user}/{repo}"
|
274
|
+
@klass.get action, url
|
275
|
+
adapter = Class.new { include Weary::Adapter }
|
276
|
+
client = @klass.new do |c|
|
277
|
+
c.adapter adapter
|
278
|
+
end
|
279
|
+
client.send(action, :user => "mwunsch", :repo => "weary").adapter.should eql adapter
|
280
|
+
end
|
260
281
|
end
|
261
282
|
|
262
283
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: weary
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
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-
|
12
|
+
date: 2012-10-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
@@ -160,12 +160,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
160
|
- - ! '>='
|
161
161
|
- !ruby/object:Gem::Version
|
162
162
|
version: '0'
|
163
|
+
segments:
|
164
|
+
- 0
|
165
|
+
hash: -2981531106124675018
|
163
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
167
|
none: false
|
165
168
|
requirements:
|
166
169
|
- - ! '>='
|
167
170
|
- !ruby/object:Gem::Version
|
168
171
|
version: '0'
|
172
|
+
segments:
|
173
|
+
- 0
|
174
|
+
hash: -2981531106124675018
|
169
175
|
requirements: []
|
170
176
|
rubyforge_project: weary
|
171
177
|
rubygems_version: 1.8.23
|