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,177 @@
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
+ class S3
16
+ class Client < Core::Client
17
+
18
+ # @private
19
+ module XML
20
+
21
+ BaseGrammar = Core::XML::Grammar.new({}, :inflect_rename => true)
22
+
23
+ ListBuckets = BaseGrammar.customize do
24
+ element "Buckets" do
25
+ list "Bucket"
26
+ end
27
+ end
28
+
29
+ GetBucketAcl = GetObjectAcl = BaseGrammar.customize do
30
+ element "AccessControlList" do
31
+ ignore
32
+ element "Grant" do
33
+ rename :grants
34
+ list
35
+ element "Grantee" do
36
+ element "ID" do
37
+ rename :canonical_user_id
38
+ end
39
+ end
40
+ element "Permission" do
41
+ symbol_value
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ ListObjects = BaseGrammar.customize do
48
+
49
+ element("Name") { rename :bucket_name }
50
+ element("MaxKeys") { integer_value }
51
+ element("IsTruncated") { rename :truncated; boolean_value }
52
+ element("Delimiter") { force }
53
+
54
+ element("Contents") do
55
+ list
56
+ element("Owner") do
57
+ element("ID") { }
58
+ element("DisplayName") { }
59
+ end
60
+ element("Key") { }
61
+ element("Size") { }
62
+ element("StorageClass") { }
63
+ element("ETag") { rename :etag }
64
+
65
+ element("LastModified") { time_value }
66
+ end
67
+
68
+ element "CommonPrefixes" do
69
+ collect_values
70
+ end
71
+
72
+ end
73
+
74
+ GetBucketVersioning = BaseGrammar.customize do
75
+ default_value :status, :unversioned
76
+ element("Status") do
77
+ symbol_value
78
+ end
79
+ end
80
+
81
+ ListObjectVersions = BaseGrammar.customize do
82
+
83
+ element("MaxKeys") { integer_value }
84
+ element("IsTruncated") { rename :truncated; boolean_value }
85
+ element("NextKeyMarker") { force }
86
+ element("NextVersionIdMarker") { force }
87
+
88
+ %w(DeleteMarker Version).each do |element_name|
89
+ element(element_name) do
90
+ collect_values
91
+ rename(:versions)
92
+ element("IsLatest") { rename :latest; boolean_value }
93
+ element("LastModified") { datetime_value }
94
+ element("ETag") { rename :etag }
95
+ element("Size") { integer_value }
96
+ element("StorageClass") { symbol_value }
97
+ end
98
+ end
99
+
100
+ element "DeleteMarker" do
101
+ default_value(:delete_marker, true)
102
+ default_value(:version, false)
103
+ end
104
+
105
+ element "Version" do
106
+ default_value(:delete_marker, false)
107
+ default_value(:version, true)
108
+ end
109
+
110
+ element "CommonPrefixes" do
111
+ collect_values
112
+ end
113
+
114
+ end
115
+
116
+ InitiateMultipartUpload = BaseGrammar.customize do
117
+ element("UploadId") { force }
118
+ end
119
+
120
+ ListMultipartUploads = BaseGrammar.customize do
121
+
122
+ element("IsTruncated") { rename :truncated; boolean_value }
123
+ element("MaxUploads") { integer_value }
124
+ element("NextKeyMarker") { force }
125
+ element("NextUploadIdMarker") { force }
126
+ element("Upload") do
127
+ collect_values
128
+ rename :uploads
129
+ element("StorageClass") { symbol_value }
130
+ element("Initiated") { datetime_value }
131
+ end
132
+
133
+ element "CommonPrefixes" do
134
+ collect_values
135
+ end
136
+
137
+ end
138
+
139
+ DeleteObjects = BaseGrammar.customize do
140
+ element("Deleted") do
141
+ element("DeleteMarker") { boolean_value }
142
+ list
143
+ end
144
+ element("Error") { list; rename(:errors) }
145
+ end
146
+
147
+ CompleteMultipartUpload = BaseGrammar.customize
148
+
149
+ ListParts = BaseGrammar.customize do
150
+ element("StorageClass") { symbol_value }
151
+ element("IsTruncated") { rename :truncated; boolean_value }
152
+ element("MaxParts") { integer_value }
153
+ element("PartNumberMarker") { integer_value }
154
+ element("NextPartNumberMarker") { integer_value }
155
+ element("Part") do
156
+ collect_values
157
+ rename :parts
158
+ element("PartNumber") { integer_value }
159
+ element("LastModified") { datetime_value }
160
+ element("Size") { integer_value }
161
+ end
162
+ end
163
+
164
+ GetBucketLifecycleConfiguration = BaseGrammar.customize do
165
+ element("Rule") do
166
+ list
167
+ rename(:rules)
168
+ element("Expiration") do
169
+ element("Days") { integer_value }
170
+ end
171
+ end
172
+ end
173
+
174
+ end
175
+ end
176
+ end
177
+ end
@@ -0,0 +1,26 @@
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
+ AWS::Core::Configuration.module_eval do
15
+
16
+ add_service 'S3', 's3', 's3.amazonaws.com'
17
+
18
+ add_option :s3_multipart_threshold, 16 * 1024 * 1024
19
+
20
+ add_option :s3_multipart_min_part_size, 5 * 1024 * 1024
21
+
22
+ add_option :s3_multipart_max_parts, 10000
23
+
24
+ add_option :s3_server_side_encryption, nil
25
+
26
+ end
@@ -0,0 +1,100 @@
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 'pathname'
15
+
16
+ module AWS
17
+ class S3
18
+
19
+ # @private
20
+ module DataOptions
21
+
22
+ protected
23
+
24
+ def data_stream_from options, &block
25
+
26
+ validate_data!(options, block)
27
+
28
+ # block format
29
+ if block_given?
30
+ buffer = StringIO.new
31
+ yield(buffer)
32
+ buffer.rewind
33
+ return buffer
34
+ end
35
+
36
+ # string, pathname, file, io-like object, etc
37
+ data = options[:data]
38
+ file_opts = ["rb"]
39
+ file_opts << { :encoding => "BINARY" } if Object.const_defined?(:Encoding)
40
+ case
41
+ when data.is_a?(String)
42
+ data.force_encoding("BINARY") if data.respond_to?(:force_encoding)
43
+ StringIO.new(data)
44
+ when data.is_a?(Pathname) then File.open(data.to_s, *file_opts)
45
+ when options[:file] then File.open(options[:file], *file_opts)
46
+ else data
47
+ end
48
+
49
+ end
50
+
51
+ def content_length_from options
52
+ data = options[:data]
53
+ case
54
+ when options[:content_length] then options[:content_length]
55
+ when options[:file] then File.size(options[:file])
56
+ when data.is_a?(Pathname) then File.size(data.to_s)
57
+ when data.is_a?(File) then File.size(data.path)
58
+ when data.respond_to?(:bytesize) then data.bytesize
59
+ when data.respond_to?(:size) then data.size
60
+ when data.respond_to?(:length) then data.length
61
+ else raise ArgumentError, 'content_length was not provided ' +
62
+ 'and could not be determined'
63
+ end
64
+ end
65
+
66
+ def validate_data! options, block
67
+
68
+ data = options[:data]
69
+ filename = options[:file]
70
+
71
+ raise ArgumentError, 'data passed multiple ways' if
72
+ [data, filename, block].compact.size > 1
73
+
74
+ # accepting block format
75
+ return if block and block.arity == 1
76
+
77
+ # accepting file path
78
+ return if filename.kind_of?(String)
79
+
80
+ # accepting strings
81
+ return if data.kind_of?(String)
82
+
83
+ # accepting pathname
84
+ return if data.kind_of?(Pathname)
85
+
86
+ # accepts io-like objects (responds to read and eof?)
87
+ if data.respond_to?(:read) and
88
+ data.method(:read).arity != 0 and
89
+ data.respond_to?(:eof?) then
90
+ return true
91
+ end
92
+
93
+ raise ArgumentError, 'data must be provided as a String, ' +
94
+ 'Pathname, file path, or an object that responds to #read and #eof?'
95
+
96
+ end
97
+
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,81 @@
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
+ class S3
16
+
17
+ # This module contains exception classes for each of the error
18
+ # types that S3 can return. You can use these classes to rescue
19
+ # specific errors, for example:
20
+ #
21
+ # begin
22
+ # S3.new.buckets.mybucket.
23
+ # objects.myobj.write("HELLO")
24
+ # rescue S3::Errors::NoSuchBucket => e
25
+ # S3.new.buckets.create("mybucket")
26
+ # retry
27
+ # end
28
+ #
29
+ # All errors raised as a result of error responses from the
30
+ # service are instances of either {ClientError} or {ServerError}.
31
+ # @private
32
+ module Errors
33
+
34
+ # @private
35
+ GRAMMAR = Core::XML::Grammar.customize
36
+
37
+ extend Core::LazyErrorClasses
38
+
39
+ class BatchDeleteError < StandardError
40
+
41
+ def initialize error_counts
42
+ @error_counts = error_counts
43
+ total = error_counts.values.inject(0) {|sum,count| sum + count }
44
+ super("Failed to delete #{total} objects")
45
+ end
46
+
47
+ # @return [Hash] Returns a hash of error codes and how many
48
+ # objects failed with that code.
49
+ attr_reader :error_counts
50
+
51
+ end
52
+
53
+ # This error is special, because S3 does not (and must not
54
+ # according to RFC 2616) return a body with the HTTP response.
55
+ # The interface is the same as for any other client error.
56
+ class NotModified < AWS::Errors::Base
57
+
58
+ include AWS::Errors::ClientError
59
+
60
+ def initialize(req, resp)
61
+ super(req, resp, "NotModified", "Not Modified")
62
+ end
63
+
64
+ end
65
+
66
+ # This error is special, because S3 does not return a body with
67
+ # the HTTP response. The interface is the same as for any other
68
+ # client error.
69
+ class NoSuchKey < AWS::Errors::Base
70
+
71
+ include AWS::Errors::ClientError
72
+
73
+ def initialize(req, resp, code = nil, message = nil)
74
+ super(req, resp, "NoSuchKey", "No Such Key")
75
+ end
76
+
77
+ end
78
+
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,317 @@
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
+ class S3
18
+
19
+ # Represents a multipart upload to an S3 object. See
20
+ # {S3Object#multipart_upload} for a convenient way to initiate a
21
+ # multipart upload.
22
+ class MultipartUpload
23
+
24
+ include Core::Model
25
+
26
+ # @private
27
+ def initialize(object, id, options = {})
28
+ @id = id
29
+ @object = object
30
+
31
+ super
32
+
33
+ @completed_parts = {}
34
+ @increment_mutex = Mutex.new
35
+ @completed_mutex = Mutex.new
36
+ @last_part = 0
37
+ end
38
+
39
+ def bucket
40
+ object.bucket
41
+ end
42
+
43
+ def inspect
44
+ "<#{self.class}:#{object.bucket.name}/#{object.key}:#{id}>"
45
+ end
46
+ # @return [String] Returns the upload id.
47
+ attr_reader :id
48
+
49
+ alias_method :upload_id, :id
50
+
51
+ # @return [S3Object] Returns the object this upload is intended for.
52
+ attr_reader :object
53
+
54
+ # @return [Boolean] Returns true if both multipart uploads
55
+ # represent the same object and upload.
56
+ def ==(other)
57
+ other.kind_of?(MultipartUpload) and
58
+ other.object == object and
59
+ other.id == id
60
+ end
61
+
62
+ alias_method :eql?, :==
63
+
64
+ # @return [Boolean] True if the upload exists.
65
+ def exists?
66
+ client.list_parts(base_opts)
67
+ rescue Errors::NoSuchUpload => e
68
+ false
69
+ else
70
+ true
71
+ end
72
+
73
+ # @return The upload initiator. This object will have +:id+
74
+ # and +:display_name+ methods; if the initiator is an IAM
75
+ # user, the +:id+ method will return the ARN of the user, and
76
+ # if the initiator is an AWS account, this method will return
77
+ # the same data as {#owner}.
78
+ def initiator
79
+ client.list_parts(base_opts).initiator
80
+ end
81
+
82
+ # @return The upload owner. This object will have +:id+
83
+ # and +:display_name+ methods.
84
+ def owner
85
+ client.list_parts(base_opts).owner
86
+ end
87
+
88
+ # @return [Symbol] The class of storage used to store the
89
+ # uploaded object. Possible values:
90
+ #
91
+ # * +:standard+
92
+ # * +:reduced_redundancy?+
93
+ def storage_class
94
+ client.list_parts(base_opts).storage_class.downcase.to_sym
95
+ end
96
+
97
+ # @return [Boolean] True if the uploaded object will be stored
98
+ # with reduced redundancy.
99
+ def reduced_redundancy?
100
+ storage_class == :reduced_redundancy
101
+ end
102
+
103
+ # Aborts the upload. After a multipart upload is aborted, no
104
+ # additional parts can be uploaded using that upload ID. The
105
+ # storage consumed by any previously uploaded parts will be
106
+ # freed. However, if any part uploads are currently in
107
+ # progress, those part uploads might or might not succeed. As
108
+ # a result, it might be necessary to abort a given multipart
109
+ # upload multiple times in order to completely free all
110
+ # storage consumed by all parts.
111
+ # @return [nil]
112
+ def abort
113
+ client.abort_multipart_upload(base_opts)
114
+ @aborted = true
115
+ nil
116
+ end
117
+ alias_method :delete, :abort
118
+ alias_method :cancel, :abort
119
+
120
+ # @return [Boolean] True if the upload has been aborted.
121
+ # @see #abort
122
+ def aborted?
123
+ @aborted
124
+ end
125
+
126
+ # Uploads a part.
127
+ #
128
+ # @overload add_part(data, options = {})
129
+ #
130
+ # @param data The data to upload. Valid values include:
131
+ #
132
+ # * A string
133
+ #
134
+ # * A Pathname object
135
+ #
136
+ # * Any object responding to +read+ and +eof?+; the object
137
+ # must support the following access methods:
138
+ #
139
+ # read # all at once
140
+ # read(length) until eof? # in chunks
141
+ #
142
+ # If you specify data this way, you must also include
143
+ # the +:content_length+ option.
144
+ #
145
+ # @param [Hash] options Additional options for the upload.
146
+ #
147
+ # @option options [Integer] :content_length If provided,
148
+ # this option must match the total number of bytes written
149
+ # to S3 during the operation. This option is required if
150
+ # +:data+ is an IO-like object without a +size+ method.
151
+ #
152
+ # @overload add_part(options)
153
+ #
154
+ # @param [Hash] options Options for the upload. Either
155
+ # +:data+ or +:file+ is required.
156
+ #
157
+ # @option options :data The data to upload. Valid values
158
+ # include:
159
+ #
160
+ # * A string
161
+ #
162
+ # * A Pathname object
163
+ #
164
+ # * Any object responding to +read+ and +eof?+; the object
165
+ # must support the following access methods:
166
+ #
167
+ # read # all at once
168
+ # read(length) until eof? # in chunks
169
+ #
170
+ # If you specify data this way, you must also include
171
+ # the +:content_length+ option.
172
+ #
173
+ # @option options [String] :file Can be specified instead of
174
+ # +:data+; its value specifies the path of a file to
175
+ # upload.
176
+ #
177
+ # @option options [Integer] :content_length If provided,
178
+ # this option must match the total number of bytes written
179
+ # to S3 during the operation. This option is required if
180
+ # +:data+ is an IO-like object without a +size+ method.
181
+ #
182
+ # @option options [Integer] :part_number The part number.
183
+ def add_part(data_or_options, options = {})
184
+ if data_or_options.kind_of?(Hash)
185
+ part_options = base_opts.merge(data_or_options)
186
+ else
187
+ part_options = base_opts.merge(:data => data_or_options)
188
+ end
189
+ part_options.merge!(options)
190
+
191
+ unless part_options[:part_number]
192
+ @increment_mutex.synchronize do
193
+ part_options[:part_number] = (@last_part += 1)
194
+ end
195
+ end
196
+ part_number = part_options[:part_number]
197
+
198
+ resp = client.upload_part(part_options)
199
+ @completed_mutex.synchronize do
200
+ @completed_parts[part_number] = {
201
+ :part_number => part_number,
202
+ :etag => resp.etag
203
+ }
204
+ end
205
+ UploadedPart.new(self, part_number)
206
+ end
207
+
208
+ # Completes the upload by assembling previously uploaded
209
+ # parts.
210
+ #
211
+ # @return [S3Object, ObjectVersion] If the bucket has versioning
212
+ # enabled, returns the {ObjectVersion} representing the
213
+ # version that was uploaded. If versioning is disabled,
214
+ # returns the object.
215
+ def complete(*parts)
216
+ parts = parts.flatten
217
+ case parts.first
218
+ when :remote_parts
219
+ complete_opts = get_complete_opts
220
+ when :local_parts, nil
221
+ complete_opts = base_opts.merge(:parts => completed_parts)
222
+ else
223
+ part_numbers = parts.map do |part|
224
+ case part
225
+ when Integer
226
+ part
227
+ when UploadedPart
228
+ raise ArgumentError.new("cannot complete an upload with parts "+
229
+ "from a different upload") unless
230
+ part.upload == self
231
+
232
+ part.part_number
233
+ else
234
+ raise ArgumentError.new("expected number or UploadedPart")
235
+ end
236
+ end
237
+ complete_opts = get_complete_opts(part_numbers)
238
+ end
239
+
240
+ raise "no parts uploaded" if complete_opts[:parts].empty?
241
+
242
+ resp = client.complete_multipart_upload(complete_opts)
243
+ if resp.version_id
244
+ ObjectVersion.new(object, resp.version_id)
245
+ else
246
+ object
247
+ end
248
+ end
249
+
250
+ # Completes the upload or aborts it if no parts have been
251
+ # uploaded yet. Does nothing if the upload has already been
252
+ # aborted.
253
+ #
254
+ # @return [S3Object, ObjectVersion] If the bucket has versioning
255
+ # enabled, returns the {ObjectVersion} representing the
256
+ # version that was uploaded. If versioning is disabled,
257
+ # returns the object. If no upload was attempted (e.g. if it
258
+ # was aborted or if no parts were uploaded), returns +nil+.
259
+ def close
260
+ return if aborted?
261
+ if completed_parts.empty?
262
+ abort
263
+ else
264
+ complete
265
+ end
266
+ end
267
+
268
+ # @return [UploadedPartCollection] A collection representing
269
+ # the parts that have been uploaded to S3 for this upload.
270
+ def parts
271
+ UploadedPartCollection.new(self)
272
+ end
273
+
274
+ # @private
275
+ def completed_parts
276
+ @completed_parts.values.
277
+ sort { |a, b| a[:part_number] <=> b[:part_number] }
278
+ end
279
+
280
+ # @private
281
+ def inspect
282
+ "<#{self.class}:#{object.bucket.name}/#{object.key}:#{id}>"
283
+ end
284
+
285
+ # @private
286
+ private
287
+ def get_complete_opts(part_numbers = nil)
288
+ parts_resp = client.list_parts(base_opts)
289
+ complete_opts =
290
+ base_opts.merge(:parts =>
291
+ parts_resp.parts.map do |part|
292
+ { :part_number => part.part_number,
293
+ :etag => part.etag }
294
+ end)
295
+
296
+ complete_opts[:parts].reject! do |part|
297
+ !part_numbers.include?(part[:part_number])
298
+ end if part_numbers
299
+
300
+ complete_opts
301
+ end
302
+
303
+ # @private
304
+ private
305
+ def base_opts
306
+ opts = {
307
+ :bucket_name => object.bucket.name,
308
+ :key => object.key
309
+ }
310
+ opts[:upload_id] = upload_id if upload_id
311
+ opts
312
+ end
313
+
314
+ end
315
+
316
+ end
317
+ end