swirl 1.7.3 → 1.7.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/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