aws_sdk 3.1.5

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 (390) hide show
  1. data/lib/aws-sdk.rb +14 -0
  2. data/lib/aws.rb +49 -0
  3. data/lib/aws/api_config/AutoScaling-2011-01-01.yml +791 -0
  4. data/lib/aws/api_config/CloudFormation-2010-05-15.yml +303 -0
  5. data/lib/aws/api_config/DynamoDB-2011-12-05.yml +540 -0
  6. data/lib/aws/api_config/EC2-2011-12-15.yml +3638 -0
  7. data/lib/aws/api_config/EC2-2012-04-01.yml +3739 -0
  8. data/lib/aws/api_config/ELB-2011-08-15.yml +512 -0
  9. data/lib/aws/api_config/IAM-2010-05-08.yml +1221 -0
  10. data/lib/aws/api_config/SNS-2010-03-31.yml +248 -0
  11. data/lib/aws/api_config/SQS-2011-10-01.yml +314 -0
  12. data/lib/aws/api_config/STS-2011-06-15.yml +54 -0
  13. data/lib/aws/api_config/SimpleDB-2009-04-15.yml +305 -0
  14. data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +231 -0
  15. data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +721 -0
  16. data/lib/aws/auto_scaling.rb +162 -0
  17. data/lib/aws/auto_scaling/activity.rb +102 -0
  18. data/lib/aws/auto_scaling/activity_collection.rb +82 -0
  19. data/lib/aws/auto_scaling/client.rb +765 -0
  20. data/lib/aws/auto_scaling/config.rb +18 -0
  21. data/lib/aws/auto_scaling/errors.rb +22 -0
  22. data/lib/aws/auto_scaling/group.rb +420 -0
  23. data/lib/aws/auto_scaling/group_collection.rb +96 -0
  24. data/lib/aws/auto_scaling/group_options.rb +146 -0
  25. data/lib/aws/auto_scaling/instance.rb +192 -0
  26. data/lib/aws/auto_scaling/instance_collection.rb +63 -0
  27. data/lib/aws/auto_scaling/launch_configuration.rb +150 -0
  28. data/lib/aws/auto_scaling/launch_configuration_collection.rb +144 -0
  29. data/lib/aws/auto_scaling/notification_configuration.rb +89 -0
  30. data/lib/aws/auto_scaling/notification_configuration_collection.rb +184 -0
  31. data/lib/aws/auto_scaling/request.rb +23 -0
  32. data/lib/aws/auto_scaling/scaling_policy.rb +125 -0
  33. data/lib/aws/auto_scaling/scaling_policy_collection.rb +72 -0
  34. data/lib/aws/auto_scaling/scaling_policy_options.rb +61 -0
  35. data/lib/aws/auto_scaling/scheduled_action.rb +145 -0
  36. data/lib/aws/auto_scaling/scheduled_action_collection.rb +195 -0
  37. data/lib/aws/auto_scaling/tag.rb +59 -0
  38. data/lib/aws/auto_scaling/tag_collection.rb +112 -0
  39. data/lib/aws/cloud_formation.rb +270 -0
  40. data/lib/aws/cloud_formation/client.rb +339 -0
  41. data/lib/aws/cloud_formation/config.rb +18 -0
  42. data/lib/aws/cloud_formation/errors.rb +22 -0
  43. data/lib/aws/cloud_formation/request.rb +29 -0
  44. data/lib/aws/cloud_formation/stack.rb +256 -0
  45. data/lib/aws/cloud_formation/stack_collection.rb +206 -0
  46. data/lib/aws/cloud_formation/stack_event.rb +75 -0
  47. data/lib/aws/cloud_formation/stack_event_collection.rb +47 -0
  48. data/lib/aws/cloud_formation/stack_options.rb +72 -0
  49. data/lib/aws/cloud_formation/stack_output.rb +53 -0
  50. data/lib/aws/cloud_formation/stack_resource.rb +117 -0
  51. data/lib/aws/cloud_formation/stack_resource_collection.rb +84 -0
  52. data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +72 -0
  53. data/lib/aws/cloud_formation/stack_summary.rb +71 -0
  54. data/lib/aws/cloud_formation/stack_summary_collection.rb +127 -0
  55. data/lib/aws/core.rb +474 -0
  56. data/lib/aws/core/async_handle.rb +90 -0
  57. data/lib/aws/core/autoloader.rb +64 -0
  58. data/lib/aws/core/cacheable.rb +78 -0
  59. data/lib/aws/core/client.rb +541 -0
  60. data/lib/aws/core/client/query_json.rb +110 -0
  61. data/lib/aws/core/client/query_xml.rb +122 -0
  62. data/lib/aws/core/collection.rb +234 -0
  63. data/lib/aws/core/collection/limitable.rb +99 -0
  64. data/lib/aws/core/collection/simple.rb +90 -0
  65. data/lib/aws/core/configuration.rb +445 -0
  66. data/lib/aws/core/data.rb +242 -0
  67. data/lib/aws/core/default_signer.rb +67 -0
  68. data/lib/aws/core/http/curb_handler.rb +136 -0
  69. data/lib/aws/core/http/handler.rb +77 -0
  70. data/lib/aws/core/http/httparty_handler.rb +114 -0
  71. data/lib/aws/core/http/net_http_handler.rb +85 -0
  72. data/lib/aws/core/http/request.rb +250 -0
  73. data/lib/aws/core/http/response.rb +74 -0
  74. data/lib/aws/core/indifferent_hash.rb +88 -0
  75. data/lib/aws/core/inflection.rb +47 -0
  76. data/lib/aws/core/lazy_error_classes.rb +90 -0
  77. data/lib/aws/core/log_formatter.rb +454 -0
  78. data/lib/aws/core/meta_utils.rb +45 -0
  79. data/lib/aws/core/model.rb +57 -0
  80. data/lib/aws/core/naming.rb +30 -0
  81. data/lib/aws/core/option_grammar.rb +700 -0
  82. data/lib/aws/core/page_result.rb +73 -0
  83. data/lib/aws/core/policy.rb +916 -0
  84. data/lib/aws/core/resource.rb +408 -0
  85. data/lib/aws/core/resource_cache.rb +40 -0
  86. data/lib/aws/core/response.rb +202 -0
  87. data/lib/aws/core/response_cache.rb +50 -0
  88. data/lib/aws/core/service_interface.rb +61 -0
  89. data/lib/aws/core/session_signer.rb +90 -0
  90. data/lib/aws/core/signature/version_2.rb +42 -0
  91. data/lib/aws/core/signature/version_3.rb +73 -0
  92. data/lib/aws/core/signature/version_3_http.rb +72 -0
  93. data/lib/aws/core/signature/version_4.rb +138 -0
  94. data/lib/aws/core/uri_escape.rb +42 -0
  95. data/lib/aws/core/xml/frame.rb +242 -0
  96. data/lib/aws/core/xml/frame_stack.rb +85 -0
  97. data/lib/aws/core/xml/grammar.rb +299 -0
  98. data/lib/aws/core/xml/parser.rb +70 -0
  99. data/lib/aws/core/xml/root_frame.rb +65 -0
  100. data/lib/aws/core/xml/sax_handlers/libxml.rb +47 -0
  101. data/lib/aws/core/xml/sax_handlers/nokogiri.rb +55 -0
  102. data/lib/aws/core/xml/sax_handlers/ox.rb +41 -0
  103. data/lib/aws/core/xml/sax_handlers/rexml.rb +43 -0
  104. data/lib/aws/core/xml/stub.rb +123 -0
  105. data/lib/aws/dynamo_db.rb +213 -0
  106. data/lib/aws/dynamo_db/attribute_collection.rb +460 -0
  107. data/lib/aws/dynamo_db/batch_get.rb +206 -0
  108. data/lib/aws/dynamo_db/batch_write.rb +251 -0
  109. data/lib/aws/dynamo_db/client.rb +888 -0
  110. data/lib/aws/dynamo_db/config.rb +20 -0
  111. data/lib/aws/dynamo_db/errors.rb +20 -0
  112. data/lib/aws/dynamo_db/expectations.rb +40 -0
  113. data/lib/aws/dynamo_db/item.rb +130 -0
  114. data/lib/aws/dynamo_db/item_collection.rb +852 -0
  115. data/lib/aws/dynamo_db/item_data.rb +31 -0
  116. data/lib/aws/dynamo_db/keys.rb +41 -0
  117. data/lib/aws/dynamo_db/primary_key_element.rb +47 -0
  118. data/lib/aws/dynamo_db/request.rb +28 -0
  119. data/lib/aws/dynamo_db/resource.rb +33 -0
  120. data/lib/aws/dynamo_db/table.rb +489 -0
  121. data/lib/aws/dynamo_db/table_collection.rb +165 -0
  122. data/lib/aws/dynamo_db/types.rb +86 -0
  123. data/lib/aws/ec2.rb +431 -0
  124. data/lib/aws/ec2/attachment.rb +140 -0
  125. data/lib/aws/ec2/attachment_collection.rb +54 -0
  126. data/lib/aws/ec2/availability_zone.rb +87 -0
  127. data/lib/aws/ec2/availability_zone_collection.rb +43 -0
  128. data/lib/aws/ec2/block_device_mappings.rb +53 -0
  129. data/lib/aws/ec2/client.rb +4121 -0
  130. data/lib/aws/ec2/collection.rb +36 -0
  131. data/lib/aws/ec2/config.rb +18 -0
  132. data/lib/aws/ec2/config_transform.rb +63 -0
  133. data/lib/aws/ec2/customer_gateway.rb +90 -0
  134. data/lib/aws/ec2/customer_gateway_collection.rb +73 -0
  135. data/lib/aws/ec2/dhcp_options.rb +106 -0
  136. data/lib/aws/ec2/dhcp_options_collection.rb +87 -0
  137. data/lib/aws/ec2/elastic_ip.rb +157 -0
  138. data/lib/aws/ec2/elastic_ip_collection.rb +97 -0
  139. data/lib/aws/ec2/errors.rb +32 -0
  140. data/lib/aws/ec2/filtered_collection.rb +90 -0
  141. data/lib/aws/ec2/has_permissions.rb +44 -0
  142. data/lib/aws/ec2/image.rb +254 -0
  143. data/lib/aws/ec2/image_collection.rb +228 -0
  144. data/lib/aws/ec2/instance.rb +669 -0
  145. data/lib/aws/ec2/instance_collection.rb +346 -0
  146. data/lib/aws/ec2/internet_gateway.rb +122 -0
  147. data/lib/aws/ec2/internet_gateway/attachment.rb +78 -0
  148. data/lib/aws/ec2/internet_gateway_collection.rb +54 -0
  149. data/lib/aws/ec2/key_pair.rb +82 -0
  150. data/lib/aws/ec2/key_pair_collection.rb +99 -0
  151. data/lib/aws/ec2/network_acl.rb +256 -0
  152. data/lib/aws/ec2/network_acl/association.rb +56 -0
  153. data/lib/aws/ec2/network_acl/entry.rb +147 -0
  154. data/lib/aws/ec2/network_acl_collection.rb +64 -0
  155. data/lib/aws/ec2/network_interface.rb +228 -0
  156. data/lib/aws/ec2/network_interface/attachment.rb +100 -0
  157. data/lib/aws/ec2/network_interface_collection.rb +103 -0
  158. data/lib/aws/ec2/permission_collection.rb +174 -0
  159. data/lib/aws/ec2/region.rb +97 -0
  160. data/lib/aws/ec2/region_collection.rb +51 -0
  161. data/lib/aws/ec2/request.rb +22 -0
  162. data/lib/aws/ec2/reserved_instances.rb +53 -0
  163. data/lib/aws/ec2/reserved_instances_collection.rb +40 -0
  164. data/lib/aws/ec2/reserved_instances_offering.rb +58 -0
  165. data/lib/aws/ec2/reserved_instances_offering_collection.rb +39 -0
  166. data/lib/aws/ec2/resource.rb +161 -0
  167. data/lib/aws/ec2/resource_tag_collection.rb +211 -0
  168. data/lib/aws/ec2/route_table.rb +205 -0
  169. data/lib/aws/ec2/route_table/association.rb +119 -0
  170. data/lib/aws/ec2/route_table/route.rb +113 -0
  171. data/lib/aws/ec2/route_table_collection.rb +72 -0
  172. data/lib/aws/ec2/security_group.rb +458 -0
  173. data/lib/aws/ec2/security_group/egress_ip_permission_collection.rb +63 -0
  174. data/lib/aws/ec2/security_group/ingress_ip_permission_collection.rb +61 -0
  175. data/lib/aws/ec2/security_group/ip_permission.rb +128 -0
  176. data/lib/aws/ec2/security_group_collection.rb +135 -0
  177. data/lib/aws/ec2/snapshot.rb +143 -0
  178. data/lib/aws/ec2/snapshot_collection.rb +131 -0
  179. data/lib/aws/ec2/subnet.rb +161 -0
  180. data/lib/aws/ec2/subnet_collection.rb +115 -0
  181. data/lib/aws/ec2/tag.rb +81 -0
  182. data/lib/aws/ec2/tag_collection.rb +107 -0
  183. data/lib/aws/ec2/tagged_collection.rb +53 -0
  184. data/lib/aws/ec2/tagged_item.rb +85 -0
  185. data/lib/aws/ec2/volume.rb +170 -0
  186. data/lib/aws/ec2/volume_collection.rb +97 -0
  187. data/lib/aws/ec2/vpc.rb +166 -0
  188. data/lib/aws/ec2/vpc_collection.rb +70 -0
  189. data/lib/aws/ec2/vpn_connection.rb +99 -0
  190. data/lib/aws/ec2/vpn_connection/telemetry.rb +49 -0
  191. data/lib/aws/ec2/vpn_connection_collection.rb +96 -0
  192. data/lib/aws/ec2/vpn_gateway.rb +123 -0
  193. data/lib/aws/ec2/vpn_gateway/attachment.rb +45 -0
  194. data/lib/aws/ec2/vpn_gateway_collection.rb +77 -0
  195. data/lib/aws/elb.rb +65 -0
  196. data/lib/aws/elb/availability_zone_collection.rb +138 -0
  197. data/lib/aws/elb/backend_server_policy_collection.rb +140 -0
  198. data/lib/aws/elb/client.rb +539 -0
  199. data/lib/aws/elb/config.rb +18 -0
  200. data/lib/aws/elb/errors.rb +26 -0
  201. data/lib/aws/elb/instance_collection.rb +174 -0
  202. data/lib/aws/elb/listener.rb +189 -0
  203. data/lib/aws/elb/listener_collection.rb +119 -0
  204. data/lib/aws/elb/listener_opts.rb +45 -0
  205. data/lib/aws/elb/load_balancer.rb +253 -0
  206. data/lib/aws/elb/load_balancer_collection.rb +113 -0
  207. data/lib/aws/elb/load_balancer_policy.rb +93 -0
  208. data/lib/aws/elb/load_balancer_policy_collection.rb +208 -0
  209. data/lib/aws/elb/request.rb +23 -0
  210. data/lib/aws/errors.rb +122 -0
  211. data/lib/aws/iam.rb +418 -0
  212. data/lib/aws/iam/access_key.rb +180 -0
  213. data/lib/aws/iam/access_key_collection.rb +128 -0
  214. data/lib/aws/iam/account_alias_collection.rb +79 -0
  215. data/lib/aws/iam/client.rb +1609 -0
  216. data/lib/aws/iam/collection.rb +83 -0
  217. data/lib/aws/iam/config.rb +18 -0
  218. data/lib/aws/iam/errors.rb +22 -0
  219. data/lib/aws/iam/group.rb +111 -0
  220. data/lib/aws/iam/group_collection.rb +132 -0
  221. data/lib/aws/iam/group_policy_collection.rb +47 -0
  222. data/lib/aws/iam/group_user_collection.rb +84 -0
  223. data/lib/aws/iam/login_profile.rb +99 -0
  224. data/lib/aws/iam/mfa_device.rb +52 -0
  225. data/lib/aws/iam/mfa_device_collection.rb +127 -0
  226. data/lib/aws/iam/policy.rb +46 -0
  227. data/lib/aws/iam/policy_collection.rb +188 -0
  228. data/lib/aws/iam/request.rb +29 -0
  229. data/lib/aws/iam/resource.rb +71 -0
  230. data/lib/aws/iam/server_certificate.rb +141 -0
  231. data/lib/aws/iam/server_certificate_collection.rb +138 -0
  232. data/lib/aws/iam/signing_certificate.rb +169 -0
  233. data/lib/aws/iam/signing_certificate_collection.rb +131 -0
  234. data/lib/aws/iam/user.rb +205 -0
  235. data/lib/aws/iam/user_collection.rb +133 -0
  236. data/lib/aws/iam/user_group_collection.rb +98 -0
  237. data/lib/aws/iam/user_policy.rb +90 -0
  238. data/lib/aws/iam/user_policy_collection.rb +45 -0
  239. data/lib/aws/iam/virtual_mfa_device.rb +139 -0
  240. data/lib/aws/iam/virtual_mfa_device_collection.rb +73 -0
  241. data/lib/aws/rails.rb +195 -0
  242. data/lib/aws/record.rb +116 -0
  243. data/lib/aws/record/abstract_base.rb +645 -0
  244. data/lib/aws/record/attributes.rb +384 -0
  245. data/lib/aws/record/conversion.rb +38 -0
  246. data/lib/aws/record/dirty_tracking.rb +285 -0
  247. data/lib/aws/record/errors.rb +143 -0
  248. data/lib/aws/record/exceptions.rb +48 -0
  249. data/lib/aws/record/hash_model.rb +161 -0
  250. data/lib/aws/record/hash_model/attributes.rb +182 -0
  251. data/lib/aws/record/hash_model/finder_methods.rb +172 -0
  252. data/lib/aws/record/hash_model/scope.rb +108 -0
  253. data/lib/aws/record/model.rb +427 -0
  254. data/lib/aws/record/model/attributes.rb +379 -0
  255. data/lib/aws/record/model/finder_methods.rb +232 -0
  256. data/lib/aws/record/model/scope.rb +213 -0
  257. data/lib/aws/record/naming.rb +31 -0
  258. data/lib/aws/record/scope.rb +199 -0
  259. data/lib/aws/record/validations.rb +694 -0
  260. data/lib/aws/record/validator.rb +237 -0
  261. data/lib/aws/record/validators/acceptance.rb +51 -0
  262. data/lib/aws/record/validators/block.rb +38 -0
  263. data/lib/aws/record/validators/confirmation.rb +43 -0
  264. data/lib/aws/record/validators/count.rb +108 -0
  265. data/lib/aws/record/validators/exclusion.rb +43 -0
  266. data/lib/aws/record/validators/format.rb +57 -0
  267. data/lib/aws/record/validators/inclusion.rb +56 -0
  268. data/lib/aws/record/validators/length.rb +107 -0
  269. data/lib/aws/record/validators/method.rb +33 -0
  270. data/lib/aws/record/validators/numericality.rb +138 -0
  271. data/lib/aws/record/validators/presence.rb +45 -0
  272. data/lib/aws/s3.rb +135 -0
  273. data/lib/aws/s3/access_control_list.rb +250 -0
  274. data/lib/aws/s3/acl_object.rb +264 -0
  275. data/lib/aws/s3/bucket.rb +393 -0
  276. data/lib/aws/s3/bucket_collection.rb +143 -0
  277. data/lib/aws/s3/bucket_lifecycle_configuration.rb +360 -0
  278. data/lib/aws/s3/bucket_version_collection.rb +77 -0
  279. data/lib/aws/s3/client.rb +1184 -0
  280. data/lib/aws/s3/client/xml.rb +177 -0
  281. data/lib/aws/s3/config.rb +26 -0
  282. data/lib/aws/s3/data_options.rb +100 -0
  283. data/lib/aws/s3/errors.rb +81 -0
  284. data/lib/aws/s3/multipart_upload.rb +317 -0
  285. data/lib/aws/s3/multipart_upload_collection.rb +68 -0
  286. data/lib/aws/s3/object_collection.rb +337 -0
  287. data/lib/aws/s3/object_metadata.rb +96 -0
  288. data/lib/aws/s3/object_upload_collection.rb +77 -0
  289. data/lib/aws/s3/object_version.rb +143 -0
  290. data/lib/aws/s3/object_version_collection.rb +89 -0
  291. data/lib/aws/s3/paginated_collection.rb +75 -0
  292. data/lib/aws/s3/policy.rb +74 -0
  293. data/lib/aws/s3/prefix_and_delimiter_collection.rb +47 -0
  294. data/lib/aws/s3/prefixed_collection.rb +81 -0
  295. data/lib/aws/s3/presigned_post.rb +553 -0
  296. data/lib/aws/s3/request.rb +201 -0
  297. data/lib/aws/s3/s3_object.rb +1037 -0
  298. data/lib/aws/s3/tree.rb +118 -0
  299. data/lib/aws/s3/tree/branch_node.rb +68 -0
  300. data/lib/aws/s3/tree/child_collection.rb +104 -0
  301. data/lib/aws/s3/tree/leaf_node.rb +94 -0
  302. data/lib/aws/s3/tree/node.rb +22 -0
  303. data/lib/aws/s3/tree/parent.rb +87 -0
  304. data/lib/aws/s3/uploaded_part.rb +80 -0
  305. data/lib/aws/s3/uploaded_part_collection.rb +84 -0
  306. data/lib/aws/simple_db.rb +217 -0
  307. data/lib/aws/simple_db/attribute.rb +154 -0
  308. data/lib/aws/simple_db/attribute_collection.rb +231 -0
  309. data/lib/aws/simple_db/client.rb +349 -0
  310. data/lib/aws/simple_db/config.rb +20 -0
  311. data/lib/aws/simple_db/consistent_read_option.rb +42 -0
  312. data/lib/aws/simple_db/delete_attributes.rb +62 -0
  313. data/lib/aws/simple_db/domain.rb +121 -0
  314. data/lib/aws/simple_db/domain_collection.rb +113 -0
  315. data/lib/aws/simple_db/domain_metadata.rb +110 -0
  316. data/lib/aws/simple_db/errors.rb +55 -0
  317. data/lib/aws/simple_db/expect_condition_option.rb +45 -0
  318. data/lib/aws/simple_db/item.rb +93 -0
  319. data/lib/aws/simple_db/item_collection.rb +649 -0
  320. data/lib/aws/simple_db/item_data.rb +73 -0
  321. data/lib/aws/simple_db/put_attributes.rb +60 -0
  322. data/lib/aws/simple_db/request.rb +23 -0
  323. data/lib/aws/simple_email_service.rb +426 -0
  324. data/lib/aws/simple_email_service/client.rb +286 -0
  325. data/lib/aws/simple_email_service/config.rb +19 -0
  326. data/lib/aws/simple_email_service/email_address_collection.rb +69 -0
  327. data/lib/aws/simple_email_service/errors.rb +22 -0
  328. data/lib/aws/simple_email_service/identity.rb +91 -0
  329. data/lib/aws/simple_email_service/identity_collection.rb +81 -0
  330. data/lib/aws/simple_email_service/quotas.rb +64 -0
  331. data/lib/aws/simple_email_service/request.rb +29 -0
  332. data/lib/aws/simple_workflow.rb +226 -0
  333. data/lib/aws/simple_workflow/activity_task.rb +173 -0
  334. data/lib/aws/simple_workflow/activity_task_collection.rb +123 -0
  335. data/lib/aws/simple_workflow/activity_type.rb +131 -0
  336. data/lib/aws/simple_workflow/activity_type_collection.rb +93 -0
  337. data/lib/aws/simple_workflow/client.rb +1434 -0
  338. data/lib/aws/simple_workflow/config.rb +18 -0
  339. data/lib/aws/simple_workflow/count.rb +49 -0
  340. data/lib/aws/simple_workflow/decision_task.rb +601 -0
  341. data/lib/aws/simple_workflow/decision_task_collection.rb +225 -0
  342. data/lib/aws/simple_workflow/domain.rb +122 -0
  343. data/lib/aws/simple_workflow/domain_collection.rb +169 -0
  344. data/lib/aws/simple_workflow/errors.rb +20 -0
  345. data/lib/aws/simple_workflow/history_event.rb +276 -0
  346. data/lib/aws/simple_workflow/history_event_collection.rb +76 -0
  347. data/lib/aws/simple_workflow/option_formatters.rb +82 -0
  348. data/lib/aws/simple_workflow/request.rb +36 -0
  349. data/lib/aws/simple_workflow/resource.rb +94 -0
  350. data/lib/aws/simple_workflow/type.rb +89 -0
  351. data/lib/aws/simple_workflow/type_collection.rb +140 -0
  352. data/lib/aws/simple_workflow/workflow_execution.rb +386 -0
  353. data/lib/aws/simple_workflow/workflow_execution_collection.rb +617 -0
  354. data/lib/aws/simple_workflow/workflow_type.rb +177 -0
  355. data/lib/aws/simple_workflow/workflow_type_collection.rb +91 -0
  356. data/lib/aws/sns.rb +74 -0
  357. data/lib/aws/sns/client.rb +371 -0
  358. data/lib/aws/sns/config.rb +18 -0
  359. data/lib/aws/sns/errors.rb +22 -0
  360. data/lib/aws/sns/has_delivery_policy.rb +68 -0
  361. data/lib/aws/sns/policy.rb +47 -0
  362. data/lib/aws/sns/request.rb +23 -0
  363. data/lib/aws/sns/subscription.rb +144 -0
  364. data/lib/aws/sns/subscription_collection.rb +80 -0
  365. data/lib/aws/sns/topic.rb +403 -0
  366. data/lib/aws/sns/topic_collection.rb +67 -0
  367. data/lib/aws/sns/topic_subscription_collection.rb +55 -0
  368. data/lib/aws/sqs.rb +79 -0
  369. data/lib/aws/sqs/client.rb +360 -0
  370. data/lib/aws/sqs/config.rb +18 -0
  371. data/lib/aws/sqs/errors.rb +101 -0
  372. data/lib/aws/sqs/policy.rb +48 -0
  373. data/lib/aws/sqs/queue.rb +725 -0
  374. data/lib/aws/sqs/queue_collection.rb +170 -0
  375. data/lib/aws/sqs/received_message.rb +181 -0
  376. data/lib/aws/sqs/received_sns_message.rb +112 -0
  377. data/lib/aws/sqs/request.rb +43 -0
  378. data/lib/aws/sts.rb +152 -0
  379. data/lib/aws/sts/client.rb +105 -0
  380. data/lib/aws/sts/config.rb +18 -0
  381. data/lib/aws/sts/errors.rb +22 -0
  382. data/lib/aws/sts/federated_session.rb +56 -0
  383. data/lib/aws/sts/policy.rb +30 -0
  384. data/lib/aws/sts/request.rb +29 -0
  385. data/lib/aws/sts/session.rb +48 -0
  386. data/lib/net/http/connection_pool.rb +210 -0
  387. data/lib/net/http/connection_pool/connection.rb +132 -0
  388. data/lib/net/http/connection_pool/session.rb +93 -0
  389. data/lib/user.rb +49 -0
  390. metadata +433 -0
@@ -0,0 +1,42 @@
1
+ # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+
14
+ require 'cgi'
15
+
16
+ module AWS
17
+ module Core
18
+
19
+ # Provides helper methods for URI escaping values and paths.
20
+ module UriEscape
21
+
22
+ # @param [String] value
23
+ # @return [String] Returns a URI escaped string.
24
+ def escape value
25
+ value = value.encode("UTF-8") if value.respond_to?(:encode)
26
+ CGI::escape(value.to_s).gsub('+', '%20').gsub('%7E', '~')
27
+ end
28
+
29
+ # @param [String] value
30
+ # @return [String] Returns a URI-escaped path without escaping the
31
+ # separators.
32
+ def escape_path value
33
+ escaped = ""
34
+ value.scan(%r{(/*)([^/]*)(/*)}) do |(leading, part, trailing)|
35
+ escaped << leading + escape(part) + trailing
36
+ end
37
+ escaped
38
+ end
39
+
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,242 @@
1
+ # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+
14
+ require 'base64'
15
+
16
+ module AWS
17
+ module Core
18
+ module XML
19
+ class Frame
20
+
21
+ TRANSLATE_DIGITS = ['0123456789'.freeze, ('X'*10).freeze]
22
+
23
+ EASY_FORMAT = "XXXX-XX-XXTXX:XX:XX.XXXZ".freeze
24
+
25
+ DATE_PUNCTUATION = ['-:.TZ'.freeze, (' '*5).freeze]
26
+
27
+ def initialize root_frame, parent_frame, element_name, rules
28
+
29
+ @root_frame = root_frame
30
+ @parent_frame = parent_frame
31
+ @element_name = element_name
32
+ @rules = rules
33
+ @rules[:children] ||= {}
34
+
35
+ @data = {}.merge(rules[:defaults] || {})
36
+ @text = nil
37
+
38
+ # initialize values for child frames of special types (e.g.
39
+ # lists, maps, and forced elements)
40
+ known_child_frames.each do |child_frame|
41
+ context = data_context_for(child_frame)
42
+ if child_frame.list?
43
+ context[child_frame.ruby_name] = []
44
+ elsif child_frame.map?
45
+ context[child_frame.ruby_name] = {}
46
+ elsif child_frame.forced?
47
+ context[child_frame.ruby_name] = child_frame.value
48
+ end
49
+ end
50
+
51
+ end
52
+
53
+ attr_reader :root_frame
54
+ attr_reader :parent_frame
55
+ attr_reader :element_name
56
+ attr_reader :rules
57
+
58
+ def data
59
+ ignored? ? parent_frame.data : @data
60
+ end
61
+
62
+ def ruby_name
63
+ rules[:rename] || root_frame.inflect(element_name)
64
+ end
65
+
66
+ def rules_for child_element_name
67
+ rules[:children][child_element_name] || {}
68
+ end
69
+
70
+ # The list of child frames that have customizations (rules), all
71
+ # other children will be parsed using standard rules
72
+ def known_child_frames
73
+ rules[:children].keys.map {|name| build_child_frame(name) }
74
+ end
75
+
76
+ def build_child_frame element_name
77
+ # if element_name should be wrapped
78
+ # build a frame for the wrapper
79
+ # build a child frame from the wrapper
80
+ # else
81
+ Frame.new(root_frame, self, element_name, rules_for(element_name))
82
+ end
83
+
84
+ def consume_child_frame child_frame
85
+
86
+ child_frame.close
87
+
88
+ return if child_frame.ignored?
89
+
90
+ ruby_name = child_frame.ruby_name
91
+ value = child_frame.value
92
+ context = data_context_for(child_frame)
93
+
94
+ if child_frame.list?
95
+ context[ruby_name] << value
96
+ elsif map = child_frame.map?
97
+ context[ruby_name][child_frame.map_key] = child_frame.map_value
98
+ else
99
+ context[ruby_name] = value
100
+ end
101
+ end
102
+
103
+ def close
104
+ # some xml elements should be indexed at the root level
105
+ # The :index rule determines the name of this index
106
+ # and what keys the data should be indexed as (one element
107
+ # can be indexed under multiple keys). The index value
108
+ # is always the element itself.
109
+ if index = @rules[:index]
110
+ index_keys_for(index) do |key|
111
+ root_frame.add_to_index(index[:name], key, data)
112
+ end
113
+ end
114
+ end
115
+
116
+ def index_keys_for index_opts, &block
117
+
118
+ # simple (single) key
119
+ if key = index_opts[:key]
120
+ yield(data[key])
121
+ return
122
+ end
123
+
124
+ # composite key, joined by ":"
125
+ if parts = index_opts[:keys]
126
+ composite_key = parts.map{|part| data[part] }.join(":")
127
+ yield(composite_key)
128
+ return
129
+ end
130
+
131
+ # multiple keys, collected from the given path
132
+ if path = index_opts[:key_path]
133
+ keys_from_path(data, path.dup, &block)
134
+ return
135
+ end
136
+
137
+ raise "missing require index rule option, :key, :keys or :key_path"
138
+
139
+ end
140
+
141
+ def keys_from_path data, path, &block
142
+
143
+ step = path.shift
144
+ value = data[step]
145
+
146
+ if path.empty?
147
+ yield(value)
148
+ return
149
+ end
150
+
151
+ if value.is_a?(Array)
152
+ value.each do |v|
153
+ keys_from_path(v, path.dup, &block)
154
+ end
155
+ else
156
+ keys_from_path(value, path.dup, &block)
157
+ end
158
+
159
+ end
160
+
161
+ def add_text chars
162
+ @text ||= ''
163
+ @text << chars
164
+ end
165
+
166
+ def value
167
+ if !data.empty?
168
+ data[:encoding] == 'base64' ? Base64.decode64(@text.strip) : data
169
+ elsif @text.nil?
170
+ rules[:type] == :boolean ? false : nil
171
+ else
172
+ case rules[:type]
173
+ when nil then @text
174
+ when :datetime then datetime_like_value(DateTime, :civil)
175
+ when :time then datetime_like_value(Time, :utc)
176
+ when :integer then @text.to_i
177
+ when :float then @text.to_f
178
+ when :boolean then @text == 'true'
179
+ when :blob then Base64.decode64(@text)
180
+ when :symbol then Core::Inflection.ruby_name(@text).to_sym
181
+ else raise "unhandled type"
182
+ end
183
+ end
184
+ end
185
+
186
+ def ignored?
187
+ @rules[:ignore]
188
+ end
189
+
190
+ def forced?
191
+ @rules[:force]
192
+ end
193
+
194
+ def list?
195
+ @rules[:list]
196
+ end
197
+
198
+ def map?
199
+ @rules[:map]
200
+ end
201
+
202
+ def wrapped?
203
+ @rules[:wrap]
204
+ end
205
+ alias_method :wrapper, :wrapped?
206
+
207
+ protected
208
+
209
+ def map_key
210
+ data[root_frame.inflect(@rules[:map].first)]
211
+ end
212
+
213
+ def map_value
214
+ data[root_frame.inflect(@rules[:map].last)]
215
+ end
216
+
217
+ def data_context_for child_frame
218
+ if child_frame.wrapped?
219
+ data[child_frame.wrapper] ||= {}
220
+ data[child_frame.wrapper]
221
+ else
222
+ data
223
+ end
224
+ end
225
+
226
+ def datetime_like_value klass, parts_constructor
227
+ # it's way faster to parse this specific format manually
228
+ # vs. DateTime#parse, and this happens to be the format
229
+ # that AWS uses almost (??) everywhere.
230
+ if @text.tr(*TRANSLATE_DIGITS) == EASY_FORMAT
231
+ parts = @text.tr(*DATE_PUNCTUATION).chop.split.map {|p| p.to_i }
232
+ klass.send(parts_constructor, *parts)
233
+ else
234
+ # fallback in case we have to handle another date format
235
+ klass.parse(@text)
236
+ end
237
+ end
238
+
239
+ end
240
+ end
241
+ end
242
+ end
@@ -0,0 +1,85 @@
1
+ # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+
14
+ module AWS
15
+ module Core
16
+ module XML
17
+
18
+ # @private
19
+ module FrameStack
20
+
21
+ # @param [Hash] rules A hash of parser rules. These
22
+ # rules are typically generated by an {XML::Grammar}.
23
+ def initialize rules
24
+ @frame = RootFrame.new(rules)
25
+ end
26
+
27
+ def sax_parse xml
28
+ raise NotImplementedError
29
+ end
30
+ protected :sax_parse
31
+
32
+ # Parses the xml string and returns a hash with the resutls.
33
+ # @param [String] xml
34
+ # @return [Hash]
35
+ def parse xml
36
+ sax_parse(xml)
37
+ @frame.value
38
+ end
39
+
40
+ # Increase the frame stack level by one.
41
+ # @param [String] element_name The name of the xml opening tag.
42
+ # @param [Hash] attributes A hash of xml element attributes.
43
+ # @return [nil]
44
+ def start_element element_name, attributes = {}
45
+ @frame = @frame.build_child_frame(element_name)
46
+ self.attributes(attributes)
47
+ nil
48
+ end
49
+
50
+ # Increase the frame stack level by one by treating
51
+ # xml element attributes as nested elements.
52
+ # @param [Hash] attributes A hash of attributes names to values.
53
+ # @return [nil]
54
+ def attributes attributes
55
+ attributes.each_pair do |attr_name, attr_value|
56
+ attr_frame = @frame.build_child_frame(attr_name)
57
+ attr_frame.add_text(attr_value)
58
+ @frame.consume_child_frame(attr_frame)
59
+ end
60
+ nil
61
+ end
62
+
63
+ # Pops the top frame off the stack. When closing frames
64
+ # their final value is computed.
65
+ # @overload end_element
66
+ # @return [nil]
67
+ def end_element *ignored
68
+ parent = @frame.parent_frame
69
+ child = @frame
70
+ parent.consume_child_frame(child)
71
+ @frame = @frame.parent_frame
72
+ nil
73
+ end
74
+
75
+ # Adds text to the current frame. Frames that only contain
76
+ # text and no child elements are leaf nodes and have
77
+ # raw string values.
78
+ def text text
79
+ @frame.add_text(text) if @frame
80
+ end
81
+
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,299 @@
1
+ # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+
14
+ module AWS
15
+ module Core
16
+ module XML
17
+
18
+ # A class that simplifies building XML {Parser} rules. This is also
19
+ # a compatability layer between the old and new formats of the api
20
+ # config.
21
+ class Grammar
22
+
23
+ def initialize rules = {}, options = {}
24
+ @rules = rules
25
+ @context = @rules
26
+ @element_name = 'xml'
27
+ @inflect_rename = options.key?(:inflect_rename) ?
28
+ options[:inflect_rename] : true
29
+ end
30
+
31
+ # Parses the XML with the rules provided by the current grammar.
32
+ # This method is meant to provide backwards compatability with
33
+ # the old XmlGrammar class that handled rules and parsing.
34
+ # @param [String] xml
35
+ # @return [Data] Returns a hash-like parsed response.
36
+ def parse xml
37
+ Data.new(Parser.parse(xml, rules))
38
+ end
39
+
40
+ # @return [Hash] Returns a hash of rules defined by this grammar.
41
+ attr_reader :rules
42
+
43
+ # Returns a new grammar (leaving the current one un-modified) with
44
+ # the given customizations applied. Customizations can be given in
45
+ # a hash-form or in a block form.
46
+ #
47
+ # @example Block-form customizations
48
+ #
49
+ # grammar.customize do
50
+ # element "EnumElement" do
51
+ # symbol_value
52
+ # list
53
+ # end
54
+ # end
55
+ #
56
+ # @example Hash-form customizations
57
+ #
58
+ # grammar.customize "EnumElement" => [:symbol_value, :list]
59
+ #
60
+ # @return [Grammar] Returns a grammar with the given customizations
61
+ # applied.
62
+ #
63
+ def customize customizations = nil, &block
64
+ opts = { :inflect_rename => @inflect_rename }
65
+ self.class.customize(customizations, @rules, opts, &block)
66
+ end
67
+
68
+ # Applies customizations to the current grammar, not returning
69
+ # a new grammar.
70
+ def customize! customizations = nil, &block
71
+ apply_customizations(customizations) if customizations
72
+ instance_eval(&block) if block_given?
73
+ self
74
+ end
75
+
76
+ def self.customize customizations = nil, rules = {}, opts = {}, &block
77
+ grammar = self.new(deep_copy(rules), opts)
78
+ grammar.send(:apply_customizations, customizations) if customizations
79
+ grammar.instance_eval(&block) if block_given?
80
+ grammar
81
+ end
82
+
83
+ def self.parse xml
84
+ self.new.parse(xml)
85
+ end
86
+
87
+ protected
88
+
89
+ # Performs a deep copy of the rules hash so that it can be
90
+ # customized without chaning the parent grammar.
91
+ def self.deep_copy rules
92
+ rules.inject({}) do |copy,(key,value)|
93
+ copy[key] = value.is_a?(Hash) ? deep_copy(value) : value
94
+ copy
95
+ end
96
+ end
97
+
98
+ def apply_customizations customizations
99
+ customizations.each do |item|
100
+ (type, identifier, args) = parse_customization_item(item)
101
+ case type
102
+ when :method
103
+ validate_config_method(identifier)
104
+ validate_args(identifier, args)
105
+ send(identifier, *args)
106
+ when :element
107
+ element(identifier) do
108
+ apply_customizations(args)
109
+ end
110
+ end
111
+ end
112
+ end
113
+
114
+ def parse_customization_item item
115
+ case item
116
+ when Symbol
117
+ [:method, item, []]
118
+ when Hash
119
+ (method, arg) = item.to_a.first
120
+ if method.kind_of?(Symbol)
121
+ [:method, method, [arg].flatten]
122
+ else
123
+ [:element, method, arg]
124
+ end
125
+ end
126
+ end
127
+
128
+ def validate_config_method(method)
129
+ allow_methods = %w(
130
+ rename attribute_name boolean integer long float list force
131
+ ignore collect_values symbol_value timestamp map_entry map
132
+ blob string
133
+ )
134
+ unless allow_methods.include?(method.to_s)
135
+ raise "#{method} cannot be used in configuration"
136
+ end
137
+ end
138
+
139
+ def validate_args(identifier, args)
140
+ arity = method(identifier).arity
141
+ if args.length > 0
142
+ raise "#{identifier} does not accept an argument" if
143
+ arity == 0
144
+ else
145
+ raise "#{identifier} requires an argument" unless
146
+ arity == 0 || arity == -1
147
+ end
148
+ end
149
+
150
+ def inflect value
151
+ Inflection.ruby_name(value.to_s).to_sym
152
+ end
153
+
154
+ ##
155
+ ## customization methods
156
+ ##
157
+
158
+ def element element_name, &block
159
+
160
+ parent_context = @context
161
+ parent_element_name = @element_name
162
+
163
+ @context = context_for_child(element_name)
164
+
165
+ @element_name = element_name
166
+
167
+ begin
168
+ if block_given?
169
+ block.arity == 1 ? yield(parent_element_name) : yield
170
+ end
171
+ ensure
172
+ @context = parent_context
173
+ @element_name = parent_element_name
174
+ end
175
+
176
+ end
177
+
178
+ def ignore
179
+ @context[:ignore] = true
180
+ end
181
+
182
+ def rename new_name
183
+ if @inflect_rename
184
+ @context[:rename] = inflect(new_name)
185
+ else
186
+ @context[:rename] = new_name
187
+ end
188
+ end
189
+
190
+ def force
191
+ @context[:force] = true
192
+ end
193
+
194
+ def collect_values
195
+ @context[:list] = true
196
+ end
197
+
198
+ def index index_name, options = {}
199
+ @context[:index] = options.merge(:name => index_name)
200
+ end
201
+
202
+ def default_value name, value
203
+ @context[:defaults] ||= {}
204
+ @context[:defaults][name] = value
205
+ end
206
+
207
+ def list child_element_name = nil, &block
208
+ if child_element_name
209
+ ignore
210
+ element(child_element_name) do |parent_element_name|
211
+ rename(parent_element_name)
212
+ collect_values
213
+ yield if block_given?
214
+ end
215
+ else
216
+ collect_values
217
+ end
218
+ end
219
+
220
+ def map_entry key_element_name, value_element_name
221
+ @context[:map] = [key_element_name, value_element_name]
222
+ end
223
+
224
+ def map map_element_name, key_element_name, value_element_name
225
+ ignore
226
+ element(map_element_name) do |parent_element_name|
227
+ rename(parent_element_name)
228
+ map_entry(key_element_name, value_element_name)
229
+ end
230
+ end
231
+
232
+ def wrapper method_name, options = {}, &block
233
+ options[:for].each do |child|
234
+ context_for_child(child)[:wrap] = method_name
235
+ end
236
+ end
237
+
238
+ def construct_value &block
239
+ raise 'remove the need for this'
240
+ end
241
+
242
+ def boolean_value
243
+ @context[:type] = :boolean
244
+ end
245
+ alias_method :boolean, :boolean_value
246
+
247
+ def blob_value
248
+ @context[:type] = :blob
249
+ end
250
+ alias_method :blob, :blob_value
251
+
252
+ def datetime_value
253
+ @context[:type] = :datetime
254
+ end
255
+ alias_method :datetime, :datetime_value
256
+
257
+ def time_value
258
+ @context[:type] = :time
259
+ end
260
+ alias_method :timestamp, :time_value
261
+ alias_method :time, :time_value
262
+
263
+ def string_value
264
+ @context[:type] = :string
265
+ end
266
+ alias_method :string, :string_value
267
+
268
+ def integer_value
269
+ @context[:type] = :integer
270
+ end
271
+ alias_method :integer, :integer_value
272
+ alias_method :long, :integer_value
273
+
274
+ def float_value
275
+ @context[:type] = :float
276
+ end
277
+ alias_method :float, :float_value
278
+
279
+ def symbol_value
280
+ @context[:type] = :symbol
281
+ end
282
+ alias_method :symbol, :symbol_value
283
+
284
+ def eql? other
285
+ other.is_a?(Grammar) and self.rules == other.rules
286
+ end
287
+ alias_method :==, :eql?
288
+
289
+ protected
290
+ def context_for_child child_element_name
291
+ @context[:children] ||= {}
292
+ @context[:children][child_element_name] ||= {}
293
+ @context[:children][child_element_name]
294
+ end
295
+
296
+ end
297
+ end
298
+ end
299
+ end