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,110 @@
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
+ class Client
17
+
18
+ # When a client class extends this module, its API configuration is
19
+ # parsed. For each operation in the API configuration, one client
20
+ # method is added.
21
+ #
22
+ # Clients extending QueryJSON all have in common their method of
23
+ # serializing request (input) parameters and parsing response
24
+ # (output) JSON.
25
+ #
26
+ module QueryJSON
27
+
28
+ def self.extended base
29
+ base.send(:include, ErrorParser)
30
+ base.send(:define_client_methods)
31
+ end
32
+
33
+ # @return [Hash<Symbol,OptionGrammar>] Returns a hash option
34
+ # parsers. Hash keys are client method names and hash
35
+ # values are {OptionGrammar} objects.
36
+ # @private
37
+ def option_parsers
38
+ @option_parsers ||= {}
39
+ end
40
+
41
+ protected
42
+
43
+ # Enumerates through the operations specified in the API
44
+ # configuration (yaml configuration file found in lib/api_config/)
45
+ # and defines one request method per operation.
46
+ def define_client_methods
47
+ api_config[:operations].each do |op|
48
+
49
+ method_name = op[:method]
50
+
51
+ option_parsers[method_name] = OptionGrammar.customize(op[:inputs])
52
+
53
+ end
54
+ end
55
+
56
+ def define_client_method method_name, operation
57
+ add_client_request_method(method_name) do
58
+
59
+ configure_request do |request, options|
60
+
61
+ parser = self.class.option_parsers[method_name]
62
+ x_amz_target = self.class::TARGET_PREFIX + operation
63
+
64
+ request.headers["content-type"] = "application/x-amz-json-1.0"
65
+ request.headers["x-amz-target"] = x_amz_target
66
+ request.body = parser.to_json(options)
67
+
68
+ end
69
+
70
+ process_response do |response|
71
+ response_body = response.http_response.body
72
+ response_body = "{}" if response_body == ""
73
+ data = JSON.load(response_body)
74
+ MetaUtils.extend_method(response, :data) { data }
75
+ end
76
+
77
+ simulate_response do |response|
78
+ data = {}
79
+ MetaUtils.extend_method(response, :data) { data }
80
+ end
81
+
82
+ end
83
+ end
84
+
85
+ module ErrorParser
86
+
87
+ def extract_error_details response
88
+ if
89
+ response.http_response.status >= 300 and
90
+ body = response.http_response.body and
91
+ json = (JSON.load(body) rescue nil) and
92
+ type = json["__type"] and
93
+ matches = type.match(/\#(.*)$/)
94
+ then
95
+ code = matches[1]
96
+ if code == 'RequestEntityTooLarge'
97
+ message = 'Request body must be less than 1 MB'
98
+ else
99
+ message = json['message']
100
+ end
101
+ [code, message]
102
+ end
103
+ end
104
+
105
+ end
106
+
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,122 @@
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
+ class Client
17
+
18
+ # When a client class extends this module, its API configuration
19
+ # is parsed. For each operation in the API configuration, one
20
+ # client method is added.
21
+ #
22
+ # Clients extending QueryXML all have in common their method
23
+ # of serializing request (input) paramters and parsing response
24
+ # (output) XML.
25
+ #
26
+ module QueryXML
27
+
28
+ # @private
29
+ def self.extended base
30
+ base.send(:include, ErrorParser)
31
+ base.send(:define_parsers)
32
+ end
33
+
34
+ # @return [Hash<Symbol,OptionGrammar>] Returns a hash option
35
+ # parsers. Hash keys are client method names and hash
36
+ # values are {OptionGrammar} objects.
37
+ # @private
38
+ def option_parsers
39
+ @option_parsers ||= {}
40
+ end
41
+
42
+ # @return [Hash<Symbol,XML::Parser>] Returns a hash of xml
43
+ # parsers. Hash keys are client method names and hash
44
+ # values are {XML::Parser} objects.
45
+ # @private
46
+ def xml_parsers
47
+ @xml_parsers ||= {}
48
+ end
49
+
50
+ protected
51
+
52
+ # Enumerates through the operations specified in the API
53
+ # configuration (yaml configuration file found in lib/api_config/)
54
+ # and defines one request method per operation.
55
+ def define_parsers
56
+ api_config[:operations].each do |op|
57
+
58
+ method_name = op[:method]
59
+
60
+ option_parsers[method_name] = OptionGrammar.customize(op[:inputs])
61
+ xml_parsers[method_name] = XML::Parser.new(op[:outputs])
62
+
63
+ end
64
+ end
65
+
66
+ def define_client_method method_name, operation_name
67
+ add_client_request_method(method_name) do
68
+
69
+ configure_request do |request, options|
70
+
71
+ now = Time.now.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
72
+
73
+ request.headers['Content-Type'] =
74
+ 'application/x-www-form-urlencoded; charset=utf-8'
75
+
76
+ request.http_method = 'POST'
77
+ request.add_param 'Timestamp', now
78
+ request.add_param 'Version', self.class::API_VERSION
79
+ request.add_param 'Action', operation_name
80
+
81
+ parser = self.class.option_parsers[method_name]
82
+ parser.request_params(options).each do |param|
83
+ request.add_param(param)
84
+ end
85
+
86
+ end
87
+
88
+ process_response do |response|
89
+ parser = self.class.xml_parsers[method_name]
90
+ response.data = parser.parse(response.http_response.body)
91
+ end
92
+
93
+ simulate_response do |response|
94
+ parser = self.class.xml_parsers[method_name]
95
+ response.data = parser.simulate
96
+ end
97
+
98
+ end
99
+ end
100
+
101
+ module ErrorParser
102
+
103
+ protected
104
+
105
+ def extract_error_details response
106
+ if
107
+ response.http_response.status >= 300 and
108
+ body = response.http_response.body and
109
+ error = errors_module::GRAMMAR.parse(body) and
110
+ error[:code]
111
+ then
112
+ [error[:code], error[:message]]
113
+ end
114
+ end
115
+
116
+ end
117
+
118
+ end
119
+ end
120
+ end
121
+ end
122
+
@@ -0,0 +1,234 @@
1
+ # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
3
+ # may not use this file except in compliance with the License. A copy of
4
+ # the License is located at
5
+ #
6
+ # http://aws.amazon.com/apache2.0/
7
+ #
8
+ # or in the "license" file accompanying this file. This file is
9
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
10
+ # ANY KIND, either express or implied. See the License for the specific
11
+ # language governing permissions and limitations under the License.
12
+
13
+ module AWS
14
+ module Core
15
+
16
+ # = Different Collection Types in AWS
17
+ #
18
+ # The Collection module acts as a namespace and base implementation for
19
+ # the primary collection types in AWS:
20
+ #
21
+ # * {AWS::Core::Collection::Simple}
22
+ # * {AWS::Core::Collection::Limitable}
23
+ #
24
+ # Each AWS service allows provides a method to enumerate resources.
25
+ #
26
+ # * Services that return all results in a single response use
27
+ # {AWS::Core::Collection::Simple}.
28
+ #
29
+ # * Services that truncate large results sets *AND* allow you to provide
30
+ # a perfered maximum number of results use
31
+ # {AWS::Core::Collection::Limitable}.
32
+ #
33
+ module Collection
34
+
35
+ AWS.register_autoloads(self) do
36
+ autoload :Simple, 'simple'
37
+ autoload :Limitable, 'limitable'
38
+ end
39
+
40
+ include Enumerable
41
+
42
+ # Yields once for every item in this collection.
43
+ #
44
+ # collection.each {|item| ... }
45
+ #
46
+ # @note If you want fewer than all items, it is generally better
47
+ # to call {#page} than {#each} with a +:limit+.
48
+ #
49
+ # @param [Hash] options
50
+ #
51
+ # @option options [Integer] :limit (nil) The maximum number of
52
+ # items to enumerate from this collection.
53
+ #
54
+ # @option options [next_token] :next_token (nil)
55
+ # Acts as an offset. +:next_token+ may be returned by {#each} and
56
+ # {#each_batch} when a +:limit+ is provided.
57
+ #
58
+ # @return [nil_or_next_token] Returns nil if all items were enumerated.
59
+ # If some items were excluded because of a +:limit+ option then
60
+ # a +next_token+ is returned. Calling an enumerable method on
61
+ # the same collection with the +next_token+ acts like an offset.
62
+ #
63
+ def each options = {}, &block
64
+ each_batch(options) do |batch|
65
+ batch.each(&block)
66
+ end
67
+ end
68
+
69
+ # Yields items from this collection in batches.
70
+ #
71
+ # collection.each_batch do |batch|
72
+ # batch.each do |item|
73
+ # # ...
74
+ # end
75
+ # end
76
+ #
77
+ # == Variable Batch Sizes
78
+ #
79
+ # Each AWS service has its own rules on how it returns results.
80
+ # Because of this batch size may very based on:
81
+ #
82
+ # * Service limits (e.g. S3 limits keys to 1000 per response)
83
+ #
84
+ # * The size of response objects (SimpleDB limits responses to 1MB)
85
+ #
86
+ # * Time to process the request
87
+ #
88
+ # Because of these variables, batch sizes may not be consistent for
89
+ # a single collection. Each batch represents all of the items returned
90
+ # in a single resopnse.
91
+ #
92
+ # @note If you require fixed size batches, see {#in_groups_of}.
93
+ #
94
+ # @param (see #each)
95
+ #
96
+ # @option (see #each)
97
+ #
98
+ # @return (see #each)
99
+ #
100
+ def each_batch options = {}, &block
101
+ raise NotImplementedError
102
+ end
103
+
104
+ # Use this method when you want to call a method provided by
105
+ # Enumerable, but you need to pass options:
106
+ #
107
+ # # raises an error because collect does not accept arguments
108
+ # collection.collect(:limit => 10) {|i| i.name }
109
+ #
110
+ # # not an issue with the enum method
111
+ # collection.enum(:limit => 10).collect(&:name)
112
+ #
113
+ # @param (see #each)
114
+ #
115
+ # @option (see #each)
116
+ #
117
+ # @return [Enumerable::Enumerator] Returns an enumerator for this
118
+ # collection.
119
+ #
120
+ def enum options = {}
121
+ Enumerator.new(self, :each, options)
122
+ end
123
+ alias_method :enumerator, :enum
124
+
125
+ # Returns the first item from this collection.
126
+ #
127
+ # @return [item_or_nil] Returns the first item from this collection or
128
+ # nil if the collection is empty.
129
+ #
130
+ def first options = {}
131
+ enum(options.merge(:limit => 1)).first
132
+ end
133
+
134
+ # Yields items from this collection in groups of an exact
135
+ # size (except for perhaps the last group).
136
+ #
137
+ # collection.in_groups_of (10, :limit => 30) do |group|
138
+ #
139
+ # # each group should be exactly 10 items unless
140
+ # # fewer than 30 items are returned by the service
141
+ # group.each do |item|
142
+ # #...
143
+ # end
144
+ #
145
+ # end
146
+ #
147
+ # @param [Integer] size Size each each group of objects
148
+ # should be yielded in.
149
+ # @param [Hash] options
150
+ # @option (see #each)
151
+ # @return (see #each)
152
+ def in_groups_of size, options = {}, &block
153
+
154
+ group = []
155
+
156
+ nil_or_next_token = each_batch(options) do |batch|
157
+ batch.each do |item|
158
+ group << item
159
+ if group.size == size
160
+ yield(group)
161
+ group = []
162
+ end
163
+ end
164
+ end
165
+
166
+ yield(group) unless group.empty?
167
+
168
+ nil_or_next_token
169
+
170
+ end
171
+
172
+ # Returns a single page of results in a kind-of array ({PageResult}).
173
+ #
174
+ # items = collection.page(:per_page => 10) # defaults to 10 items
175
+ # items.is_a?(Array) # => true
176
+ # items.size # => 8
177
+ # items.per_page # => 10
178
+ # items.last_page? # => true
179
+ #
180
+ # If you need to display a "next page" link in a web view you can
181
+ # use the #more? method. Just make sure the generated link
182
+ # contains the +next_token+.
183
+ #
184
+ # <% if items.more? %>
185
+ # <%= link_to('Next Page', params.merge(:next_token => items.next_token) %>
186
+ # <% end %>
187
+ #
188
+ # Then in your controller you can find the next page of results:
189
+ #
190
+ # items = collection.page(:next_token => params[:next_token])
191
+ #
192
+ # Given a {PageResult} you can also get more results directly:
193
+ #
194
+ # more_items = items.next_page
195
+ #
196
+ # @note This method does not accept a +:page+ option, which means you
197
+ # can only start at the begining of the collection and request
198
+ # the next page of results. You can not choose an offset
199
+ # or know how many pages of results there will be.
200
+ #
201
+ # @param [Hash] options A hash of options that modifies the
202
+ # items returned in the page of results.
203
+ #
204
+ # @option options [Integer] :per_page (10) The number of results
205
+ # to return for each page.
206
+ #
207
+ # @option options [String] :next_token (nil) A token that indicates
208
+ # an offset to use when paging items. Next tokens are returned
209
+ # by {PageResult#next_token}.
210
+ #
211
+ # Next tokens should only be consumed by the same collection that
212
+ # created them.
213
+ #
214
+ def page options = {}
215
+
216
+ each_opts = options.dup
217
+
218
+ per_page = each_opts.delete(:per_page)
219
+ per_page = [nil,''].include?(per_page) ? 10 : per_page.to_i
220
+
221
+ each_opts[:limit] = per_page
222
+
223
+ items = []
224
+ next_token = each(each_opts) do |item|
225
+ items << item
226
+ end
227
+
228
+ Core::PageResult.new(self, items, per_page, next_token)
229
+
230
+ end
231
+
232
+ end
233
+ end
234
+ end