swirl 1.7.3 → 1.7.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/swirl/aws.rb +11 -3
- data/lib/swirl/helpers.rb +22 -17
- data/test/compactor_test.rb +13 -9
- metadata +3 -3
data/lib/swirl/aws.rb
CHANGED
@@ -108,6 +108,9 @@ module Swirl
|
|
108
108
|
end
|
109
109
|
|
110
110
|
def call!(action, query={}, &blk)
|
111
|
+
log "Action: #{action}"
|
112
|
+
log "Query: #{query.inspect}"
|
113
|
+
|
111
114
|
# Hard coding this here until otherwise needed
|
112
115
|
method = "POST"
|
113
116
|
|
@@ -122,9 +125,8 @@ module Swirl
|
|
122
125
|
body += "&" + ["Signature", compile_signature(method, body)].join("=")
|
123
126
|
|
124
127
|
post(body) do |code, xml|
|
125
|
-
|
126
|
-
|
127
|
-
end
|
128
|
+
log "HTTP Response Code: #{code}"
|
129
|
+
log xml.gsub("\n", "\n[swirl] ")
|
128
130
|
|
129
131
|
data = Crack::XML.parse(xml)
|
130
132
|
blk.call(code, data)
|
@@ -149,6 +151,12 @@ module Swirl
|
|
149
151
|
"<#{self.class.name} version: #{@version} url: #{@url} aws_access_key_id: #{@aws_access_key_id}>"
|
150
152
|
end
|
151
153
|
|
154
|
+
def log(msg)
|
155
|
+
if ENV["SWIRL_LOG"]
|
156
|
+
$stderr.puts "[swirl] #{msg}"
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
152
160
|
end
|
153
161
|
|
154
162
|
end
|
data/lib/swirl/helpers.rb
CHANGED
@@ -5,30 +5,35 @@ module Swirl
|
|
5
5
|
module Compactor
|
6
6
|
|
7
7
|
def compact(response)
|
8
|
-
|
9
|
-
base = response[root_key]
|
10
|
-
compact!(base)
|
8
|
+
compact!(response.shift.last)
|
11
9
|
end
|
12
10
|
module_function :compact
|
13
11
|
|
14
|
-
def compact!(
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
12
|
+
def compact!(value)
|
13
|
+
case value
|
14
|
+
when Hash
|
15
|
+
# We don't need to stink'n xmlns!
|
16
|
+
value.delete("xmlns")
|
17
|
+
|
18
|
+
if value.has_key?("member") || value.has_key?("item")
|
19
|
+
value = value["member"] || value["item"]
|
20
|
+
|
21
|
+
if value == nil
|
23
22
|
[]
|
23
|
+
else
|
24
|
+
value = compact!(value)
|
25
|
+
# Can't use Array() here. :(
|
26
|
+
value.is_a?(Array) ? value : [value]
|
24
27
|
end
|
25
|
-
com[key] = converted
|
26
|
-
elsif key == "xmlns"
|
27
|
-
next(com)
|
28
28
|
else
|
29
|
-
|
29
|
+
value.inject({}) do |m, (k, v)|
|
30
|
+
m[k] = compact!(v) ; m
|
31
|
+
end
|
30
32
|
end
|
31
|
-
|
33
|
+
when Array
|
34
|
+
value.map {|v| compact!(v) }
|
35
|
+
else
|
36
|
+
value
|
32
37
|
end
|
33
38
|
end
|
34
39
|
module_function :compact!
|
data/test/compactor_test.rb
CHANGED
@@ -48,12 +48,14 @@ class CompactorTest < Test::Unit::TestCase
|
|
48
48
|
|
49
49
|
test "traverses list values and compacts" do
|
50
50
|
response = {
|
51
|
-
"
|
52
|
-
"
|
53
|
-
"
|
54
|
-
"
|
55
|
-
"
|
56
|
-
"
|
51
|
+
"Bar" => {
|
52
|
+
"Foo" => {
|
53
|
+
"groupSet" => {
|
54
|
+
"item" => {
|
55
|
+
"ipPermissions" => {
|
56
|
+
"item" => {
|
57
|
+
"proto" => "tcp"
|
58
|
+
}
|
57
59
|
}
|
58
60
|
}
|
59
61
|
}
|
@@ -62,9 +64,11 @@ class CompactorTest < Test::Unit::TestCase
|
|
62
64
|
}
|
63
65
|
|
64
66
|
expected = {
|
65
|
-
"
|
66
|
-
|
67
|
-
|
67
|
+
"Foo" => {
|
68
|
+
"groupSet" => [
|
69
|
+
{ "ipPermissions" => [ { "proto" => "tcp" } ] }
|
70
|
+
]
|
71
|
+
}
|
68
72
|
}
|
69
73
|
|
70
74
|
assert_equal expected, Compactor.compact(response)
|
metadata
CHANGED