aws-sdk 1.32.0 → 3.0.2

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 (551) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +100 -0
  3. data/LICENSE.txt +199 -9
  4. data/VERSION +1 -0
  5. data/lib/aws-sdk.rb +2 -14
  6. metadata +22 -591
  7. data/.yardopts +0 -7
  8. data/README.md +0 -291
  9. data/bin/aws-rb +0 -169
  10. data/ca-bundle.crt +0 -3554
  11. data/endpoints.json +0 -1506
  12. data/lib/aws.rb +0 -14
  13. data/lib/aws/api_config/AutoScaling-2011-01-01.yml +0 -869
  14. data/lib/aws/api_config/CloudFormation-2010-05-15.yml +0 -358
  15. data/lib/aws/api_config/CloudFront-2013-05-12.yml +0 -2448
  16. data/lib/aws/api_config/CloudFront-2013-08-26.yml +0 -2599
  17. data/lib/aws/api_config/CloudFront-2013-09-27.yml +0 -2765
  18. data/lib/aws/api_config/CloudFront-2013-11-11.yml +0 -2886
  19. data/lib/aws/api_config/CloudSearch-2011-02-01.yml +0 -681
  20. data/lib/aws/api_config/CloudTrail-2013-11-01.yml +0 -159
  21. data/lib/aws/api_config/CloudWatch-2010-08-01.yml +0 -433
  22. data/lib/aws/api_config/DataPipeline-2012-10-29.yml +0 -422
  23. data/lib/aws/api_config/DirectConnect-2012-10-25.yml +0 -735
  24. data/lib/aws/api_config/DynamoDB-2011-12-05.yml +0 -1168
  25. data/lib/aws/api_config/DynamoDB-2012-08-10.yml +0 -2005
  26. data/lib/aws/api_config/EC2-2013-08-15.yml +0 -4708
  27. data/lib/aws/api_config/EC2-2013-10-01.yml +0 -4726
  28. data/lib/aws/api_config/EC2-2013-10-15.yml +0 -4726
  29. data/lib/aws/api_config/ELB-2012-06-01.yml +0 -632
  30. data/lib/aws/api_config/EMR-2009-03-31.yml +0 -953
  31. data/lib/aws/api_config/ElastiCache-2013-06-15.yml +0 -1188
  32. data/lib/aws/api_config/ElasticBeanstalk-2010-12-01.yml +0 -847
  33. data/lib/aws/api_config/ElasticTranscoder-2012-09-25.yml +0 -2285
  34. data/lib/aws/api_config/Glacier-2012-06-01.yml +0 -649
  35. data/lib/aws/api_config/IAM-2010-05-08.yml +0 -1297
  36. data/lib/aws/api_config/ImportExport-2010-06-01.yml +0 -109
  37. data/lib/aws/api_config/Kinesis-2013-12-02.yml +0 -201
  38. data/lib/aws/api_config/OpsWorks-2013-02-18.yml +0 -1825
  39. data/lib/aws/api_config/RDS-2013-05-15.yml +0 -2464
  40. data/lib/aws/api_config/RDS-2013-09-09.yml +0 -2641
  41. data/lib/aws/api_config/Redshift-2012-12-01.yml +0 -2137
  42. data/lib/aws/api_config/Route53-2012-12-12.yml +0 -547
  43. data/lib/aws/api_config/SNS-2010-03-31.yml +0 -433
  44. data/lib/aws/api_config/SQS-2012-11-05.yml +0 -319
  45. data/lib/aws/api_config/STS-2011-06-15.yml +0 -147
  46. data/lib/aws/api_config/SimpleDB-2009-04-15.yml +0 -306
  47. data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +0 -346
  48. data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +0 -2388
  49. data/lib/aws/api_config/StorageGateway-2012-06-30.yml +0 -748
  50. data/lib/aws/api_config/StorageGateway-2013-06-30.yml +0 -1025
  51. data/lib/aws/api_config/Support-2013-04-15.yml +0 -426
  52. data/lib/aws/auto_scaling.rb +0 -163
  53. data/lib/aws/auto_scaling/activity.rb +0 -102
  54. data/lib/aws/auto_scaling/activity_collection.rb +0 -81
  55. data/lib/aws/auto_scaling/client.rb +0 -48
  56. data/lib/aws/auto_scaling/config.rb +0 -18
  57. data/lib/aws/auto_scaling/errors.rb +0 -22
  58. data/lib/aws/auto_scaling/group.rb +0 -421
  59. data/lib/aws/auto_scaling/group_collection.rb +0 -96
  60. data/lib/aws/auto_scaling/group_options.rb +0 -155
  61. data/lib/aws/auto_scaling/instance.rb +0 -192
  62. data/lib/aws/auto_scaling/instance_collection.rb +0 -63
  63. data/lib/aws/auto_scaling/launch_configuration.rb +0 -162
  64. data/lib/aws/auto_scaling/launch_configuration_collection.rb +0 -160
  65. data/lib/aws/auto_scaling/notification_configuration.rb +0 -89
  66. data/lib/aws/auto_scaling/notification_configuration_collection.rb +0 -183
  67. data/lib/aws/auto_scaling/scaling_policy.rb +0 -142
  68. data/lib/aws/auto_scaling/scaling_policy_collection.rb +0 -72
  69. data/lib/aws/auto_scaling/scaling_policy_options.rb +0 -65
  70. data/lib/aws/auto_scaling/scheduled_action.rb +0 -141
  71. data/lib/aws/auto_scaling/scheduled_action_collection.rb +0 -202
  72. data/lib/aws/auto_scaling/tag.rb +0 -59
  73. data/lib/aws/auto_scaling/tag_collection.rb +0 -114
  74. data/lib/aws/cloud_formation.rb +0 -272
  75. data/lib/aws/cloud_formation/client.rb +0 -48
  76. data/lib/aws/cloud_formation/config.rb +0 -18
  77. data/lib/aws/cloud_formation/errors.rb +0 -22
  78. data/lib/aws/cloud_formation/stack.rb +0 -266
  79. data/lib/aws/cloud_formation/stack_collection.rb +0 -232
  80. data/lib/aws/cloud_formation/stack_event.rb +0 -73
  81. data/lib/aws/cloud_formation/stack_event_collection.rb +0 -47
  82. data/lib/aws/cloud_formation/stack_options.rb +0 -72
  83. data/lib/aws/cloud_formation/stack_output.rb +0 -53
  84. data/lib/aws/cloud_formation/stack_resource.rb +0 -117
  85. data/lib/aws/cloud_formation/stack_resource_collection.rb +0 -83
  86. data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +0 -64
  87. data/lib/aws/cloud_formation/stack_summary_collection.rb +0 -123
  88. data/lib/aws/cloud_front.rb +0 -72
  89. data/lib/aws/cloud_front/client.rb +0 -45
  90. data/lib/aws/cloud_front/config.rb +0 -18
  91. data/lib/aws/cloud_front/errors.rb +0 -22
  92. data/lib/aws/cloud_search.rb +0 -73
  93. data/lib/aws/cloud_search/client.rb +0 -36
  94. data/lib/aws/cloud_search/config.rb +0 -18
  95. data/lib/aws/cloud_search/errors.rb +0 -22
  96. data/lib/aws/cloud_trail.rb +0 -72
  97. data/lib/aws/cloud_trail/client.rb +0 -35
  98. data/lib/aws/cloud_trail/config.rb +0 -18
  99. data/lib/aws/cloud_trail/errors.rb +0 -22
  100. data/lib/aws/cloud_watch.rb +0 -118
  101. data/lib/aws/cloud_watch/alarm.rb +0 -290
  102. data/lib/aws/cloud_watch/alarm_collection.rb +0 -153
  103. data/lib/aws/cloud_watch/alarm_history_item.rb +0 -50
  104. data/lib/aws/cloud_watch/alarm_history_item_collection.rb +0 -84
  105. data/lib/aws/cloud_watch/client.rb +0 -40
  106. data/lib/aws/cloud_watch/config.rb +0 -18
  107. data/lib/aws/cloud_watch/errors.rb +0 -22
  108. data/lib/aws/cloud_watch/metric.rb +0 -135
  109. data/lib/aws/cloud_watch/metric_alarm_collection.rb +0 -160
  110. data/lib/aws/cloud_watch/metric_collection.rb +0 -129
  111. data/lib/aws/cloud_watch/metric_statistics.rb +0 -69
  112. data/lib/aws/core.rb +0 -701
  113. data/lib/aws/core/async_handle.rb +0 -90
  114. data/lib/aws/core/cacheable.rb +0 -77
  115. data/lib/aws/core/client.rb +0 -778
  116. data/lib/aws/core/collection.rb +0 -263
  117. data/lib/aws/core/collection/simple.rb +0 -82
  118. data/lib/aws/core/collection/with_limit_and_next_token.rb +0 -71
  119. data/lib/aws/core/collection/with_next_token.rb +0 -97
  120. data/lib/aws/core/configuration.rb +0 -541
  121. data/lib/aws/core/credential_providers.rb +0 -506
  122. data/lib/aws/core/data.rb +0 -247
  123. data/lib/aws/core/deprecations.rb +0 -84
  124. data/lib/aws/core/endpoints.rb +0 -37
  125. data/lib/aws/core/http/connection_pool.rb +0 -349
  126. data/lib/aws/core/http/curb_handler.rb +0 -148
  127. data/lib/aws/core/http/handler.rb +0 -89
  128. data/lib/aws/core/http/net_http_handler.rb +0 -147
  129. data/lib/aws/core/http/patch.rb +0 -102
  130. data/lib/aws/core/http/request.rb +0 -249
  131. data/lib/aws/core/http/response.rb +0 -81
  132. data/lib/aws/core/indifferent_hash.rb +0 -88
  133. data/lib/aws/core/inflection.rb +0 -56
  134. data/lib/aws/core/json_client.rb +0 -47
  135. data/lib/aws/core/json_parser.rb +0 -76
  136. data/lib/aws/core/json_request_builder.rb +0 -35
  137. data/lib/aws/core/json_response_parser.rb +0 -79
  138. data/lib/aws/core/lazy_error_classes.rb +0 -90
  139. data/lib/aws/core/log_formatter.rb +0 -428
  140. data/lib/aws/core/managed_file.rb +0 -32
  141. data/lib/aws/core/meta_utils.rb +0 -45
  142. data/lib/aws/core/model.rb +0 -57
  143. data/lib/aws/core/naming.rb +0 -30
  144. data/lib/aws/core/option_grammar.rb +0 -738
  145. data/lib/aws/core/options/json_serializer.rb +0 -82
  146. data/lib/aws/core/options/validator.rb +0 -155
  147. data/lib/aws/core/options/xml_serializer.rb +0 -118
  148. data/lib/aws/core/page_result.rb +0 -75
  149. data/lib/aws/core/policy.rb +0 -942
  150. data/lib/aws/core/query_client.rb +0 -41
  151. data/lib/aws/core/query_error_parser.rb +0 -24
  152. data/lib/aws/core/query_request_builder.rb +0 -47
  153. data/lib/aws/core/query_response_parser.rb +0 -35
  154. data/lib/aws/core/region.rb +0 -85
  155. data/lib/aws/core/region_collection.rb +0 -80
  156. data/lib/aws/core/resource.rb +0 -413
  157. data/lib/aws/core/resource_cache.rb +0 -40
  158. data/lib/aws/core/response.rb +0 -211
  159. data/lib/aws/core/response_cache.rb +0 -50
  160. data/lib/aws/core/rest_error_parser.rb +0 -24
  161. data/lib/aws/core/rest_json_client.rb +0 -40
  162. data/lib/aws/core/rest_request_builder.rb +0 -154
  163. data/lib/aws/core/rest_response_parser.rb +0 -66
  164. data/lib/aws/core/rest_xml_client.rb +0 -47
  165. data/lib/aws/core/service_interface.rb +0 -83
  166. data/lib/aws/core/signers/base.rb +0 -46
  167. data/lib/aws/core/signers/cloud_front.rb +0 -56
  168. data/lib/aws/core/signers/s3.rb +0 -159
  169. data/lib/aws/core/signers/version_2.rb +0 -72
  170. data/lib/aws/core/signers/version_3.rb +0 -86
  171. data/lib/aws/core/signers/version_3_https.rb +0 -61
  172. data/lib/aws/core/signers/version_4.rb +0 -228
  173. data/lib/aws/core/signers/version_4/chunk_signed_stream.rb +0 -191
  174. data/lib/aws/core/uri_escape.rb +0 -44
  175. data/lib/aws/core/xml/frame.rb +0 -244
  176. data/lib/aws/core/xml/frame_stack.rb +0 -85
  177. data/lib/aws/core/xml/grammar.rb +0 -306
  178. data/lib/aws/core/xml/parser.rb +0 -70
  179. data/lib/aws/core/xml/root_frame.rb +0 -65
  180. data/lib/aws/core/xml/sax_handlers/libxml.rb +0 -47
  181. data/lib/aws/core/xml/sax_handlers/nokogiri.rb +0 -56
  182. data/lib/aws/core/xml/sax_handlers/ox.rb +0 -41
  183. data/lib/aws/core/xml/sax_handlers/rexml.rb +0 -47
  184. data/lib/aws/core/xml/stub.rb +0 -123
  185. data/lib/aws/data_pipeline.rb +0 -72
  186. data/lib/aws/data_pipeline/client.rb +0 -36
  187. data/lib/aws/data_pipeline/config.rb +0 -18
  188. data/lib/aws/data_pipeline/errors.rb +0 -20
  189. data/lib/aws/direct_connect.rb +0 -73
  190. data/lib/aws/direct_connect/client.rb +0 -36
  191. data/lib/aws/direct_connect/config.rb +0 -18
  192. data/lib/aws/direct_connect/errors.rb +0 -22
  193. data/lib/aws/dynamo_db.rb +0 -214
  194. data/lib/aws/dynamo_db/attribute_collection.rb +0 -456
  195. data/lib/aws/dynamo_db/batch_get.rb +0 -213
  196. data/lib/aws/dynamo_db/batch_write.rb +0 -252
  197. data/lib/aws/dynamo_db/binary.rb +0 -35
  198. data/lib/aws/dynamo_db/client.rb +0 -129
  199. data/lib/aws/dynamo_db/client/v20111205.rb +0 -1266
  200. data/lib/aws/dynamo_db/client/v20120810.rb +0 -1409
  201. data/lib/aws/dynamo_db/client_v2.rb +0 -44
  202. data/lib/aws/dynamo_db/config.rb +0 -24
  203. data/lib/aws/dynamo_db/errors.rb +0 -20
  204. data/lib/aws/dynamo_db/expectations.rb +0 -40
  205. data/lib/aws/dynamo_db/item.rb +0 -133
  206. data/lib/aws/dynamo_db/item_collection.rb +0 -856
  207. data/lib/aws/dynamo_db/item_data.rb +0 -31
  208. data/lib/aws/dynamo_db/keys.rb +0 -41
  209. data/lib/aws/dynamo_db/primary_key_element.rb +0 -48
  210. data/lib/aws/dynamo_db/resource.rb +0 -33
  211. data/lib/aws/dynamo_db/table.rb +0 -496
  212. data/lib/aws/dynamo_db/table_collection.rb +0 -165
  213. data/lib/aws/dynamo_db/types.rb +0 -111
  214. data/lib/aws/ec2.rb +0 -428
  215. data/lib/aws/ec2/attachment.rb +0 -135
  216. data/lib/aws/ec2/attachment_collection.rb +0 -54
  217. data/lib/aws/ec2/availability_zone.rb +0 -86
  218. data/lib/aws/ec2/availability_zone_collection.rb +0 -43
  219. data/lib/aws/ec2/block_device_mappings.rb +0 -53
  220. data/lib/aws/ec2/client.rb +0 -101
  221. data/lib/aws/ec2/collection.rb +0 -36
  222. data/lib/aws/ec2/config.rb +0 -30
  223. data/lib/aws/ec2/customer_gateway.rb +0 -90
  224. data/lib/aws/ec2/customer_gateway_collection.rb +0 -73
  225. data/lib/aws/ec2/dhcp_options.rb +0 -106
  226. data/lib/aws/ec2/dhcp_options_collection.rb +0 -87
  227. data/lib/aws/ec2/elastic_ip.rb +0 -209
  228. data/lib/aws/ec2/elastic_ip_collection.rb +0 -93
  229. data/lib/aws/ec2/errors.rb +0 -32
  230. data/lib/aws/ec2/export_task.rb +0 -120
  231. data/lib/aws/ec2/export_task_collection.rb +0 -67
  232. data/lib/aws/ec2/filtered_collection.rb +0 -87
  233. data/lib/aws/ec2/has_permissions.rb +0 -44
  234. data/lib/aws/ec2/image.rb +0 -270
  235. data/lib/aws/ec2/image_collection.rb +0 -220
  236. data/lib/aws/ec2/instance.rb +0 -803
  237. data/lib/aws/ec2/instance_collection.rb +0 -391
  238. data/lib/aws/ec2/internet_gateway.rb +0 -122
  239. data/lib/aws/ec2/internet_gateway/attachment.rb +0 -78
  240. data/lib/aws/ec2/internet_gateway_collection.rb +0 -54
  241. data/lib/aws/ec2/key_pair.rb +0 -82
  242. data/lib/aws/ec2/key_pair_collection.rb +0 -99
  243. data/lib/aws/ec2/network_acl.rb +0 -256
  244. data/lib/aws/ec2/network_acl/association.rb +0 -56
  245. data/lib/aws/ec2/network_acl/entry.rb +0 -147
  246. data/lib/aws/ec2/network_acl_collection.rb +0 -64
  247. data/lib/aws/ec2/network_interface.rb +0 -237
  248. data/lib/aws/ec2/network_interface/attachment.rb +0 -100
  249. data/lib/aws/ec2/network_interface_collection.rb +0 -103
  250. data/lib/aws/ec2/permission_collection.rb +0 -174
  251. data/lib/aws/ec2/region.rb +0 -106
  252. data/lib/aws/ec2/region_collection.rb +0 -51
  253. data/lib/aws/ec2/reserved_instances.rb +0 -56
  254. data/lib/aws/ec2/reserved_instances_collection.rb +0 -40
  255. data/lib/aws/ec2/reserved_instances_offering.rb +0 -60
  256. data/lib/aws/ec2/reserved_instances_offering_collection.rb +0 -45
  257. data/lib/aws/ec2/resource.rb +0 -161
  258. data/lib/aws/ec2/resource_tag_collection.rb +0 -211
  259. data/lib/aws/ec2/route_table.rb +0 -205
  260. data/lib/aws/ec2/route_table/association.rb +0 -119
  261. data/lib/aws/ec2/route_table/route.rb +0 -119
  262. data/lib/aws/ec2/route_table_collection.rb +0 -72
  263. data/lib/aws/ec2/security_group.rb +0 -482
  264. data/lib/aws/ec2/security_group/ip_permission.rb +0 -135
  265. data/lib/aws/ec2/security_group/ip_permission_collection.rb +0 -82
  266. data/lib/aws/ec2/security_group_collection.rb +0 -133
  267. data/lib/aws/ec2/snapshot.rb +0 -143
  268. data/lib/aws/ec2/snapshot_collection.rb +0 -131
  269. data/lib/aws/ec2/subnet.rb +0 -161
  270. data/lib/aws/ec2/subnet_collection.rb +0 -115
  271. data/lib/aws/ec2/tag.rb +0 -81
  272. data/lib/aws/ec2/tag_collection.rb +0 -107
  273. data/lib/aws/ec2/tagged_collection.rb +0 -53
  274. data/lib/aws/ec2/tagged_item.rb +0 -85
  275. data/lib/aws/ec2/volume.rb +0 -174
  276. data/lib/aws/ec2/volume_collection.rb +0 -98
  277. data/lib/aws/ec2/vpc.rb +0 -166
  278. data/lib/aws/ec2/vpc_collection.rb +0 -70
  279. data/lib/aws/ec2/vpn_connection.rb +0 -99
  280. data/lib/aws/ec2/vpn_connection/telemetry.rb +0 -49
  281. data/lib/aws/ec2/vpn_connection_collection.rb +0 -96
  282. data/lib/aws/ec2/vpn_gateway.rb +0 -123
  283. data/lib/aws/ec2/vpn_gateway/attachment.rb +0 -45
  284. data/lib/aws/ec2/vpn_gateway_collection.rb +0 -77
  285. data/lib/aws/elastic_beanstalk.rb +0 -49
  286. data/lib/aws/elastic_beanstalk/client.rb +0 -36
  287. data/lib/aws/elastic_beanstalk/config.rb +0 -18
  288. data/lib/aws/elastic_beanstalk/errors.rb +0 -22
  289. data/lib/aws/elastic_transcoder.rb +0 -29
  290. data/lib/aws/elastic_transcoder/client.rb +0 -48
  291. data/lib/aws/elastic_transcoder/config.rb +0 -18
  292. data/lib/aws/elastic_transcoder/errors.rb +0 -23
  293. data/lib/aws/elasticache.rb +0 -49
  294. data/lib/aws/elasticache/client.rb +0 -35
  295. data/lib/aws/elasticache/config.rb +0 -18
  296. data/lib/aws/elasticache/errors.rb +0 -22
  297. data/lib/aws/elb.rb +0 -66
  298. data/lib/aws/elb/availability_zone_collection.rb +0 -138
  299. data/lib/aws/elb/backend_server_policy_collection.rb +0 -139
  300. data/lib/aws/elb/client.rb +0 -35
  301. data/lib/aws/elb/config.rb +0 -18
  302. data/lib/aws/elb/errors.rb +0 -26
  303. data/lib/aws/elb/instance_collection.rb +0 -168
  304. data/lib/aws/elb/listener.rb +0 -190
  305. data/lib/aws/elb/listener_collection.rb +0 -113
  306. data/lib/aws/elb/listener_opts.rb +0 -45
  307. data/lib/aws/elb/load_balancer.rb +0 -280
  308. data/lib/aws/elb/load_balancer_collection.rb +0 -146
  309. data/lib/aws/elb/load_balancer_policy.rb +0 -93
  310. data/lib/aws/elb/load_balancer_policy_collection.rb +0 -208
  311. data/lib/aws/emr.rb +0 -87
  312. data/lib/aws/emr/client.rb +0 -35
  313. data/lib/aws/emr/config.rb +0 -18
  314. data/lib/aws/emr/errors.rb +0 -22
  315. data/lib/aws/emr/instance_group.rb +0 -138
  316. data/lib/aws/emr/instance_group_collection.rb +0 -82
  317. data/lib/aws/emr/job_flow.rb +0 -307
  318. data/lib/aws/emr/job_flow_collection.rb +0 -185
  319. data/lib/aws/errors.rb +0 -162
  320. data/lib/aws/glacier.rb +0 -79
  321. data/lib/aws/glacier/archive.rb +0 -56
  322. data/lib/aws/glacier/archive_collection.rb +0 -146
  323. data/lib/aws/glacier/client.rb +0 -49
  324. data/lib/aws/glacier/config.rb +0 -19
  325. data/lib/aws/glacier/errors.rb +0 -22
  326. data/lib/aws/glacier/resource.rb +0 -30
  327. data/lib/aws/glacier/vault.rb +0 -145
  328. data/lib/aws/glacier/vault_collection.rb +0 -75
  329. data/lib/aws/glacier/vault_notification_configuration.rb +0 -29
  330. data/lib/aws/iam.rb +0 -408
  331. data/lib/aws/iam/access_key.rb +0 -185
  332. data/lib/aws/iam/access_key_collection.rb +0 -128
  333. data/lib/aws/iam/account_alias_collection.rb +0 -79
  334. data/lib/aws/iam/client.rb +0 -49
  335. data/lib/aws/iam/collection.rb +0 -83
  336. data/lib/aws/iam/config.rb +0 -18
  337. data/lib/aws/iam/errors.rb +0 -22
  338. data/lib/aws/iam/group.rb +0 -111
  339. data/lib/aws/iam/group_collection.rb +0 -132
  340. data/lib/aws/iam/group_policy_collection.rb +0 -47
  341. data/lib/aws/iam/group_user_collection.rb +0 -84
  342. data/lib/aws/iam/login_profile.rb +0 -99
  343. data/lib/aws/iam/mfa_device.rb +0 -52
  344. data/lib/aws/iam/mfa_device_collection.rb +0 -127
  345. data/lib/aws/iam/policy.rb +0 -46
  346. data/lib/aws/iam/policy_collection.rb +0 -188
  347. data/lib/aws/iam/resource.rb +0 -62
  348. data/lib/aws/iam/server_certificate.rb +0 -141
  349. data/lib/aws/iam/server_certificate_collection.rb +0 -138
  350. data/lib/aws/iam/signing_certificate.rb +0 -174
  351. data/lib/aws/iam/signing_certificate_collection.rb +0 -131
  352. data/lib/aws/iam/user.rb +0 -200
  353. data/lib/aws/iam/user_collection.rb +0 -133
  354. data/lib/aws/iam/user_group_collection.rb +0 -98
  355. data/lib/aws/iam/user_policy.rb +0 -90
  356. data/lib/aws/iam/user_policy_collection.rb +0 -45
  357. data/lib/aws/iam/virtual_mfa_device.rb +0 -139
  358. data/lib/aws/iam/virtual_mfa_device_collection.rb +0 -73
  359. data/lib/aws/import_export.rb +0 -73
  360. data/lib/aws/import_export/client.rb +0 -35
  361. data/lib/aws/import_export/config.rb +0 -19
  362. data/lib/aws/import_export/errors.rb +0 -22
  363. data/lib/aws/kinesis.rb +0 -53
  364. data/lib/aws/kinesis/client.rb +0 -35
  365. data/lib/aws/kinesis/config.rb +0 -18
  366. data/lib/aws/kinesis/errors.rb +0 -20
  367. data/lib/aws/ops_works.rb +0 -29
  368. data/lib/aws/ops_works/client.rb +0 -35
  369. data/lib/aws/ops_works/config.rb +0 -18
  370. data/lib/aws/ops_works/errors.rb +0 -20
  371. data/lib/aws/rails.rb +0 -195
  372. data/lib/aws/rds.rb +0 -70
  373. data/lib/aws/rds/client.rb +0 -42
  374. data/lib/aws/rds/config.rb +0 -18
  375. data/lib/aws/rds/db_instance.rb +0 -216
  376. data/lib/aws/rds/db_instance_collection.rb +0 -75
  377. data/lib/aws/rds/db_snapshot.rb +0 -163
  378. data/lib/aws/rds/db_snapshot_collection.rb +0 -89
  379. data/lib/aws/rds/errors.rb +0 -22
  380. data/lib/aws/record.rb +0 -139
  381. data/lib/aws/record/abstract_base.rb +0 -690
  382. data/lib/aws/record/attributes.rb +0 -388
  383. data/lib/aws/record/conversion.rb +0 -38
  384. data/lib/aws/record/dirty_tracking.rb +0 -287
  385. data/lib/aws/record/errors.rb +0 -143
  386. data/lib/aws/record/exceptions.rb +0 -51
  387. data/lib/aws/record/hash_model.rb +0 -204
  388. data/lib/aws/record/hash_model/attributes.rb +0 -195
  389. data/lib/aws/record/hash_model/finder_methods.rb +0 -172
  390. data/lib/aws/record/hash_model/scope.rb +0 -108
  391. data/lib/aws/record/model.rb +0 -453
  392. data/lib/aws/record/model/attributes.rb +0 -377
  393. data/lib/aws/record/model/finder_methods.rb +0 -232
  394. data/lib/aws/record/model/scope.rb +0 -212
  395. data/lib/aws/record/naming.rb +0 -31
  396. data/lib/aws/record/scope.rb +0 -203
  397. data/lib/aws/record/validations.rb +0 -694
  398. data/lib/aws/record/validator.rb +0 -246
  399. data/lib/aws/record/validators/acceptance.rb +0 -49
  400. data/lib/aws/record/validators/block.rb +0 -36
  401. data/lib/aws/record/validators/confirmation.rb +0 -41
  402. data/lib/aws/record/validators/count.rb +0 -106
  403. data/lib/aws/record/validators/exclusion.rb +0 -41
  404. data/lib/aws/record/validators/format.rb +0 -55
  405. data/lib/aws/record/validators/inclusion.rb +0 -54
  406. data/lib/aws/record/validators/length.rb +0 -105
  407. data/lib/aws/record/validators/method.rb +0 -31
  408. data/lib/aws/record/validators/numericality.rb +0 -136
  409. data/lib/aws/record/validators/presence.rb +0 -43
  410. data/lib/aws/redshift.rb +0 -51
  411. data/lib/aws/redshift/client.rb +0 -35
  412. data/lib/aws/redshift/config.rb +0 -18
  413. data/lib/aws/redshift/errors.rb +0 -22
  414. data/lib/aws/route_53.rb +0 -86
  415. data/lib/aws/route_53/change_batch.rb +0 -161
  416. data/lib/aws/route_53/change_info.rb +0 -72
  417. data/lib/aws/route_53/client.rb +0 -35
  418. data/lib/aws/route_53/config.rb +0 -18
  419. data/lib/aws/route_53/errors.rb +0 -22
  420. data/lib/aws/route_53/hosted_zone.rb +0 -111
  421. data/lib/aws/route_53/hosted_zone_collection.rb +0 -100
  422. data/lib/aws/route_53/resource_record_set.rb +0 -251
  423. data/lib/aws/route_53/resource_record_set_collection.rb +0 -110
  424. data/lib/aws/s3.rb +0 -156
  425. data/lib/aws/s3/access_control_list.rb +0 -265
  426. data/lib/aws/s3/acl_object.rb +0 -264
  427. data/lib/aws/s3/acl_options.rb +0 -204
  428. data/lib/aws/s3/bucket.rb +0 -742
  429. data/lib/aws/s3/bucket_collection.rb +0 -162
  430. data/lib/aws/s3/bucket_lifecycle_configuration.rb +0 -457
  431. data/lib/aws/s3/bucket_tag_collection.rb +0 -111
  432. data/lib/aws/s3/bucket_version_collection.rb +0 -79
  433. data/lib/aws/s3/cipher_io.rb +0 -120
  434. data/lib/aws/s3/client.rb +0 -1919
  435. data/lib/aws/s3/client/xml.rb +0 -259
  436. data/lib/aws/s3/config.rb +0 -48
  437. data/lib/aws/s3/cors_rule.rb +0 -108
  438. data/lib/aws/s3/cors_rule_collection.rb +0 -194
  439. data/lib/aws/s3/data_options.rb +0 -191
  440. data/lib/aws/s3/encryption_utils.rb +0 -146
  441. data/lib/aws/s3/errors.rb +0 -94
  442. data/lib/aws/s3/multipart_upload.rb +0 -351
  443. data/lib/aws/s3/multipart_upload_collection.rb +0 -76
  444. data/lib/aws/s3/object_collection.rb +0 -353
  445. data/lib/aws/s3/object_metadata.rb +0 -103
  446. data/lib/aws/s3/object_upload_collection.rb +0 -77
  447. data/lib/aws/s3/object_version.rb +0 -154
  448. data/lib/aws/s3/object_version_collection.rb +0 -89
  449. data/lib/aws/s3/paginated_collection.rb +0 -75
  450. data/lib/aws/s3/policy.rb +0 -74
  451. data/lib/aws/s3/prefix_and_delimiter_collection.rb +0 -47
  452. data/lib/aws/s3/prefixed_collection.rb +0 -85
  453. data/lib/aws/s3/presign_v4.rb +0 -127
  454. data/lib/aws/s3/presigned_post.rb +0 -554
  455. data/lib/aws/s3/request.rb +0 -62
  456. data/lib/aws/s3/s3_object.rb +0 -1781
  457. data/lib/aws/s3/tree.rb +0 -116
  458. data/lib/aws/s3/tree/branch_node.rb +0 -68
  459. data/lib/aws/s3/tree/child_collection.rb +0 -104
  460. data/lib/aws/s3/tree/leaf_node.rb +0 -94
  461. data/lib/aws/s3/tree/node.rb +0 -22
  462. data/lib/aws/s3/tree/parent.rb +0 -87
  463. data/lib/aws/s3/uploaded_part.rb +0 -82
  464. data/lib/aws/s3/uploaded_part_collection.rb +0 -84
  465. data/lib/aws/s3/website_configuration.rb +0 -102
  466. data/lib/aws/simple_db.rb +0 -218
  467. data/lib/aws/simple_db/attribute.rb +0 -156
  468. data/lib/aws/simple_db/attribute_collection.rb +0 -240
  469. data/lib/aws/simple_db/client.rb +0 -67
  470. data/lib/aws/simple_db/config.rb +0 -20
  471. data/lib/aws/simple_db/consistent_read_option.rb +0 -42
  472. data/lib/aws/simple_db/delete_attributes.rb +0 -62
  473. data/lib/aws/simple_db/domain.rb +0 -123
  474. data/lib/aws/simple_db/domain_collection.rb +0 -86
  475. data/lib/aws/simple_db/domain_metadata.rb +0 -110
  476. data/lib/aws/simple_db/errors.rb +0 -55
  477. data/lib/aws/simple_db/expect_condition_option.rb +0 -45
  478. data/lib/aws/simple_db/item.rb +0 -93
  479. data/lib/aws/simple_db/item_collection.rb +0 -654
  480. data/lib/aws/simple_db/item_data.rb +0 -73
  481. data/lib/aws/simple_db/put_attributes.rb +0 -60
  482. data/lib/aws/simple_email_service.rb +0 -430
  483. data/lib/aws/simple_email_service/client.rb +0 -37
  484. data/lib/aws/simple_email_service/config.rb +0 -18
  485. data/lib/aws/simple_email_service/email_address_collection.rb +0 -69
  486. data/lib/aws/simple_email_service/errors.rb +0 -22
  487. data/lib/aws/simple_email_service/identity.rb +0 -209
  488. data/lib/aws/simple_email_service/identity_collection.rb +0 -81
  489. data/lib/aws/simple_email_service/quotas.rb +0 -66
  490. data/lib/aws/simple_workflow.rb +0 -227
  491. data/lib/aws/simple_workflow/activity_task.rb +0 -178
  492. data/lib/aws/simple_workflow/activity_task_collection.rb +0 -123
  493. data/lib/aws/simple_workflow/activity_type.rb +0 -131
  494. data/lib/aws/simple_workflow/activity_type_collection.rb +0 -93
  495. data/lib/aws/simple_workflow/client.rb +0 -69
  496. data/lib/aws/simple_workflow/config.rb +0 -18
  497. data/lib/aws/simple_workflow/count.rb +0 -49
  498. data/lib/aws/simple_workflow/decision_task.rb +0 -603
  499. data/lib/aws/simple_workflow/decision_task_collection.rb +0 -225
  500. data/lib/aws/simple_workflow/domain.rb +0 -122
  501. data/lib/aws/simple_workflow/domain_collection.rb +0 -169
  502. data/lib/aws/simple_workflow/errors.rb +0 -20
  503. data/lib/aws/simple_workflow/history_event.rb +0 -276
  504. data/lib/aws/simple_workflow/history_event_collection.rb +0 -76
  505. data/lib/aws/simple_workflow/option_formatters.rb +0 -82
  506. data/lib/aws/simple_workflow/resource.rb +0 -94
  507. data/lib/aws/simple_workflow/type.rb +0 -89
  508. data/lib/aws/simple_workflow/type_collection.rb +0 -140
  509. data/lib/aws/simple_workflow/workflow_execution.rb +0 -384
  510. data/lib/aws/simple_workflow/workflow_execution_collection.rb +0 -617
  511. data/lib/aws/simple_workflow/workflow_type.rb +0 -179
  512. data/lib/aws/simple_workflow/workflow_type_collection.rb +0 -91
  513. data/lib/aws/sns.rb +0 -76
  514. data/lib/aws/sns/client.rb +0 -35
  515. data/lib/aws/sns/config.rb +0 -18
  516. data/lib/aws/sns/errors.rb +0 -22
  517. data/lib/aws/sns/has_delivery_policy.rb +0 -68
  518. data/lib/aws/sns/message.rb +0 -194
  519. data/lib/aws/sns/originators/from_auto_scaling.rb +0 -68
  520. data/lib/aws/sns/policy.rb +0 -47
  521. data/lib/aws/sns/subscription.rb +0 -165
  522. data/lib/aws/sns/subscription_collection.rb +0 -78
  523. data/lib/aws/sns/topic.rb +0 -403
  524. data/lib/aws/sns/topic_collection.rb +0 -62
  525. data/lib/aws/sns/topic_subscription_collection.rb +0 -54
  526. data/lib/aws/sqs.rb +0 -80
  527. data/lib/aws/sqs/client.rb +0 -53
  528. data/lib/aws/sqs/config.rb +0 -20
  529. data/lib/aws/sqs/errors.rb +0 -125
  530. data/lib/aws/sqs/policy.rb +0 -48
  531. data/lib/aws/sqs/queue.rb +0 -843
  532. data/lib/aws/sqs/queue_collection.rb +0 -182
  533. data/lib/aws/sqs/received_message.rb +0 -182
  534. data/lib/aws/sqs/received_sns_message.rb +0 -116
  535. data/lib/aws/storage_gateway.rb +0 -72
  536. data/lib/aws/storage_gateway/client.rb +0 -42
  537. data/lib/aws/storage_gateway/config.rb +0 -18
  538. data/lib/aws/storage_gateway/errors.rb +0 -22
  539. data/lib/aws/sts.rb +0 -164
  540. data/lib/aws/sts/client.rb +0 -46
  541. data/lib/aws/sts/config.rb +0 -18
  542. data/lib/aws/sts/errors.rb +0 -22
  543. data/lib/aws/sts/federated_session.rb +0 -56
  544. data/lib/aws/sts/policy.rb +0 -30
  545. data/lib/aws/sts/session.rb +0 -48
  546. data/lib/aws/support.rb +0 -29
  547. data/lib/aws/support/client.rb +0 -35
  548. data/lib/aws/support/config.rb +0 -18
  549. data/lib/aws/support/errors.rb +0 -20
  550. data/lib/aws/version.rb +0 -17
  551. data/rails/init.rb +0 -15
@@ -1,47 +0,0 @@
1
- # Copyright 2011-2013 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
- # @api private
18
- module PrefixAndDelimiterCollection
19
-
20
- include PrefixedCollection
21
-
22
- # @see Bucket#as_tree
23
- def as_tree options = {}
24
- Tree.new(self, { :prefix => prefix }.merge(options))
25
- end
26
-
27
- # @api private
28
- protected
29
- def each_member_in_page(page, &block)
30
- super
31
- page.common_prefixes.each do |p|
32
- yield(with_prefix(p[:prefix]))
33
- end
34
- end
35
-
36
- # @api private
37
- protected
38
- def list_options(options)
39
- opts = super
40
- opts[:delimiter] = options[:delimiter] if options.key?(:delimiter)
41
- opts
42
- end
43
-
44
- end
45
-
46
- end
47
- end
@@ -1,85 +0,0 @@
1
- # Copyright 2011-2013 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
- module PrefixedCollection
18
-
19
- include PaginatedCollection
20
-
21
- # @api private
22
- def initialize *args
23
- options = args.last.is_a?(Hash) ? args.pop : {}
24
- @prefix = options[:prefix]
25
- args.push(options)
26
- super(*args)
27
- end
28
-
29
- # @return [String,nil] The prefix of this collection.
30
- attr_reader :prefix
31
-
32
- # Returns a new collection with a different prefix
33
- #
34
- # @example
35
- #
36
- # objects = collection.with_prefix('photos')
37
- # objects.prefix #=> 'photos'
38
- #
39
- # @example Chaining with_prefix replaces previous prefix
40
- #
41
- # objects = collection.with_prefix('photos').with_prefix('videos')
42
- # objects.prefix #=> 'videos'
43
- #
44
- # @example Chaining with_prefix with :append
45
- #
46
- # objects = collection.with_prefix('a/').with_prefix('b/', :append)
47
- # objects.prefix #=> 'a/b/'
48
- #
49
- # @example Chaining with_prefix with :prepend
50
- #
51
- # objects = collection.with_prefix('a/').with_prefix('b/', :prepend)
52
- # objects.prefix #=> 'b/a/'
53
- #
54
- # @param [String] prefix The prefix condition that limits what objects
55
- # are returned by this collection.
56
- # @param [Symbol] mode (:replace) If you chain calls to #with_prefix
57
- # the `mode` affects if the prefix prepends, appends, or replaces.
58
- # Valid modes are:
59
- # * `:replace`
60
- # * `:append`
61
- # * `:prepend`
62
- # @return [Collection] Returns a new collection with a modified prefix.
63
- def with_prefix prefix, mode = :replace
64
- new_prefix = case mode
65
- when :replace then prefix
66
- when :append then "#{@prefix}#{prefix}"
67
- when :prepend then "#{prefix}#{@prefix}"
68
- else
69
- raise ArgumentError, "invalid prefix mode `#{mode}`, it must be " +
70
- ":replace, :append or :prepend"
71
- end
72
- self.class.new(bucket, :prefix => new_prefix)
73
- end
74
-
75
- # @api private
76
- protected
77
- def list_options(options)
78
- opts = super
79
- opts[:prefix] = prefix if prefix
80
- opts
81
- end
82
-
83
- end
84
- end
85
- end
@@ -1,127 +0,0 @@
1
- # Copyright 2011-2013 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
- # Utility class for building pre-signed URLs for Amazon S3 objects using
18
- # signature version 4.
19
- class PresignV4
20
-
21
- # @param [S3Object] object
22
- def initialize(object)
23
- @object = object
24
- @client = object.client
25
- @signer = object.client.send(:v4_signer)
26
- end
27
-
28
- # @return [S3Object]
29
- attr_reader :object
30
-
31
- # @return [Client]
32
- attr_reader :client
33
-
34
- # @return [Core::Signers::Version4]
35
- attr_reader :signer
36
-
37
- # @param (see S3Object#url_for)
38
- # @option (see S3Object#url_for)
39
- # @return (see S3Object#url_for)
40
- def presign(method, options = {})
41
-
42
- now = Time.now.utc.strftime("%Y%m%dT%H%M%SZ")
43
-
44
- request = build_request(method, options)
45
-
46
- request.headers.clear
47
- request.headers['host'] = request.host
48
- signed_headers = 'Host'
49
-
50
- # must be sent along with the PUT request headers
51
- if options[:acl]
52
- request.headers['X-Amz-Acl'] = options[:acl].to_s.gsub(/_/, '-')
53
- signed_headers << ';X-Amz-Acl'
54
- end
55
-
56
- # must be sent along with the PUT request headers
57
- if options[:content_md5]
58
- request.headers['Content-MD5'] = options[:content_md5]
59
- signed_headers << ';Content-MD5'
60
- end
61
-
62
- request_params = Core::Signers::S3::QUERY_PARAMS.map do |p|
63
- param = p.tr("-","_").to_sym
64
- if options.key?(param)
65
- request.add_param(p, options[param])
66
- end
67
- end
68
-
69
- request.add_param("X-Amz-Algorithm", "AWS4-HMAC-SHA256")
70
- request.add_param("X-Amz-Date", now)
71
- request.add_param("X-Amz-SignedHeaders", signed_headers)
72
- request.add_param("X-Amz-Expires", seconds_away(options[:expires]))
73
- request.add_param("X-Amz-Credential", signer.credential(now))
74
- request.add_param("X-Amz-Signature", signature(request, now))
75
-
76
- build_uri(request, options)
77
-
78
- end
79
-
80
- private
81
-
82
- def build_request(method, options)
83
- path_style = object.config.s3_force_path_style
84
- params = options.merge(
85
- :bucket_name => object.bucket.name,
86
- :key => object.key,
87
- :data => ''
88
- )
89
- req = client.send(:build_request, operation_name(method), params)
90
- req.force_path_style = options.fetch(:force_path_style, path_style)
91
- req
92
- end
93
-
94
- def operation_name(method)
95
- case method
96
- when :get, :read then :get_object
97
- when :put, :write then :put_object
98
- when :delete then :delete_object
99
- else
100
- msg = "invalid method, expected :get, :put or :delete, got "
101
- msg << method.inspect
102
- raise ArgumentError msg
103
- end
104
- end
105
-
106
- def signature(request, datetime)
107
- key = signer.derive_key(datetime)
108
- signer.signature(request, key, datetime, 'UNSIGNED-PAYLOAD')
109
- end
110
-
111
- def build_uri(request, options)
112
- uri_class = options[:secure] ? URI::HTTPS : URI::HTTP
113
- uri_class.build(
114
- :host => request.host,
115
- :port => request.port,
116
- :path => request.path,
117
- :query => request.querystring
118
- )
119
- end
120
-
121
- def seconds_away(expires)
122
- expires - Time.now.to_i
123
- end
124
-
125
- end
126
- end
127
- end
@@ -1,554 +0,0 @@
1
- # Copyright 2011-2013 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 'uri'
15
- require 'time'
16
-
17
- module AWS
18
- class S3
19
-
20
- # Helper to generate form fields for presigned POST requests to
21
- # a bucket. You can use this to create a form that can be used
22
- # from a web browser to upload objects to S3 while specifying
23
- # conditions on what can be uploaded and how it is processed and
24
- # stored.
25
- #
26
- # @example Form fields for uploading by file name
27
- #
28
- # form = bucket.presigned_post(:key => "photos/${filename}")
29
- # form.url.to_s # => "https://mybucket.s3.amazonaws.com/"
30
- # form.fields # => { "AWSAccessKeyId" => "...", ... }
31
- #
32
- # @example Generating a minimal HTML form
33
- #
34
- # form = bucket.objects.myobj.presigned_post
35
- # hidden_inputs = form.fields.map do |(name, value)|
36
- # %(<input type="hidden" name="#{name}" value="#{value}" />)
37
- # end
38
- # <<-END
39
- # <form action="#{form.url}" method="post" enctype="multipart/form-data">
40
- # #{hidden_inputs}
41
- # <input type="file" name="file" />
42
- # </form>
43
- # END
44
- #
45
- # @example Restricting the size of the uploaded object
46
- #
47
- # bucket.presigned_post(:content_length => 1..(10*1024))
48
- #
49
- # @example Restricting the key prefix
50
- #
51
- # bucket.presigned_post.where(:key).starts_with("photos/")
52
- #
53
- class PresignedPost
54
-
55
- include Core::Model
56
-
57
- # @return [Bucket] The bucket to which data can be uploaded
58
- # using the form fields
59
- attr_reader :bucket
60
-
61
- # @return [String] The key of the object that will be
62
- # uploaded. If this is nil, then the object can be uploaded
63
- # with any key that satisfies the conditions specified for
64
- # the upload (see {#where}).
65
- attr_reader :key
66
-
67
- # @return [Hash] A hash of the metadata fields included in the
68
- # signed fields. Additional metadata fields may be provided
69
- # with the upload as long as they satisfy the conditions
70
- # specified for the upload (see {#where}).
71
- attr_reader :metadata
72
-
73
- # @return [Range] The range of acceptable object sizes for the
74
- # upload. By default any size object may be uploaded.
75
- attr_reader :content_length
76
-
77
- # @api private
78
- attr_reader :conditions
79
-
80
- # @return [Array<String>] Additional fields which may be sent
81
- # with the upload. These will be included in the policy so
82
- # that they can be sent with any value. S3 will ignore
83
- # them.
84
- attr_reader :ignored_fields
85
-
86
- # @return The expiration time for the signature. By default
87
- # the signature will expire an hour after it is generated.
88
- attr_reader :expires
89
-
90
- # @api private
91
- SPECIAL_FIELDS = [:key,
92
- :policy,
93
- :signature,
94
- :expires,
95
- :metadata,
96
- :content_length,
97
- :conditions,
98
- :ignore]
99
-
100
- # Creates a new presigned post object.
101
- #
102
- # @param [Bucket] bucket The bucket to which data can be uploaded
103
- # using the form fields.
104
- #
105
- # @param [Hash] opts Additional options for the upload. Aside
106
- # from `:secure`, `:expires`, `:content_length` and `:ignore`
107
- # the values provided here will be stored in the hash returned
108
- # from the {#fields} method, and the policy in that hash will
109
- # restrict their values to the values provided. If you
110
- # instead want to only restrict the values and not provide
111
- # them -- for example, if your application generates separate
112
- # form fields for those values -- you should use the {#where}
113
- # method on the returned object instead of providing the
114
- # values here.
115
- #
116
- # @option opts [String] :key The key of the object that will
117
- # be uploaded. If this is nil, then the object can be
118
- # uploaded with any key that satisfies the conditions
119
- # specified for the upload (see {#where}).
120
- #
121
- # @option opts [Boolean] :secure By setting this to false, you
122
- # can cause {#url} to return an HTTP URL. By default it
123
- # returns an HTTPS URL.
124
- #
125
- # @option opts [Time, DateTime, Integer, String] :expires The
126
- # time at which the signature will expire. By default the
127
- # signature will expire one hour after it is generated
128
- # (e.g. when {#fields} is called).
129
- #
130
- # When the value is a Time or DateTime, the signature
131
- # expires at the specified time. When it is an integer, the
132
- # signature expires the specified number of seconds after it
133
- # is generated. When it is a string, the string is parsed
134
- # as a time (using Time.parse) and the signature expires at
135
- # that time.
136
- #
137
- # @option opts [String] :cache_control Sets the Cache-Control
138
- # header stored with the object.
139
- #
140
- # @option opts [String] :content_type Sets the Content-Type
141
- # header stored with the object.
142
- #
143
- # @option opts [String] :content_disposition Sets the
144
- # Content-Disposition header stored with the object.
145
- #
146
- # @option opts [String] :expires_header Sets the Expires
147
- # header stored with the object.
148
- #
149
- # @option options [Symbol] :acl A canned access control
150
- # policy. Valid values are:
151
- # * `:private`
152
- # * `:public_read`
153
- # * `:public_read_write`
154
- # * `:authenticated_read`
155
- # * `:bucket_owner_read`
156
- # * `:bucket_owner_full_control`
157
- #
158
- # @option options [Symbol] :server_side_encryption (nil) If this
159
- # option is set, the object will be stored using server side
160
- # encryption. The only valid value is `:aes256`, which
161
- # specifies that the object should be stored using the AES
162
- # encryption algorithm with 256 bit keys. By default, this
163
- # option uses the value of the `:s3_server_side_encryption`
164
- # option in the current configuration; for more information,
165
- # see {AWS.config}.
166
- #
167
- # @option opts [String] :success_action_redirect The URL to
168
- # which the client is redirected upon successful upload.
169
- #
170
- # @option opts [Integer] :success_action_status The status
171
- # code returned to the client upon successful upload if
172
- # `:success_action_redirect` is not specified. Accepts the
173
- # values 200, 201, or 204 (default).
174
- #
175
- # If the value is set to 200 or 204, Amazon S3 returns an
176
- # empty document with a 200 or 204 status code.
177
- #
178
- # If the value is set to 201, Amazon S3 returns an XML
179
- # document with a 201 status code. For information on the
180
- # content of the XML document, see
181
- # [POST Object](http://docs.amazonwebservices.com/AmazonS3/2006-03-01/API/index.html?RESTObjectPOST.html).
182
- #
183
- # @option opts [Hash] :metadata A hash of the metadata fields
184
- # included in the signed fields. Additional metadata fields
185
- # may be provided with the upload as long as they satisfy
186
- # the conditions specified for the upload (see {#where}).
187
- #
188
- # @option opts [Integer, Range] :content_length The range of
189
- # acceptable object sizes for the upload. By default any
190
- # size object may be uploaded.
191
- #
192
- # @option opts [Array<String>] :ignore Additional fields which
193
- # may be sent with the upload. These will be included in
194
- # the policy so that they can be sent with any value. S3
195
- # will ignore them.
196
- def initialize(bucket, opts = {})
197
- @bucket = bucket
198
- @key = opts[:key]
199
- @secure = (opts[:secure] != false)
200
- @fields = {}
201
- # TODO normalize all values to @fields
202
- opts.each do |opt_key, opt_val|
203
- @fields[opt_key] = opt_val unless SPECIAL_FIELDS.include? opt_key
204
- end
205
- @metadata = opts[:metadata] || {}
206
- @content_length = range_value(opts[:content_length])
207
- @conditions = opts[:conditions] || {}
208
- @ignored_fields = [opts[:ignore]].flatten.compact
209
- @expires = opts[:expires]
210
-
211
- super
212
-
213
- @fields[:server_side_encryption] =
214
- config.s3_server_side_encryption unless
215
- @fields.key?(:server_side_encryption)
216
- @fields.delete(:server_side_encryption) if
217
- @fields[:server_side_encryption].nil?
218
- end
219
-
220
- # @return [Boolean] True if {#url} generates an HTTPS url.
221
- def secure?
222
- @secure
223
- end
224
-
225
- # @return [URI::HTTP, URI::HTTPS] The URL to which the form
226
- # fields should be POSTed. If you are using the fields in
227
- # an HTML form, this is the URL to put in the `action`
228
- # attribute of the form tag.
229
- def url
230
- req = Request.new
231
- req.bucket = bucket.name
232
- req.host = config.s3_endpoint
233
- build_uri(req)
234
- end
235
-
236
- # Lets you specify conditions on a field. See
237
- # {PresignedPost#where} for usage examples.
238
- class ConditionBuilder
239
-
240
- # @api private
241
- def initialize(post, field)
242
- @post = post
243
- @field = field
244
- end
245
-
246
- # Specifies that the value of the field must equal the
247
- # provided value.
248
- def is(value)
249
- if @field == :content_length
250
- self.in(value)
251
- else
252
- @post.with_equality_condition(@field, value)
253
- end
254
- end
255
-
256
- # Specifies that the value of the field must begin with the
257
- # provided value. If you are specifying a condition on the
258
- # "key" field, note that this check takes place after the
259
- # `${filename}` variable is expanded. This is only valid
260
- # for the following fields:
261
- #
262
- # * `:key`
263
- # * `:cache_control`
264
- # * `:content_type`
265
- # * `:content_disposition`
266
- # * `:content_encoding`
267
- # * `:expires_header`
268
- # * `:acl`
269
- # * `:success_action_redirect`
270
- # * metadata fields (see {#where_metadata})
271
- def starts_with(prefix)
272
- @post.with_prefix_condition(@field, prefix)
273
- end
274
-
275
- # Specifies that the value of the field must be in the given
276
- # range. This may only be used to constrain the
277
- # `:content_length` field,
278
- # e.g. `presigned_post.with(:conent_length).in(1..4)`.
279
- def in(range)
280
- @post.refine(:content_length => range)
281
- end
282
-
283
- end
284
-
285
- # Adds a condition to the policy for the POST. Use
286
- # {#where_metadata} to add metadata conditions.
287
- #
288
- # @example Restricting the ACL to "bucket-owner" ACLs
289
- # presigned_post.where(:acl).starts_with("bucket-owner")
290
- #
291
- # @param [Symbol] field The field for which a condition should
292
- # be added. In addition to any arbitrary values you have set,
293
- # the following values are also permitted:
294
- #
295
- # * `:key`
296
- # * `:content_length`
297
- # * `:cache_control`
298
- # * `:content_type`
299
- # * `:content_disposition`
300
- # * `:content_encoding`
301
- # * `:expires_header`
302
- # * `:acl`
303
- # * `:success_action_redirect`
304
- # * `:success_action_status`
305
- #
306
- # @return [ConditionBuilder] An object that allows you to
307
- # specify a condition on the field.
308
- def where(field)
309
- ConditionBuilder.new(self, field)
310
- end
311
-
312
- # Adds a condition to the policy for the POST to constrain the
313
- # values of metadata fields uploaded with the object. If a
314
- # metadata field does not have a condition associated with it
315
- # and is not specified in the constructor (see {#metadata})
316
- # then S3 will reject it.
317
- #
318
- # @param [Symbol, String] field The name of the metadata
319
- # attribute. For example, `:color` corresponds to the
320
- # "x-amz-meta-color" field in the POST body.
321
- #
322
- # @return [ConditionBuilder] An object that allows you to
323
- # specify a condition on the metadata attribute.
324
- def where_metadata(field)
325
- where("x-amz-meta-#{field}")
326
- end
327
-
328
- # @return [String] The Base64-encoded JSON policy document.
329
- def policy
330
- json = {
331
- "expiration" => format_expiration,
332
- "conditions" => generate_conditions
333
- }.to_json
334
- Base64.encode64(json).tr("\n","")
335
- end
336
-
337
- # @return [Hash] A collection of form fields (including a
338
- # signature and a policy) that can be used to POST data to
339
- # S3. Additional form fields may be added after the fact as
340
- # long as they are described by a policy condition (see
341
- # {#where}).
342
- def fields
343
-
344
- secret = config.credential_provider.secret_access_key
345
- signature = Core::Signers::Base.sign(secret, policy, 'sha1')
346
-
347
- fields = {
348
- "AWSAccessKeyId" => config.credential_provider.access_key_id,
349
- "key" => key,
350
- "policy" => policy,
351
- "signature" => signature
352
- }.merge(optional_fields)
353
-
354
- if token = config.credential_provider.session_token
355
- fields["x-amz-security-token"] = token
356
- end
357
-
358
- fields.merge(optional_fields)
359
- end
360
-
361
- # @api private
362
- def with_equality_condition(option_name, value)
363
- field_name = field_name(option_name)
364
- with_condition(option_name, Hash[[[field_name, value]]])
365
- end
366
-
367
- # @api private
368
- def with_prefix_condition(option_name, prefix)
369
- field_name = field_name(option_name)
370
- with_condition(option_name,
371
- ["starts-with", "$#{field_name}", prefix])
372
- end
373
-
374
- # @api private
375
- def refine(opts)
376
- self.class.new(bucket, {
377
- :conditions => conditions,
378
- :key => key,
379
- :metadata => metadata,
380
- :secure => secure?,
381
- :content_length => content_length,
382
- :expires => expires,
383
- :ignore => ignored_fields
384
- }.merge(@fields).
385
- merge(opts))
386
- end
387
-
388
- # @api private
389
- private
390
- def with_condition(field, condition)
391
- conditions = self.conditions.dup
392
- (conditions[field] ||= []) << condition
393
- refine(:conditions => conditions)
394
- end
395
-
396
- # @api private
397
- private
398
- def format_expiration
399
- time = expires || Time.now.utc + 60*60
400
- time =
401
- case time
402
- when Time
403
- time
404
- when DateTime
405
- Time.parse(time.to_s)
406
- when Integer
407
- (Time.now + time)
408
- when String
409
- Time.parse(time)
410
- end
411
- time.utc.iso8601
412
- end
413
-
414
- # @api private
415
- private
416
- def range_value(range)
417
- case range
418
- when Integer
419
- range..range
420
- when Range
421
- range
422
- end
423
- end
424
-
425
- # @api private
426
- private
427
- def split_range(range)
428
- range = range_value(range)
429
- [range.begin,
430
- (range.exclude_end? ?
431
- range.end-1 :
432
- range.end)]
433
- end
434
-
435
- # @api private
436
- private
437
- def optional_fields
438
- fields = @fields.keys.inject({}) do |fields, option_name|
439
- fields[field_name(option_name)] =
440
- field_value(option_name)
441
- fields
442
- end
443
-
444
- @metadata.each do |key, value|
445
- fields["x-amz-meta-#{key}"] = value.to_s
446
- end
447
-
448
- fields
449
- end
450
-
451
- # @api private
452
- private
453
- def field_name(option_name)
454
- case option_name
455
- when :expires_header
456
- "Expires"
457
- when :server_side_encryption
458
- "x-amz-server-side-encryption"
459
- when :key, "Key", :policy, "Policy"
460
- option_name.to_s.downcase
461
- when :acl, :success_action_redirect, :success_action_status
462
- option_name.to_s
463
- else
464
- # e.g. Cache-Control from cache_control
465
- field_name = option_name.to_s.tr("_", "-").
466
- gsub(/-(.)/) { |m| m.upcase }
467
- field_name[0,1] = field_name[0,1].upcase
468
- field_name
469
- end
470
- end
471
-
472
- # @api private
473
- private
474
- def field_value(option_name)
475
- case option_name
476
- when :acl
477
- @fields[:acl].to_s.tr("_", "-")
478
- when :server_side_encryption
479
- value = @fields[:server_side_encryption]
480
- if value.kind_of?(Symbol)
481
- value.to_s.upcase
482
- else
483
- value.to_s
484
- end
485
- else
486
- @fields[option_name].to_s
487
- end
488
- end
489
-
490
- # @api private
491
- private
492
- def generate_conditions
493
-
494
- conditions = self.conditions.inject([]) do |list, (field, field_conds)|
495
- list + field_conds
496
- end
497
-
498
- conditions << { "bucket" => bucket.name }
499
- conditions += key_conditions
500
- conditions += optional_fields.map { |(n, v)| Hash[[[n, v]]] }
501
- conditions += range_conditions
502
- conditions += ignored_conditions
503
-
504
- if token = config.credential_provider.session_token
505
- conditions << { "x-amz-security-token" => token }
506
- end
507
-
508
- conditions
509
-
510
- end
511
-
512
- # @api private
513
- private
514
- def ignored_conditions
515
- ignored_fields.map do |field|
516
- ["starts-with", "$#{field}", ""]
517
- end
518
- end
519
-
520
- # @api private
521
- private
522
- def range_conditions
523
- if content_length
524
- [["content-length-range", *split_range(content_length)]]
525
- else
526
- []
527
- end
528
- end
529
-
530
- # @api private
531
- private
532
- def key_conditions
533
- [if key && key.include?("${filename}")
534
- ["starts-with", "$key", key[/^(.*)\$\{filename\}/, 1]]
535
- elsif key
536
- { "key" => key }
537
- else
538
- ["starts-with", "$key", ""]
539
- end]
540
- end
541
-
542
- # @api private
543
- private
544
- def build_uri(request)
545
- uri_class = secure? ? URI::HTTPS : URI::HTTP
546
- uri_class.build(:host => request.host,
547
- :path => request.path,
548
- :query => request.querystring)
549
- end
550
-
551
- end
552
-
553
- end
554
- end