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,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
+ module AWS
15
+ module Core
16
+
17
+ # Data is a light wrapper around a Ruby hash that provides
18
+ # method missing access to the hash contents.
19
+ #
20
+ # == Method Missing Access
21
+ #
22
+ # You can access hash content with methods if their keys
23
+ # are symbols.
24
+ #
25
+ # data = AWS::Core::Data.new({ :a => 1, :b => 2, :c => true })
26
+ # data.a #=> 1
27
+ # data.b #=> 2
28
+ # data.c #=> true
29
+ # data.d #=> raises NoMethodError
30
+ #
31
+ # == Boolean Methods
32
+ #
33
+ # Given the structure above you can also use question-mark methods.
34
+ #
35
+ # data.c? #=> true
36
+ # data.d? #=> raises NoMethodError
37
+ #
38
+ # == Nested Hashes
39
+ #
40
+ # If the data contains nested hashes you can chain methods into
41
+ # the structure.
42
+ #
43
+ # data = AWS::Core::Data.new(:a => { :b => { :c => 'abc' }})
44
+ # data.a.b.c #=> 'abc'
45
+ #
46
+ # == Nested Arrays
47
+ #
48
+ # Arrays are wrapped in {Data::List} objects. They ensure any
49
+ # data returned is correctly wrapped so you can continue using
50
+ # method-missing access.
51
+ #
52
+ # data = AWS::Core::Data.new(
53
+ # :people => [
54
+ # {:name => 'john'},
55
+ # {:name => 'jane'},
56
+ # ]})
57
+ #
58
+ # data.people[0].name #=> 'john'
59
+ # data.people[1].name #=> 'jane'
60
+ #
61
+ # data.people.map(&:name) #=> ['john','jane']
62
+ #
63
+ class Data
64
+
65
+ module MethodMissingProxy
66
+
67
+ # @private
68
+ def id
69
+ self[:id] || self.id
70
+ end
71
+
72
+ def [] index_or_key
73
+ Data.cast(@data[index_or_key])
74
+ end
75
+
76
+ # @return [Boolean] Returns true if the passed object equals
77
+ # the wrapped array.
78
+ def eql? other
79
+ if other.is_a?(MethodMissingProxy)
80
+ @data == other._data
81
+ else
82
+ @data == other
83
+ end
84
+ end
85
+ alias_method :==, :eql?
86
+
87
+ protected
88
+
89
+ def method_missing *args, &block
90
+ if block_given?
91
+ return_value = @data.send(*args) do |*values|
92
+ yield(*values.flatten.map{|v| Data.cast(v) })
93
+ end
94
+ Data.cast(return_value)
95
+ else
96
+ Data.cast(@data.send(*args))
97
+ end
98
+ end
99
+
100
+ def _data
101
+ @data
102
+ end
103
+
104
+ end
105
+
106
+ include MethodMissingProxy
107
+
108
+ def method_missing method_name, *args, &block
109
+ if
110
+ args.empty? and !block_given? and
111
+ key = _remove_question_mark(method_name) and
112
+ @data.has_key?(key)
113
+ then
114
+ Data.cast(@data[key])
115
+ else
116
+ super
117
+ end
118
+ end
119
+
120
+ # @param [Hash] data The ruby hash of data you need wrapped.
121
+ def initialize data
122
+ @data = data
123
+ end
124
+
125
+ # @return [Hash] Returns contents of this Data object as a raw hash.
126
+ def to_hash
127
+ @data
128
+ end
129
+ alias_method :to_h, :to_hash
130
+
131
+ # @return [Array]
132
+ def to_a
133
+ @data.to_a
134
+ end
135
+ alias_method :to_ary, :to_a
136
+
137
+ # @param [String,Symbol] method_name
138
+ # @return [Boolean] Returns true if this data object will
139
+ # respond to the given method name.
140
+ def respond_to? method_name
141
+ @data.key?(_remove_question_mark(method_name)) or
142
+ @data.respond_to?(method_name)
143
+ end
144
+
145
+ # Returns an inspection string from the wrapped data.
146
+ #
147
+ # data = AWS::Core::Data.new({ :a => 1, :b => 2, :c => true })
148
+ # data.inspect #=> '{:a=>1, :b=>2, :c=>true}'
149
+ #
150
+ # @return [String]
151
+ #
152
+ def inspect
153
+ @data.inspect
154
+ end
155
+
156
+ # @private
157
+ def kind_of? klass
158
+ if klass == Hash
159
+ true
160
+ else
161
+ super
162
+ end
163
+ end
164
+ alias_method :is_a?, :kind_of?
165
+
166
+ protected
167
+
168
+ def _remove_question_mark method_name
169
+ case method_name
170
+ when Symbol then method_name.to_s.sub(/\?$/, '').to_sym
171
+ when String then method_name.sub(/\?$/, '')
172
+ else method_name
173
+ end
174
+ end
175
+
176
+ class << self
177
+
178
+ # Given a hash, this method returns a {Data} object. Given
179
+ # an Array, this method returns a {Data::List} object. Everything
180
+ # else is returned as is.
181
+ #
182
+ # @param [Object] value The value to conditionally wrap.
183
+ #
184
+ # @return [Data,Data::List,Object] Wraps hashes and lists with
185
+ # Data and List objects, all other objects are returned as
186
+ # is.
187
+ #
188
+ def cast value
189
+ case value
190
+ when Hash then Data.new(value)
191
+ when Array then Data::List.new(value)
192
+ else value
193
+ end
194
+ end
195
+
196
+ end
197
+
198
+ class List
199
+
200
+ include MethodMissingProxy
201
+
202
+ # @param [Array] array
203
+ def initialize array
204
+ @data = array
205
+ end
206
+
207
+ # @return [String] Returns the inspection string for the
208
+ # wrapped array.
209
+ def inspect
210
+ @data.inspect
211
+ end
212
+
213
+ # @return [Array] Returns the contents of this Data::List as
214
+ # a raw array.
215
+ def to_ary
216
+ @data
217
+ end
218
+ alias_method :to_a, :to_ary
219
+
220
+ # #inject works on Core::Data::List in in 1.8.7 and 1.9.3, but not
221
+ # in 1.9.2 unless we define it like so.
222
+ # @private
223
+ def inject *args, &block
224
+ @data.inject(*args) do |obj,value|
225
+ yield(Data.cast(obj),Data.cast(value))
226
+ end
227
+ end
228
+
229
+ # @private
230
+ def kind_of? klass
231
+ if klass == Array
232
+ true
233
+ else
234
+ super
235
+ end
236
+ end
237
+ alias_method :is_a?, :kind_of?
238
+
239
+ end
240
+ end
241
+ end
242
+ end
@@ -0,0 +1,67 @@
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
+ require 'openssl'
16
+
17
+ module AWS
18
+ module Core
19
+
20
+ # Computes signatures using credentials that are stored in memory.
21
+ class DefaultSigner
22
+
23
+ # @return [String] The Access Key ID used to sign requests.
24
+ attr_reader :access_key_id
25
+
26
+ # @return [String] The Secret Access Key used to sign requests.
27
+ attr_reader :secret_access_key
28
+
29
+ # @return [String] The Session Token used to sign requests.
30
+ attr_reader :session_token
31
+
32
+ # @param [String] access_key_id The Access Key ID used to sign
33
+ # requests.
34
+ #
35
+ # @param [String] secret_access_key The Secret Access Key used to
36
+ # sign requests.
37
+ #
38
+ # @param [String] session_token The Session Token used to sign
39
+ # requests. You can get credentials that include a session
40
+ # token using the {STS} class.
41
+ def initialize(access_key_id, secret_access_key, session_token = nil)
42
+
43
+ @access_key_id = access_key_id
44
+ @secret_access_key = secret_access_key
45
+ @session_token = session_token
46
+
47
+ raise "Missing credentials" unless access_key_id and secret_access_key
48
+
49
+ end
50
+
51
+ # Signs a string using the credentials stored in memory.
52
+ #
53
+ # @param [String] string_to_sign The string to sign.
54
+ #
55
+ # @param [String] digest_method The digest method to use when
56
+ # computing the HMAC digest.
57
+ def sign(string_to_sign, digest_method = 'sha256')
58
+ Base64.encode64(
59
+ OpenSSL::HMAC.digest(
60
+ OpenSSL::Digest::Digest.new(digest_method),
61
+ secret_access_key,
62
+ string_to_sign)).strip
63
+ end
64
+
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,136 @@
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 'thread'
15
+
16
+ module AWS
17
+ module Core
18
+ module Http
19
+
20
+ # @private
21
+ class CurbHandler
22
+
23
+ def initialize
24
+ @q = []
25
+ @sem = Mutex.new
26
+ @multi = Curl::Multi.new
27
+
28
+ start_processor
29
+ end
30
+
31
+ def handle request, response
32
+ raise "unsupport http reqest method: #{request.http_method}" unless
33
+ ['GET', 'HEAD', 'PUT', 'POST', 'DELETE'].include? request.http_method
34
+ @sem.synchronize do
35
+ @q << [request, response, Thread.current]
36
+ begin
37
+ @processor.wakeup
38
+ rescue ThreadError
39
+ start_processor
40
+ end
41
+ end
42
+ Thread.stop
43
+ nil
44
+ end
45
+
46
+ # fills the Curl::Multi handle with the given array of queue
47
+ # items, calling make_easy_handle on each one first
48
+ private
49
+ def fill_multi(items)
50
+ items.each do |item|
51
+ c = make_easy_handle(*item)
52
+ @multi.add(c)
53
+ end
54
+ end
55
+
56
+ # starts a background thread that waits for new items and
57
+ # sends them through the Curl::Multi handle
58
+ private
59
+ def start_processor
60
+ @processor = Thread.new do
61
+ loop do
62
+ items = nil
63
+ @sem.synchronize do
64
+ items = @q.slice!(0..-1)
65
+ end
66
+ unless items.empty?
67
+ fill_multi(items)
68
+ @multi.perform do
69
+ # curl is idle, so process more items if we can get them
70
+ # without blocking
71
+ if !@q.empty? && @sem.try_lock
72
+ begin
73
+ fill_multi(@q.slice!(0..-1))
74
+ ensure
75
+ @sem.unlock
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+ # wait for a new item to show up before continuing
82
+ Thread.stop if @q.empty?
83
+ end
84
+ end
85
+ end
86
+
87
+ private
88
+ def make_easy_handle request, response, thread = nil
89
+
90
+ protocol = request.use_ssl? ? 'https' : 'http'
91
+ url = "#{protocol}://#{request.host}:#{request.port}#{request.uri}"
92
+
93
+ curl = Curl::Easy.new(url)
94
+ # curl.verbose = true
95
+ request.headers.each {|k, v| curl.headers[k] = v}
96
+
97
+ if proxy = request.proxy_uri
98
+ curl.proxy_url = proxy.to_s
99
+ curl.proxy_port = proxy.port
100
+ end
101
+
102
+ curl.on_header {|header_data|
103
+ if header_data =~ /:\s+/
104
+ name, value = header_data.strip.split(/:\s+/, 2)
105
+ response.headers[name] = value
106
+ end
107
+ header_data.length
108
+ }
109
+
110
+ case request.http_method
111
+ when 'GET'
112
+ # ....
113
+ when 'HEAD'
114
+ curl.head = true
115
+ when 'PUT'
116
+ curl.put_data = request.body || ''
117
+ when 'POST'
118
+ curl.headers['Content-Type'] = curl.headers['Content-Type'] || ''
119
+ curl.post_body = request.body || ''
120
+ when 'DELETE'
121
+ curl.delete = true
122
+ end
123
+
124
+ curl.on_complete do
125
+ response.body = curl.body_str
126
+ response.status = curl.response_code
127
+ thread.run if thread
128
+ end
129
+
130
+ curl
131
+ end
132
+
133
+ end
134
+ end
135
+ end
136
+ end
@@ -0,0 +1,77 @@
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 Http
17
+
18
+ # @private
19
+ class Handler
20
+
21
+ attr_reader :base
22
+
23
+ def initialize(base, &block)
24
+ @base = base
25
+ if base.respond_to?(:handle)
26
+
27
+ unless block.arity == 2
28
+ raise ArgumentError, 'passed block must accept 2 arguments'
29
+ end
30
+ MetaUtils.extend_method(self, :handle, &block)
31
+
32
+ elsif base.respond_to?(:handle_async)
33
+
34
+ unless block.arity == 3
35
+ raise ArgumentError, 'passed block must accept 3 arguments'
36
+ end
37
+
38
+ MetaUtils.extend_method(self, :handle_async) do |req, resp, handle|
39
+ @base.handle_async(req, resp, handle)
40
+ end
41
+ MetaUtils.extend(self) do
42
+ define_method(:handle) do |req, resp|
43
+ raise "attempted to call #handle on an async handler"
44
+ end
45
+ define_method(:handle_async, &block)
46
+ end
47
+
48
+ else
49
+ raise ArgumentError, 'base must respond to #handle or #handle_async'
50
+ end
51
+ end
52
+
53
+ def handle(request, http_response)
54
+ @base.handle(request, http_response)
55
+ end
56
+
57
+ def handle_async(request, http_response, handle)
58
+ Thread.new do
59
+ begin
60
+ self.handle(request, http_response)
61
+ rescue => e
62
+ handle.signal_failure
63
+ else
64
+ handle.signal_success
65
+ end
66
+ end
67
+ end
68
+
69
+ def sleep_with_callback seconds, &block
70
+ Kernel.sleep(seconds)
71
+ yield
72
+ end
73
+
74
+ end
75
+ end
76
+ end
77
+ end