swirl 1.7.3 → 1.7.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- if ENV["SWIRL_LOG"]
126
- puts response.body
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
@@ -5,30 +5,35 @@ module Swirl
5
5
  module Compactor
6
6
 
7
7
  def compact(response)
8
- root_key = response.keys.first
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!(data)
15
- data.inject({}) do |com, (key, value)|
16
- if value.is_a?(Hash)
17
- converted = if value.has_key?("item") || value.has_key?("member")
18
- items = value["item"] || value ["member"]
19
- items ||= []
20
- items = items.is_a?(Array) ? items : [items]
21
- items.map {|item| compact!(item) }
22
- else
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
- com[key] = value
29
+ value.inject({}) do |m, (k, v)|
30
+ m[k] = compact!(v) ; m
31
+ end
30
32
  end
31
- com
33
+ when Array
34
+ value.map {|v| compact!(v) }
35
+ else
36
+ value
32
37
  end
33
38
  end
34
39
  module_function :compact!
@@ -48,12 +48,14 @@ class CompactorTest < Test::Unit::TestCase
48
48
 
49
49
  test "traverses list values and compacts" do
50
50
  response = {
51
- "Foo" => {
52
- "groupSet" => {
53
- "item" => {
54
- "ipPermissions" => {
55
- "item" => {
56
- "proto" => "tcp"
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
- "groupSet" => [
66
- { "ipPermissions" => [ { "proto" => "tcp" } ] }
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
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swirl
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 7
9
- - 3
10
- version: 1.7.3
9
+ - 4
10
+ version: 1.7.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Blake Mizerany