fog 0.0.3

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.
Files changed (171) hide show
  1. data/.document +5 -0
  2. data/.gitignore +6 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +7 -0
  5. data/Rakefile +98 -0
  6. data/VERSION +1 -0
  7. data/benchs/fog_vs.rb +135 -0
  8. data/benchs/headers_split_vs_match.rb +18 -0
  9. data/benchs/params.rb +43 -0
  10. data/benchs/parse_vs_push.rb +60 -0
  11. data/benchs/stripping.rb +26 -0
  12. data/lib/fog.rb +21 -0
  13. data/lib/fog/aws.rb +145 -0
  14. data/lib/fog/aws/ec2.rb +173 -0
  15. data/lib/fog/aws/models/ec2/address.rb +31 -0
  16. data/lib/fog/aws/models/ec2/addresses.rb +36 -0
  17. data/lib/fog/aws/models/ec2/key_pair.rb +35 -0
  18. data/lib/fog/aws/models/ec2/key_pairs.rb +36 -0
  19. data/lib/fog/aws/models/ec2/volume.rb +47 -0
  20. data/lib/fog/aws/models/ec2/volumes.rb +36 -0
  21. data/lib/fog/aws/models/s3/bucket.rb +77 -0
  22. data/lib/fog/aws/models/s3/buckets.rb +83 -0
  23. data/lib/fog/aws/models/s3/object.rb +76 -0
  24. data/lib/fog/aws/models/s3/objects.rb +97 -0
  25. data/lib/fog/aws/models/s3/owner.rb +18 -0
  26. data/lib/fog/aws/parsers/ec2/allocate_address.rb +19 -0
  27. data/lib/fog/aws/parsers/ec2/attach_volume.rb +22 -0
  28. data/lib/fog/aws/parsers/ec2/basic.rb +25 -0
  29. data/lib/fog/aws/parsers/ec2/create_key_pair.rb +20 -0
  30. data/lib/fog/aws/parsers/ec2/create_snapshot.rb +22 -0
  31. data/lib/fog/aws/parsers/ec2/create_volume.rb +24 -0
  32. data/lib/fog/aws/parsers/ec2/describe_addresses.rb +30 -0
  33. data/lib/fog/aws/parsers/ec2/describe_availability_zones.rb +30 -0
  34. data/lib/fog/aws/parsers/ec2/describe_images.rb +49 -0
  35. data/lib/fog/aws/parsers/ec2/describe_instances.rb +73 -0
  36. data/lib/fog/aws/parsers/ec2/describe_key_pairs.rb +30 -0
  37. data/lib/fog/aws/parsers/ec2/describe_regions.rb +30 -0
  38. data/lib/fog/aws/parsers/ec2/describe_security_groups.rb +75 -0
  39. data/lib/fog/aws/parsers/ec2/describe_snapshots.rb +30 -0
  40. data/lib/fog/aws/parsers/ec2/describe_volumes.rb +57 -0
  41. data/lib/fog/aws/parsers/ec2/detach_volume.rb +22 -0
  42. data/lib/fog/aws/parsers/ec2/get_console_output.rb +28 -0
  43. data/lib/fog/aws/parsers/ec2/run_instances.rb +65 -0
  44. data/lib/fog/aws/parsers/ec2/terminate_instances.rb +55 -0
  45. data/lib/fog/aws/parsers/s3/copy_object.rb +22 -0
  46. data/lib/fog/aws/parsers/s3/get_bucket.rb +46 -0
  47. data/lib/fog/aws/parsers/s3/get_bucket_location.rb +20 -0
  48. data/lib/fog/aws/parsers/s3/get_request_payment.rb +20 -0
  49. data/lib/fog/aws/parsers/s3/get_service.rb +32 -0
  50. data/lib/fog/aws/parsers/simpledb/basic.rb +31 -0
  51. data/lib/fog/aws/parsers/simpledb/domain_metadata.rb +30 -0
  52. data/lib/fog/aws/parsers/simpledb/get_attributes.rb +34 -0
  53. data/lib/fog/aws/parsers/simpledb/list_domains.rb +28 -0
  54. data/lib/fog/aws/parsers/simpledb/select.rb +39 -0
  55. data/lib/fog/aws/requests/ec2/allocate_address.rb +50 -0
  56. data/lib/fog/aws/requests/ec2/associate_address.rb +59 -0
  57. data/lib/fog/aws/requests/ec2/attach_volume.rb +71 -0
  58. data/lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb +32 -0
  59. data/lib/fog/aws/requests/ec2/create_key_pair.rb +60 -0
  60. data/lib/fog/aws/requests/ec2/create_security_group.rb +61 -0
  61. data/lib/fog/aws/requests/ec2/create_snapshot.rb +65 -0
  62. data/lib/fog/aws/requests/ec2/create_volume.rb +66 -0
  63. data/lib/fog/aws/requests/ec2/delete_key_pair.rb +49 -0
  64. data/lib/fog/aws/requests/ec2/delete_security_group.rb +52 -0
  65. data/lib/fog/aws/requests/ec2/delete_snapshot.rb +53 -0
  66. data/lib/fog/aws/requests/ec2/delete_volume.rb +55 -0
  67. data/lib/fog/aws/requests/ec2/describe_addresses.rb +61 -0
  68. data/lib/fog/aws/requests/ec2/describe_availability_zones.rb +64 -0
  69. data/lib/fog/aws/requests/ec2/describe_images.rb +41 -0
  70. data/lib/fog/aws/requests/ec2/describe_instances.rb +114 -0
  71. data/lib/fog/aws/requests/ec2/describe_key_pairs.rb +63 -0
  72. data/lib/fog/aws/requests/ec2/describe_regions.rb +61 -0
  73. data/lib/fog/aws/requests/ec2/describe_security_groups.rb +71 -0
  74. data/lib/fog/aws/requests/ec2/describe_snapshots.rb +78 -0
  75. data/lib/fog/aws/requests/ec2/describe_volumes.rb +85 -0
  76. data/lib/fog/aws/requests/ec2/detach_volume.rb +62 -0
  77. data/lib/fog/aws/requests/ec2/disassociate_address.rb +55 -0
  78. data/lib/fog/aws/requests/ec2/get_console_output.rb +26 -0
  79. data/lib/fog/aws/requests/ec2/reboot_instances.rb +24 -0
  80. data/lib/fog/aws/requests/ec2/release_address.rb +50 -0
  81. data/lib/fog/aws/requests/ec2/revoke_security_group_ingress.rb +32 -0
  82. data/lib/fog/aws/requests/ec2/run_instances.rb +134 -0
  83. data/lib/fog/aws/requests/ec2/terminate_instances.rb +80 -0
  84. data/lib/fog/aws/requests/s3/copy_object.rb +79 -0
  85. data/lib/fog/aws/requests/s3/delete_bucket.rb +53 -0
  86. data/lib/fog/aws/requests/s3/delete_object.rb +52 -0
  87. data/lib/fog/aws/requests/s3/get_bucket.rb +100 -0
  88. data/lib/fog/aws/requests/s3/get_bucket_location.rb +53 -0
  89. data/lib/fog/aws/requests/s3/get_object.rb +82 -0
  90. data/lib/fog/aws/requests/s3/get_request_payment.rb +53 -0
  91. data/lib/fog/aws/requests/s3/get_service.rb +58 -0
  92. data/lib/fog/aws/requests/s3/head_object.rb +61 -0
  93. data/lib/fog/aws/requests/s3/put_bucket.rb +69 -0
  94. data/lib/fog/aws/requests/s3/put_object.rb +76 -0
  95. data/lib/fog/aws/requests/s3/put_request_payment.rb +56 -0
  96. data/lib/fog/aws/requests/simpledb/batch_put_attributes.rb +31 -0
  97. data/lib/fog/aws/requests/simpledb/create_domain.rb +25 -0
  98. data/lib/fog/aws/requests/simpledb/delete_attributes.rb +34 -0
  99. data/lib/fog/aws/requests/simpledb/delete_domain.rb +25 -0
  100. data/lib/fog/aws/requests/simpledb/domain_metadata.rb +30 -0
  101. data/lib/fog/aws/requests/simpledb/get_attributes.rb +35 -0
  102. data/lib/fog/aws/requests/simpledb/list_domains.rb +30 -0
  103. data/lib/fog/aws/requests/simpledb/put_attributes.rb +29 -0
  104. data/lib/fog/aws/requests/simpledb/select.rb +29 -0
  105. data/lib/fog/aws/s3.rb +157 -0
  106. data/lib/fog/aws/simpledb.rb +157 -0
  107. data/lib/fog/collection.rb +77 -0
  108. data/lib/fog/connection.rb +130 -0
  109. data/lib/fog/errors.rb +145 -0
  110. data/lib/fog/model.rb +72 -0
  111. data/lib/fog/parser.rb +30 -0
  112. data/lib/fog/response.rb +12 -0
  113. data/spec/aws/models/s3/bucket_spec.rb +130 -0
  114. data/spec/aws/models/s3/buckets_spec.rb +79 -0
  115. data/spec/aws/models/s3/object_spec.rb +121 -0
  116. data/spec/aws/models/s3/objects_spec.rb +112 -0
  117. data/spec/aws/models/s3/owner_spec.rb +18 -0
  118. data/spec/aws/requests/ec2/allocate_address_spec.rb +18 -0
  119. data/spec/aws/requests/ec2/associate_address_spec.rb +42 -0
  120. data/spec/aws/requests/ec2/attach_volume_spec.rb +53 -0
  121. data/spec/aws/requests/ec2/authorize_security_group_ingress_spec.rb +26 -0
  122. data/spec/aws/requests/ec2/create_key_pair_spec.rb +36 -0
  123. data/spec/aws/requests/ec2/create_security_group_spec.rb +34 -0
  124. data/spec/aws/requests/ec2/create_snapshot_spec.rb +37 -0
  125. data/spec/aws/requests/ec2/create_volume_spec.rb +23 -0
  126. data/spec/aws/requests/ec2/delete_key_pair_spec.rb +21 -0
  127. data/spec/aws/requests/ec2/delete_security_group_spec.rb +26 -0
  128. data/spec/aws/requests/ec2/delete_snapshot_spec.rb +35 -0
  129. data/spec/aws/requests/ec2/delete_volume_spec.rb +26 -0
  130. data/spec/aws/requests/ec2/describe_addresses_spec.rb +38 -0
  131. data/spec/aws/requests/ec2/describe_availability_zones_spec.rb +23 -0
  132. data/spec/aws/requests/ec2/describe_images_spec.rb +39 -0
  133. data/spec/aws/requests/ec2/describe_instances_spec.rb +86 -0
  134. data/spec/aws/requests/ec2/describe_key_pairs_spec.rb +42 -0
  135. data/spec/aws/requests/ec2/describe_regions_spec.rb +21 -0
  136. data/spec/aws/requests/ec2/describe_security_groups_spec.rb +51 -0
  137. data/spec/aws/requests/ec2/describe_snapshots_spec.rb +54 -0
  138. data/spec/aws/requests/ec2/describe_volumes_spec.rb +50 -0
  139. data/spec/aws/requests/ec2/detach_volume_spec.rb +43 -0
  140. data/spec/aws/requests/ec2/disassociate_address_spec.rb +35 -0
  141. data/spec/aws/requests/ec2/get_console_output_spec.rb +23 -0
  142. data/spec/aws/requests/ec2/reboot_instances_spec.rb +21 -0
  143. data/spec/aws/requests/ec2/release_address_spec.rb +26 -0
  144. data/spec/aws/requests/ec2/revoke_security_group_ingress_spec.rb +32 -0
  145. data/spec/aws/requests/ec2/run_instances_spec.rb +41 -0
  146. data/spec/aws/requests/ec2/terminate_instances_spec.rb +35 -0
  147. data/spec/aws/requests/s3/copy_object_spec.rb +62 -0
  148. data/spec/aws/requests/s3/delete_bucket_spec.rb +36 -0
  149. data/spec/aws/requests/s3/delete_object_spec.rb +37 -0
  150. data/spec/aws/requests/s3/get_bucket_location_spec.rb +30 -0
  151. data/spec/aws/requests/s3/get_bucket_spec.rb +110 -0
  152. data/spec/aws/requests/s3/get_object_spec.rb +45 -0
  153. data/spec/aws/requests/s3/get_request_payment_spec.rb +30 -0
  154. data/spec/aws/requests/s3/get_service_spec.rb +33 -0
  155. data/spec/aws/requests/s3/head_object_spec.rb +28 -0
  156. data/spec/aws/requests/s3/put_bucket_spec.rb +19 -0
  157. data/spec/aws/requests/s3/put_object_spec.rb +38 -0
  158. data/spec/aws/requests/s3/put_request_payment_spec.rb +29 -0
  159. data/spec/aws/requests/simpledb/batch_put_attributes_spec.rb +22 -0
  160. data/spec/aws/requests/simpledb/create_domain_spec.rb +21 -0
  161. data/spec/aws/requests/simpledb/delete_attributes_spec.rb +22 -0
  162. data/spec/aws/requests/simpledb/delete_domain_spec.rb +21 -0
  163. data/spec/aws/requests/simpledb/domain_metadata_spec.rb +43 -0
  164. data/spec/aws/requests/simpledb/get_attributes_spec.rb +31 -0
  165. data/spec/aws/requests/simpledb/list_domains_spec.rb +30 -0
  166. data/spec/aws/requests/simpledb/put_attributes_spec.rb +22 -0
  167. data/spec/aws/requests/simpledb/select_spec.rb +9 -0
  168. data/spec/lorem.txt +1 -0
  169. data/spec/spec.opts +1 -0
  170. data/spec/spec_helper.rb +66 -0
  171. metadata +309 -0
@@ -0,0 +1,22 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module EC2
5
+
6
+ class AttachVolume < Fog::Parsers::Base
7
+
8
+ def end_element(name)
9
+ case name
10
+ when 'attachTime'
11
+ @response[name] = Time.parse(@value)
12
+ when 'device', 'instanceId', 'requestId', 'status', 'volumeId'
13
+ @response[name] = @value
14
+ end
15
+ end
16
+
17
+ end
18
+
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,25 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module EC2
5
+
6
+ class Basic < Fog::Parsers::Base
7
+
8
+ def end_element(name)
9
+ case name
10
+ when 'requestId'
11
+ @response[name] = @value
12
+ when 'return'
13
+ if @value == 'true'
14
+ @response[name] = true
15
+ else
16
+ @response[name] = false
17
+ end
18
+ end
19
+ end
20
+
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,20 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module EC2
5
+
6
+ class CreateKeyPair < Fog::Parsers::Base
7
+
8
+ def end_element(name)
9
+ case name
10
+ when 'keyFingerprint', 'keyMaterial', 'keyName', 'requestId'
11
+ @response[name] = @value
12
+ end
13
+ end
14
+
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,22 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module EC2
5
+
6
+ class CreateSnapshot < Fog::Parsers::Base
7
+
8
+ def end_element(name)
9
+ case name
10
+ when 'progress', 'snapshotId', 'status', 'volumeId'
11
+ @response[name] = @value
12
+ when 'startTime'
13
+ @response[name] = Time.parse(@value)
14
+ end
15
+ end
16
+
17
+ end
18
+
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,24 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module EC2
5
+
6
+ class CreateVolume < Fog::Parsers::Base
7
+
8
+ def end_element(name)
9
+ case name
10
+ when 'availabilityZone', 'requestId', 'snapshotId', 'status', 'volumeId'
11
+ @response[name] = @value
12
+ when 'createTime'
13
+ @response[name] = Time.parse(@value)
14
+ when 'size'
15
+ @response[name] = @value.to_i
16
+ end
17
+ end
18
+
19
+ end
20
+
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,30 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module EC2
5
+
6
+ class DescribeAddresses < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @address = {}
10
+ @response = { 'addressesSet' => [] }
11
+ end
12
+
13
+ def end_element(name)
14
+ case name
15
+ when 'instanceId', 'publicIp'
16
+ @address[name] = @value
17
+ when 'item'
18
+ @response['addressesSet'] << @address
19
+ @address = []
20
+ when 'requestId'
21
+ @response[name] = @value
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module EC2
5
+
6
+ class DescribeAvailabilityZones < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @availability_zone = {}
10
+ @response = { 'availabilityZoneInfo' => [] }
11
+ end
12
+
13
+ def end_element(name)
14
+ case name
15
+ when 'item'
16
+ @response['availabilityZoneInfo'] << @availability_zone
17
+ @availability_zone = {}
18
+ when 'regionName', 'zoneName', 'zoneState'
19
+ @availability_zone[name] = @value
20
+ when 'requestId'
21
+ @response[name] = @value
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,49 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module EC2
5
+
6
+ class DescribeImages < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @image = { 'productCodes' => [] }
10
+ @response = { 'imagesSet' => [] }
11
+ end
12
+
13
+ def start_element(name, attrs = [])
14
+ if name == 'productCodes'
15
+ @in_product_codes = true
16
+ end
17
+ @value = ''
18
+ end
19
+
20
+ def end_element(name)
21
+ case name
22
+ when 'architecture', 'imageId', 'imageLocation', 'imageOwnerId', 'imageState', 'imageType', 'kernelId', 'platform', 'ramdiskId'
23
+ @image[name] = @value
24
+ when 'isPublic'
25
+ if @value == 'true'
26
+ @image[name] = true
27
+ else
28
+ @image[name] = false
29
+ end
30
+ when 'item'
31
+ unless @in_product_codes
32
+ @response['imagesSet'] << @image
33
+ @image = { 'productCodes' => [] }
34
+ end
35
+ when 'productCode'
36
+ @image['productCodes'] << @value
37
+ when 'productCodes'
38
+ @in_product_codes = false
39
+ when 'requestId'
40
+ @response[name] = @value
41
+ end
42
+ end
43
+
44
+ end
45
+
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,73 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module EC2
5
+
6
+ class DescribeInstances < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @instance = { 'instanceState' => {}, 'monitoring' => {}, 'placement' => {}, 'productCodes' => [] }
10
+ @reservation = { 'groupSet' => [], 'instancesSet' => [] }
11
+ @response = { 'reservationSet' => [] }
12
+ end
13
+
14
+ def start_element(name, attrs = [])
15
+ if name == 'groupSet' || name == 'productCodes'
16
+ @in_subset = true
17
+ elsif name == 'instancesSet'
18
+ @in_instances_set = true
19
+ end
20
+ @value = ''
21
+ end
22
+
23
+ def end_element(name)
24
+ case name
25
+ when 'amiLaunchIndex'
26
+ @instance[name] = @value.to_i
27
+ when 'availabilityZone'
28
+ @instance['placement'][name] = @value
29
+ when 'code'
30
+ @instance['instanceState'][name] = @value.to_i
31
+ when 'dnsName', 'imageId', 'instanceId', 'instanceType', 'kernelId', 'keyName', 'privateDnsName', 'ramdiskId', 'reason'
32
+ @instance[name] = @value
33
+ when 'groupId'
34
+ @reservation['groupSet'] << @value
35
+ when 'groupSet'
36
+ @in_subset = false
37
+ when 'instancesSet'
38
+ @in_instances_set = false
39
+ when 'item'
40
+ if @in_instances_set
41
+ @reservation['instancesSet'] << @instance
42
+ @instance = { 'instanceState' => {}, 'monitoring' => {}, 'placement' => {}, 'productCodes' => [] }
43
+ elsif !@in_subset
44
+ @response['reservationSet'] << @reservation
45
+ @reservation = { 'groupSet' => [], 'instancesSet' => [] }
46
+ end
47
+ when 'launchTime'
48
+ @instance[name] = Time.parse(@value)
49
+ when 'name'
50
+ @instance['instanceState'][name] = @value
51
+ when 'ownerId', 'reservationId'
52
+ @reservation[name] = @value
53
+ when 'requestId'
54
+ @response[name] = @value
55
+ when 'productCode'
56
+ @instance['productCodes'] << @value
57
+ when 'productCodes'
58
+ @in_subset = false
59
+ when 'state'
60
+ if @value == 'true'
61
+ @instance['monitoring'][name] = true
62
+ else
63
+ @instance['monitoring'][name] = false
64
+ end
65
+ end
66
+ end
67
+
68
+ end
69
+
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,30 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module EC2
5
+
6
+ class DescribeKeyPairs < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @key = {}
10
+ @response = { 'keySet' => [] }
11
+ end
12
+
13
+ def end_element(name)
14
+ case name
15
+ when 'item'
16
+ @response['keySet'] << @key
17
+ @key = {}
18
+ when 'keyFingerprint', 'keyName'
19
+ @key[name] = @value
20
+ when 'requestId'
21
+ @response[name] = @value
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module EC2
5
+
6
+ class DescribeRegions < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @region = {}
10
+ @response = { 'regionInfo' => [] }
11
+ end
12
+
13
+ def end_element(name)
14
+ case name
15
+ when 'item'
16
+ @response['regionInfo'] << @region
17
+ @region = {}
18
+ when 'regionEndpoint', 'regionName'
19
+ @region[name] = @value
20
+ when 'requestId'
21
+ @response[name] = @value
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,75 @@
1
+ module Fog
2
+ module Parsers
3
+ module AWS
4
+ module EC2
5
+
6
+ class DescribeSecurityGroups < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @group = {}
10
+ @ip_permission = { 'groups' => [], 'ipRanges' => []}
11
+ @ip_range = {}
12
+ @security_group = { 'ipPermissions' => [] }
13
+ @response = { 'securityGroupInfo' => [] }
14
+ end
15
+
16
+ def start_element(name, attrs = [])
17
+ if name == 'groups'
18
+ @in_groups = true
19
+ elsif name == 'ipPermissions'
20
+ @in_ip_permissions = true
21
+ elsif name == 'ipRanges'
22
+ @in_ip_ranges = true
23
+ end
24
+ @value = ''
25
+ end
26
+
27
+ def end_element(name)
28
+ case name
29
+ when 'cidrIp'
30
+ @ip_range[name] = @value
31
+ when 'fromPort', 'toPort'
32
+ @ip_permission[name] = @value.to_i
33
+ when 'groups'
34
+ @in_groups = false
35
+ when 'groupDescription', 'ownerId'
36
+ @security_group[name] = @value
37
+ when 'groupName'
38
+ if @in_groups
39
+ @group[name] = @value
40
+ else
41
+ @security_group[name] = @value
42
+ end
43
+ when 'ipPermissions'
44
+ @in_ip_permissions = false
45
+ when 'ipProtocol'
46
+ @ip_permission[name] = @value
47
+ when 'ipRanges'
48
+ @in_ip_ranges = false
49
+ when 'item'
50
+ if @in_groups
51
+ @ip_permission['groups'] << @group
52
+ @group = {}
53
+ elsif @in_ip_permissions
54
+ @security_group['ipPermissions'] << @ip_permission
55
+ @ip_permission = { 'groups' => [], 'ipRanges' => []}
56
+ elsif @in_ip_ranges
57
+ @ip_permission['ipRanges'] << @ip_range
58
+ @ip_range = {}
59
+ else
60
+ @response['securityGroupInfo'] << @security_group
61
+ @security_group = { 'ipPermissions' => [] }
62
+ end
63
+ when 'requestId'
64
+ @response[name] = @value
65
+ when 'userId'
66
+ @group[name] = @value
67
+ end
68
+ end
69
+
70
+ end
71
+
72
+ end
73
+ end
74
+ end
75
+ end