aws-sdk-v1 1.52.0

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 (560) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +7 -0
  3. data/LICENSE.txt +12 -0
  4. data/README.md +337 -0
  5. data/bin/aws-rb +179 -0
  6. data/ca-bundle.crt +3554 -0
  7. data/endpoints.json +1671 -0
  8. data/lib/aws-sdk-v1.rb +2 -0
  9. data/lib/aws-sdk.rb +1 -0
  10. data/lib/aws.rb +14 -0
  11. data/lib/aws/api_config/AutoScaling-2011-01-01.yml +1070 -0
  12. data/lib/aws/api_config/CloudFormation-2010-05-15.yml +372 -0
  13. data/lib/aws/api_config/CloudFront-2013-05-12.yml +2448 -0
  14. data/lib/aws/api_config/CloudFront-2013-08-26.yml +2599 -0
  15. data/lib/aws/api_config/CloudFront-2013-09-27.yml +2765 -0
  16. data/lib/aws/api_config/CloudFront-2013-11-11.yml +2886 -0
  17. data/lib/aws/api_config/CloudFront-2013-11-22.yml +2918 -0
  18. data/lib/aws/api_config/CloudFront-2014-01-31.yml +2934 -0
  19. data/lib/aws/api_config/CloudFront-2014-05-31.yml +3100 -0
  20. data/lib/aws/api_config/CloudSearch-2011-02-01.yml +681 -0
  21. data/lib/aws/api_config/CloudSearch-2013-01-01.yml +1164 -0
  22. data/lib/aws/api_config/CloudTrail-2013-11-01.yml +130 -0
  23. data/lib/aws/api_config/CloudWatch-2010-08-01.yml +433 -0
  24. data/lib/aws/api_config/DataPipeline-2012-10-29.yml +422 -0
  25. data/lib/aws/api_config/DirectConnect-2012-10-25.yml +735 -0
  26. data/lib/aws/api_config/DynamoDB-2011-12-05.yml +1168 -0
  27. data/lib/aws/api_config/DynamoDB-2012-08-10.yml +2105 -0
  28. data/lib/aws/api_config/EC2-2013-08-15.yml +4708 -0
  29. data/lib/aws/api_config/EC2-2013-10-01.yml +4726 -0
  30. data/lib/aws/api_config/EC2-2013-10-15.yml +4651 -0
  31. data/lib/aws/api_config/EC2-2014-02-01.yml +4755 -0
  32. data/lib/aws/api_config/EC2-2014-05-01.yml +4812 -0
  33. data/lib/aws/api_config/ELB-2012-06-01.yml +766 -0
  34. data/lib/aws/api_config/EMR-2009-03-31.yml +972 -0
  35. data/lib/aws/api_config/ElastiCache-2013-06-15.yml +1188 -0
  36. data/lib/aws/api_config/ElastiCache-2014-03-24.yml +1375 -0
  37. data/lib/aws/api_config/ElastiCache-2014-07-15.yml +1385 -0
  38. data/lib/aws/api_config/ElasticBeanstalk-2010-12-01.yml +854 -0
  39. data/lib/aws/api_config/ElasticTranscoder-2012-09-25.yml +3082 -0
  40. data/lib/aws/api_config/Glacier-2012-06-01.yml +649 -0
  41. data/lib/aws/api_config/IAM-2010-05-08.yml +1339 -0
  42. data/lib/aws/api_config/ImportExport-2010-06-01.yml +109 -0
  43. data/lib/aws/api_config/Kinesis-2013-12-02.yml +201 -0
  44. data/lib/aws/api_config/OpsWorks-2013-02-18.yml +2025 -0
  45. data/lib/aws/api_config/RDS-2013-05-15.yml +2464 -0
  46. data/lib/aws/api_config/RDS-2013-09-09.yml +2640 -0
  47. data/lib/aws/api_config/Redshift-2012-12-01.yml +2161 -0
  48. data/lib/aws/api_config/Route53-2012-12-12.yml +547 -0
  49. data/lib/aws/api_config/Route53-2013-04-01.yml +889 -0
  50. data/lib/aws/api_config/SNS-2010-03-31.yml +448 -0
  51. data/lib/aws/api_config/SQS-2012-11-05.yml +404 -0
  52. data/lib/aws/api_config/STS-2011-06-15.yml +151 -0
  53. data/lib/aws/api_config/SimpleDB-2009-04-15.yml +306 -0
  54. data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +346 -0
  55. data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +2388 -0
  56. data/lib/aws/api_config/StorageGateway-2012-06-30.yml +748 -0
  57. data/lib/aws/api_config/StorageGateway-2013-06-30.yml +1025 -0
  58. data/lib/aws/api_config/Support-2013-04-15.yml +489 -0
  59. data/lib/aws/auto_scaling.rb +163 -0
  60. data/lib/aws/auto_scaling/activity.rb +102 -0
  61. data/lib/aws/auto_scaling/activity_collection.rb +81 -0
  62. data/lib/aws/auto_scaling/client.rb +48 -0
  63. data/lib/aws/auto_scaling/config.rb +18 -0
  64. data/lib/aws/auto_scaling/errors.rb +22 -0
  65. data/lib/aws/auto_scaling/group.rb +421 -0
  66. data/lib/aws/auto_scaling/group_collection.rb +96 -0
  67. data/lib/aws/auto_scaling/group_options.rb +155 -0
  68. data/lib/aws/auto_scaling/instance.rb +192 -0
  69. data/lib/aws/auto_scaling/instance_collection.rb +63 -0
  70. data/lib/aws/auto_scaling/launch_configuration.rb +162 -0
  71. data/lib/aws/auto_scaling/launch_configuration_collection.rb +160 -0
  72. data/lib/aws/auto_scaling/notification_configuration.rb +89 -0
  73. data/lib/aws/auto_scaling/notification_configuration_collection.rb +183 -0
  74. data/lib/aws/auto_scaling/scaling_policy.rb +142 -0
  75. data/lib/aws/auto_scaling/scaling_policy_collection.rb +72 -0
  76. data/lib/aws/auto_scaling/scaling_policy_options.rb +65 -0
  77. data/lib/aws/auto_scaling/scheduled_action.rb +141 -0
  78. data/lib/aws/auto_scaling/scheduled_action_collection.rb +202 -0
  79. data/lib/aws/auto_scaling/tag.rb +59 -0
  80. data/lib/aws/auto_scaling/tag_collection.rb +114 -0
  81. data/lib/aws/cloud_formation.rb +272 -0
  82. data/lib/aws/cloud_formation/client.rb +48 -0
  83. data/lib/aws/cloud_formation/config.rb +18 -0
  84. data/lib/aws/cloud_formation/errors.rb +22 -0
  85. data/lib/aws/cloud_formation/stack.rb +266 -0
  86. data/lib/aws/cloud_formation/stack_collection.rb +232 -0
  87. data/lib/aws/cloud_formation/stack_event.rb +73 -0
  88. data/lib/aws/cloud_formation/stack_event_collection.rb +47 -0
  89. data/lib/aws/cloud_formation/stack_options.rb +72 -0
  90. data/lib/aws/cloud_formation/stack_output.rb +53 -0
  91. data/lib/aws/cloud_formation/stack_resource.rb +117 -0
  92. data/lib/aws/cloud_formation/stack_resource_collection.rb +83 -0
  93. data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +64 -0
  94. data/lib/aws/cloud_formation/stack_summary_collection.rb +123 -0
  95. data/lib/aws/cloud_front.rb +72 -0
  96. data/lib/aws/cloud_front/client.rb +57 -0
  97. data/lib/aws/cloud_front/config.rb +18 -0
  98. data/lib/aws/cloud_front/errors.rb +22 -0
  99. data/lib/aws/cloud_search.rb +73 -0
  100. data/lib/aws/cloud_search/client.rb +40 -0
  101. data/lib/aws/cloud_search/config.rb +18 -0
  102. data/lib/aws/cloud_search/errors.rb +22 -0
  103. data/lib/aws/cloud_trail.rb +72 -0
  104. data/lib/aws/cloud_trail/client.rb +35 -0
  105. data/lib/aws/cloud_trail/config.rb +18 -0
  106. data/lib/aws/cloud_trail/errors.rb +22 -0
  107. data/lib/aws/cloud_watch.rb +118 -0
  108. data/lib/aws/cloud_watch/alarm.rb +293 -0
  109. data/lib/aws/cloud_watch/alarm_collection.rb +153 -0
  110. data/lib/aws/cloud_watch/alarm_history_item.rb +50 -0
  111. data/lib/aws/cloud_watch/alarm_history_item_collection.rb +84 -0
  112. data/lib/aws/cloud_watch/client.rb +40 -0
  113. data/lib/aws/cloud_watch/config.rb +18 -0
  114. data/lib/aws/cloud_watch/errors.rb +22 -0
  115. data/lib/aws/cloud_watch/metric.rb +135 -0
  116. data/lib/aws/cloud_watch/metric_alarm_collection.rb +160 -0
  117. data/lib/aws/cloud_watch/metric_collection.rb +129 -0
  118. data/lib/aws/cloud_watch/metric_statistics.rb +69 -0
  119. data/lib/aws/core.rb +716 -0
  120. data/lib/aws/core/async_handle.rb +90 -0
  121. data/lib/aws/core/cacheable.rb +77 -0
  122. data/lib/aws/core/client.rb +787 -0
  123. data/lib/aws/core/collection.rb +263 -0
  124. data/lib/aws/core/collection/simple.rb +82 -0
  125. data/lib/aws/core/collection/with_limit_and_next_token.rb +71 -0
  126. data/lib/aws/core/collection/with_next_token.rb +97 -0
  127. data/lib/aws/core/configuration.rb +542 -0
  128. data/lib/aws/core/credential_providers.rb +639 -0
  129. data/lib/aws/core/data.rb +247 -0
  130. data/lib/aws/core/deprecations.rb +84 -0
  131. data/lib/aws/core/endpoints.rb +37 -0
  132. data/lib/aws/core/http/connection_pool.rb +369 -0
  133. data/lib/aws/core/http/curb_handler.rb +148 -0
  134. data/lib/aws/core/http/handler.rb +89 -0
  135. data/lib/aws/core/http/net_http_handler.rb +144 -0
  136. data/lib/aws/core/http/patch.rb +102 -0
  137. data/lib/aws/core/http/request.rb +259 -0
  138. data/lib/aws/core/http/response.rb +81 -0
  139. data/lib/aws/core/indifferent_hash.rb +88 -0
  140. data/lib/aws/core/inflection.rb +56 -0
  141. data/lib/aws/core/ini_parser.rb +42 -0
  142. data/lib/aws/core/json_client.rb +47 -0
  143. data/lib/aws/core/json_parser.rb +76 -0
  144. data/lib/aws/core/json_request_builder.rb +35 -0
  145. data/lib/aws/core/json_response_parser.rb +79 -0
  146. data/lib/aws/core/lazy_error_classes.rb +108 -0
  147. data/lib/aws/core/log_formatter.rb +428 -0
  148. data/lib/aws/core/managed_file.rb +32 -0
  149. data/lib/aws/core/meta_utils.rb +45 -0
  150. data/lib/aws/core/model.rb +62 -0
  151. data/lib/aws/core/naming.rb +30 -0
  152. data/lib/aws/core/option_grammar.rb +738 -0
  153. data/lib/aws/core/options/json_serializer.rb +82 -0
  154. data/lib/aws/core/options/validator.rb +155 -0
  155. data/lib/aws/core/options/xml_serializer.rb +118 -0
  156. data/lib/aws/core/page_result.rb +75 -0
  157. data/lib/aws/core/policy.rb +941 -0
  158. data/lib/aws/core/query_client.rb +41 -0
  159. data/lib/aws/core/query_error_parser.rb +24 -0
  160. data/lib/aws/core/query_request_builder.rb +47 -0
  161. data/lib/aws/core/query_response_parser.rb +35 -0
  162. data/lib/aws/core/region.rb +85 -0
  163. data/lib/aws/core/region_collection.rb +80 -0
  164. data/lib/aws/core/resource.rb +413 -0
  165. data/lib/aws/core/resource_cache.rb +40 -0
  166. data/lib/aws/core/response.rb +215 -0
  167. data/lib/aws/core/response_cache.rb +50 -0
  168. data/lib/aws/core/rest_error_parser.rb +24 -0
  169. data/lib/aws/core/rest_json_client.rb +40 -0
  170. data/lib/aws/core/rest_request_builder.rb +154 -0
  171. data/lib/aws/core/rest_response_parser.rb +66 -0
  172. data/lib/aws/core/rest_xml_client.rb +47 -0
  173. data/lib/aws/core/service_interface.rb +83 -0
  174. data/lib/aws/core/signers/base.rb +46 -0
  175. data/lib/aws/core/signers/cloud_front.rb +56 -0
  176. data/lib/aws/core/signers/s3.rb +159 -0
  177. data/lib/aws/core/signers/version_2.rb +72 -0
  178. data/lib/aws/core/signers/version_3.rb +86 -0
  179. data/lib/aws/core/signers/version_3_https.rb +61 -0
  180. data/lib/aws/core/signers/version_4.rb +228 -0
  181. data/lib/aws/core/signers/version_4/chunk_signed_stream.rb +191 -0
  182. data/lib/aws/core/uri_escape.rb +44 -0
  183. data/lib/aws/core/xml/frame.rb +245 -0
  184. data/lib/aws/core/xml/frame_stack.rb +85 -0
  185. data/lib/aws/core/xml/grammar.rb +307 -0
  186. data/lib/aws/core/xml/parser.rb +70 -0
  187. data/lib/aws/core/xml/root_frame.rb +65 -0
  188. data/lib/aws/core/xml/sax_handlers/libxml.rb +47 -0
  189. data/lib/aws/core/xml/sax_handlers/nokogiri.rb +56 -0
  190. data/lib/aws/core/xml/sax_handlers/ox.rb +41 -0
  191. data/lib/aws/core/xml/sax_handlers/rexml.rb +47 -0
  192. data/lib/aws/core/xml/stub.rb +123 -0
  193. data/lib/aws/data_pipeline.rb +72 -0
  194. data/lib/aws/data_pipeline/client.rb +36 -0
  195. data/lib/aws/data_pipeline/config.rb +18 -0
  196. data/lib/aws/data_pipeline/errors.rb +20 -0
  197. data/lib/aws/direct_connect.rb +73 -0
  198. data/lib/aws/direct_connect/client.rb +36 -0
  199. data/lib/aws/direct_connect/config.rb +18 -0
  200. data/lib/aws/direct_connect/errors.rb +22 -0
  201. data/lib/aws/dynamo_db.rb +230 -0
  202. data/lib/aws/dynamo_db/attribute_collection.rb +456 -0
  203. data/lib/aws/dynamo_db/batch_get.rb +213 -0
  204. data/lib/aws/dynamo_db/batch_write.rb +254 -0
  205. data/lib/aws/dynamo_db/binary.rb +35 -0
  206. data/lib/aws/dynamo_db/client.rb +129 -0
  207. data/lib/aws/dynamo_db/client/v20111205.rb +1266 -0
  208. data/lib/aws/dynamo_db/client/v20120810.rb +1409 -0
  209. data/lib/aws/dynamo_db/client_v2.rb +44 -0
  210. data/lib/aws/dynamo_db/config.rb +24 -0
  211. data/lib/aws/dynamo_db/errors.rb +20 -0
  212. data/lib/aws/dynamo_db/expectations.rb +40 -0
  213. data/lib/aws/dynamo_db/item.rb +133 -0
  214. data/lib/aws/dynamo_db/item_collection.rb +856 -0
  215. data/lib/aws/dynamo_db/item_data.rb +31 -0
  216. data/lib/aws/dynamo_db/keys.rb +41 -0
  217. data/lib/aws/dynamo_db/primary_key_element.rb +48 -0
  218. data/lib/aws/dynamo_db/resource.rb +33 -0
  219. data/lib/aws/dynamo_db/table.rb +492 -0
  220. data/lib/aws/dynamo_db/table_collection.rb +165 -0
  221. data/lib/aws/dynamo_db/types.rb +111 -0
  222. data/lib/aws/ec2.rb +428 -0
  223. data/lib/aws/ec2/attachment.rb +135 -0
  224. data/lib/aws/ec2/attachment_collection.rb +54 -0
  225. data/lib/aws/ec2/availability_zone.rb +86 -0
  226. data/lib/aws/ec2/availability_zone_collection.rb +43 -0
  227. data/lib/aws/ec2/block_device_mappings.rb +53 -0
  228. data/lib/aws/ec2/client.rb +154 -0
  229. data/lib/aws/ec2/collection.rb +36 -0
  230. data/lib/aws/ec2/config.rb +21 -0
  231. data/lib/aws/ec2/customer_gateway.rb +90 -0
  232. data/lib/aws/ec2/customer_gateway_collection.rb +73 -0
  233. data/lib/aws/ec2/dhcp_options.rb +106 -0
  234. data/lib/aws/ec2/dhcp_options_collection.rb +87 -0
  235. data/lib/aws/ec2/elastic_ip.rb +209 -0
  236. data/lib/aws/ec2/elastic_ip_collection.rb +93 -0
  237. data/lib/aws/ec2/errors.rb +32 -0
  238. data/lib/aws/ec2/export_task.rb +120 -0
  239. data/lib/aws/ec2/export_task_collection.rb +67 -0
  240. data/lib/aws/ec2/filtered_collection.rb +87 -0
  241. data/lib/aws/ec2/has_permissions.rb +44 -0
  242. data/lib/aws/ec2/image.rb +270 -0
  243. data/lib/aws/ec2/image_collection.rb +219 -0
  244. data/lib/aws/ec2/instance.rb +803 -0
  245. data/lib/aws/ec2/instance_collection.rb +402 -0
  246. data/lib/aws/ec2/internet_gateway.rb +122 -0
  247. data/lib/aws/ec2/internet_gateway/attachment.rb +78 -0
  248. data/lib/aws/ec2/internet_gateway_collection.rb +54 -0
  249. data/lib/aws/ec2/key_pair.rb +82 -0
  250. data/lib/aws/ec2/key_pair_collection.rb +99 -0
  251. data/lib/aws/ec2/network_acl.rb +256 -0
  252. data/lib/aws/ec2/network_acl/association.rb +56 -0
  253. data/lib/aws/ec2/network_acl/entry.rb +147 -0
  254. data/lib/aws/ec2/network_acl_collection.rb +64 -0
  255. data/lib/aws/ec2/network_interface.rb +237 -0
  256. data/lib/aws/ec2/network_interface/attachment.rb +100 -0
  257. data/lib/aws/ec2/network_interface_collection.rb +103 -0
  258. data/lib/aws/ec2/permission_collection.rb +174 -0
  259. data/lib/aws/ec2/region.rb +106 -0
  260. data/lib/aws/ec2/region_collection.rb +51 -0
  261. data/lib/aws/ec2/reserved_instances.rb +57 -0
  262. data/lib/aws/ec2/reserved_instances_collection.rb +40 -0
  263. data/lib/aws/ec2/reserved_instances_offering.rb +60 -0
  264. data/lib/aws/ec2/reserved_instances_offering_collection.rb +45 -0
  265. data/lib/aws/ec2/resource.rb +161 -0
  266. data/lib/aws/ec2/resource_tag_collection.rb +211 -0
  267. data/lib/aws/ec2/route_table.rb +205 -0
  268. data/lib/aws/ec2/route_table/association.rb +119 -0
  269. data/lib/aws/ec2/route_table/route.rb +119 -0
  270. data/lib/aws/ec2/route_table_collection.rb +72 -0
  271. data/lib/aws/ec2/security_group.rb +482 -0
  272. data/lib/aws/ec2/security_group/ip_permission.rb +135 -0
  273. data/lib/aws/ec2/security_group/ip_permission_collection.rb +82 -0
  274. data/lib/aws/ec2/security_group_collection.rb +133 -0
  275. data/lib/aws/ec2/snapshot.rb +143 -0
  276. data/lib/aws/ec2/snapshot_collection.rb +131 -0
  277. data/lib/aws/ec2/subnet.rb +161 -0
  278. data/lib/aws/ec2/subnet_collection.rb +119 -0
  279. data/lib/aws/ec2/tag.rb +81 -0
  280. data/lib/aws/ec2/tag_collection.rb +107 -0
  281. data/lib/aws/ec2/tagged_collection.rb +67 -0
  282. data/lib/aws/ec2/tagged_item.rb +85 -0
  283. data/lib/aws/ec2/volume.rb +185 -0
  284. data/lib/aws/ec2/volume_collection.rb +102 -0
  285. data/lib/aws/ec2/vpc.rb +174 -0
  286. data/lib/aws/ec2/vpc_collection.rb +70 -0
  287. data/lib/aws/ec2/vpn_connection.rb +99 -0
  288. data/lib/aws/ec2/vpn_connection/telemetry.rb +49 -0
  289. data/lib/aws/ec2/vpn_connection_collection.rb +96 -0
  290. data/lib/aws/ec2/vpn_gateway.rb +123 -0
  291. data/lib/aws/ec2/vpn_gateway/attachment.rb +45 -0
  292. data/lib/aws/ec2/vpn_gateway_collection.rb +77 -0
  293. data/lib/aws/elastic_beanstalk.rb +49 -0
  294. data/lib/aws/elastic_beanstalk/client.rb +36 -0
  295. data/lib/aws/elastic_beanstalk/config.rb +18 -0
  296. data/lib/aws/elastic_beanstalk/errors.rb +22 -0
  297. data/lib/aws/elastic_transcoder.rb +29 -0
  298. data/lib/aws/elastic_transcoder/client.rb +48 -0
  299. data/lib/aws/elastic_transcoder/config.rb +18 -0
  300. data/lib/aws/elastic_transcoder/errors.rb +23 -0
  301. data/lib/aws/elasticache.rb +49 -0
  302. data/lib/aws/elasticache/client.rb +41 -0
  303. data/lib/aws/elasticache/config.rb +18 -0
  304. data/lib/aws/elasticache/errors.rb +22 -0
  305. data/lib/aws/elb.rb +66 -0
  306. data/lib/aws/elb/availability_zone_collection.rb +138 -0
  307. data/lib/aws/elb/backend_server_policy_collection.rb +139 -0
  308. data/lib/aws/elb/client.rb +35 -0
  309. data/lib/aws/elb/config.rb +18 -0
  310. data/lib/aws/elb/errors.rb +26 -0
  311. data/lib/aws/elb/instance_collection.rb +168 -0
  312. data/lib/aws/elb/listener.rb +190 -0
  313. data/lib/aws/elb/listener_collection.rb +113 -0
  314. data/lib/aws/elb/listener_opts.rb +45 -0
  315. data/lib/aws/elb/load_balancer.rb +280 -0
  316. data/lib/aws/elb/load_balancer_collection.rb +146 -0
  317. data/lib/aws/elb/load_balancer_policy.rb +93 -0
  318. data/lib/aws/elb/load_balancer_policy_collection.rb +208 -0
  319. data/lib/aws/emr.rb +87 -0
  320. data/lib/aws/emr/client.rb +35 -0
  321. data/lib/aws/emr/config.rb +18 -0
  322. data/lib/aws/emr/errors.rb +22 -0
  323. data/lib/aws/emr/instance_group.rb +138 -0
  324. data/lib/aws/emr/instance_group_collection.rb +82 -0
  325. data/lib/aws/emr/job_flow.rb +307 -0
  326. data/lib/aws/emr/job_flow_collection.rb +183 -0
  327. data/lib/aws/errors.rb +162 -0
  328. data/lib/aws/glacier.rb +79 -0
  329. data/lib/aws/glacier/archive.rb +56 -0
  330. data/lib/aws/glacier/archive_collection.rb +146 -0
  331. data/lib/aws/glacier/client.rb +49 -0
  332. data/lib/aws/glacier/config.rb +19 -0
  333. data/lib/aws/glacier/errors.rb +22 -0
  334. data/lib/aws/glacier/resource.rb +30 -0
  335. data/lib/aws/glacier/vault.rb +145 -0
  336. data/lib/aws/glacier/vault_collection.rb +75 -0
  337. data/lib/aws/glacier/vault_notification_configuration.rb +29 -0
  338. data/lib/aws/iam.rb +408 -0
  339. data/lib/aws/iam/access_key.rb +185 -0
  340. data/lib/aws/iam/access_key_collection.rb +128 -0
  341. data/lib/aws/iam/account_alias_collection.rb +79 -0
  342. data/lib/aws/iam/client.rb +49 -0
  343. data/lib/aws/iam/collection.rb +83 -0
  344. data/lib/aws/iam/config.rb +18 -0
  345. data/lib/aws/iam/errors.rb +22 -0
  346. data/lib/aws/iam/group.rb +111 -0
  347. data/lib/aws/iam/group_collection.rb +132 -0
  348. data/lib/aws/iam/group_policy_collection.rb +47 -0
  349. data/lib/aws/iam/group_user_collection.rb +84 -0
  350. data/lib/aws/iam/login_profile.rb +111 -0
  351. data/lib/aws/iam/mfa_device.rb +52 -0
  352. data/lib/aws/iam/mfa_device_collection.rb +127 -0
  353. data/lib/aws/iam/policy.rb +46 -0
  354. data/lib/aws/iam/policy_collection.rb +188 -0
  355. data/lib/aws/iam/resource.rb +62 -0
  356. data/lib/aws/iam/server_certificate.rb +148 -0
  357. data/lib/aws/iam/server_certificate_collection.rb +138 -0
  358. data/lib/aws/iam/signing_certificate.rb +186 -0
  359. data/lib/aws/iam/signing_certificate_collection.rb +131 -0
  360. data/lib/aws/iam/user.rb +200 -0
  361. data/lib/aws/iam/user_collection.rb +133 -0
  362. data/lib/aws/iam/user_group_collection.rb +98 -0
  363. data/lib/aws/iam/user_policy.rb +90 -0
  364. data/lib/aws/iam/user_policy_collection.rb +45 -0
  365. data/lib/aws/iam/virtual_mfa_device.rb +139 -0
  366. data/lib/aws/iam/virtual_mfa_device_collection.rb +73 -0
  367. data/lib/aws/import_export.rb +73 -0
  368. data/lib/aws/import_export/client.rb +35 -0
  369. data/lib/aws/import_export/config.rb +19 -0
  370. data/lib/aws/import_export/errors.rb +22 -0
  371. data/lib/aws/kinesis.rb +53 -0
  372. data/lib/aws/kinesis/client.rb +35 -0
  373. data/lib/aws/kinesis/config.rb +18 -0
  374. data/lib/aws/kinesis/errors.rb +20 -0
  375. data/lib/aws/ops_works.rb +29 -0
  376. data/lib/aws/ops_works/client.rb +35 -0
  377. data/lib/aws/ops_works/config.rb +18 -0
  378. data/lib/aws/ops_works/errors.rb +20 -0
  379. data/lib/aws/rails.rb +195 -0
  380. data/lib/aws/rds.rb +70 -0
  381. data/lib/aws/rds/client.rb +42 -0
  382. data/lib/aws/rds/config.rb +18 -0
  383. data/lib/aws/rds/db_instance.rb +215 -0
  384. data/lib/aws/rds/db_instance_collection.rb +75 -0
  385. data/lib/aws/rds/db_snapshot.rb +163 -0
  386. data/lib/aws/rds/db_snapshot_collection.rb +89 -0
  387. data/lib/aws/rds/errors.rb +22 -0
  388. data/lib/aws/record.rb +139 -0
  389. data/lib/aws/record/abstract_base.rb +689 -0
  390. data/lib/aws/record/attributes.rb +388 -0
  391. data/lib/aws/record/conversion.rb +38 -0
  392. data/lib/aws/record/dirty_tracking.rb +287 -0
  393. data/lib/aws/record/errors.rb +143 -0
  394. data/lib/aws/record/exceptions.rb +51 -0
  395. data/lib/aws/record/hash_model.rb +204 -0
  396. data/lib/aws/record/hash_model/attributes.rb +195 -0
  397. data/lib/aws/record/hash_model/finder_methods.rb +172 -0
  398. data/lib/aws/record/hash_model/scope.rb +108 -0
  399. data/lib/aws/record/model.rb +453 -0
  400. data/lib/aws/record/model/attributes.rb +377 -0
  401. data/lib/aws/record/model/finder_methods.rb +232 -0
  402. data/lib/aws/record/model/scope.rb +212 -0
  403. data/lib/aws/record/naming.rb +31 -0
  404. data/lib/aws/record/scope.rb +203 -0
  405. data/lib/aws/record/validations.rb +694 -0
  406. data/lib/aws/record/validator.rb +246 -0
  407. data/lib/aws/record/validators/acceptance.rb +49 -0
  408. data/lib/aws/record/validators/block.rb +36 -0
  409. data/lib/aws/record/validators/confirmation.rb +41 -0
  410. data/lib/aws/record/validators/count.rb +106 -0
  411. data/lib/aws/record/validators/exclusion.rb +41 -0
  412. data/lib/aws/record/validators/format.rb +55 -0
  413. data/lib/aws/record/validators/inclusion.rb +54 -0
  414. data/lib/aws/record/validators/length.rb +105 -0
  415. data/lib/aws/record/validators/method.rb +31 -0
  416. data/lib/aws/record/validators/numericality.rb +136 -0
  417. data/lib/aws/record/validators/presence.rb +43 -0
  418. data/lib/aws/redshift.rb +51 -0
  419. data/lib/aws/redshift/client.rb +35 -0
  420. data/lib/aws/redshift/config.rb +18 -0
  421. data/lib/aws/redshift/errors.rb +22 -0
  422. data/lib/aws/route_53.rb +86 -0
  423. data/lib/aws/route_53/change_batch.rb +161 -0
  424. data/lib/aws/route_53/change_info.rb +72 -0
  425. data/lib/aws/route_53/client.rb +38 -0
  426. data/lib/aws/route_53/config.rb +18 -0
  427. data/lib/aws/route_53/errors.rb +22 -0
  428. data/lib/aws/route_53/hosted_zone.rb +134 -0
  429. data/lib/aws/route_53/hosted_zone_collection.rb +101 -0
  430. data/lib/aws/route_53/resource_record_set.rb +251 -0
  431. data/lib/aws/route_53/resource_record_set_collection.rb +110 -0
  432. data/lib/aws/s3.rb +156 -0
  433. data/lib/aws/s3/access_control_list.rb +265 -0
  434. data/lib/aws/s3/acl_object.rb +264 -0
  435. data/lib/aws/s3/acl_options.rb +204 -0
  436. data/lib/aws/s3/bucket.rb +742 -0
  437. data/lib/aws/s3/bucket_collection.rb +162 -0
  438. data/lib/aws/s3/bucket_lifecycle_configuration.rb +473 -0
  439. data/lib/aws/s3/bucket_tag_collection.rb +111 -0
  440. data/lib/aws/s3/bucket_version_collection.rb +79 -0
  441. data/lib/aws/s3/cipher_io.rb +120 -0
  442. data/lib/aws/s3/client.rb +2067 -0
  443. data/lib/aws/s3/client/xml.rb +266 -0
  444. data/lib/aws/s3/config.rb +48 -0
  445. data/lib/aws/s3/cors_rule.rb +108 -0
  446. data/lib/aws/s3/cors_rule_collection.rb +194 -0
  447. data/lib/aws/s3/data_options.rb +191 -0
  448. data/lib/aws/s3/encryption_utils.rb +146 -0
  449. data/lib/aws/s3/errors.rb +94 -0
  450. data/lib/aws/s3/multipart_upload.rb +353 -0
  451. data/lib/aws/s3/multipart_upload_collection.rb +76 -0
  452. data/lib/aws/s3/object_collection.rb +353 -0
  453. data/lib/aws/s3/object_metadata.rb +103 -0
  454. data/lib/aws/s3/object_upload_collection.rb +77 -0
  455. data/lib/aws/s3/object_version.rb +154 -0
  456. data/lib/aws/s3/object_version_collection.rb +89 -0
  457. data/lib/aws/s3/paginated_collection.rb +75 -0
  458. data/lib/aws/s3/policy.rb +74 -0
  459. data/lib/aws/s3/prefix_and_delimiter_collection.rb +47 -0
  460. data/lib/aws/s3/prefixed_collection.rb +85 -0
  461. data/lib/aws/s3/presign_v4.rb +136 -0
  462. data/lib/aws/s3/presigned_post.rb +554 -0
  463. data/lib/aws/s3/request.rb +62 -0
  464. data/lib/aws/s3/s3_object.rb +1784 -0
  465. data/lib/aws/s3/tree.rb +116 -0
  466. data/lib/aws/s3/tree/branch_node.rb +68 -0
  467. data/lib/aws/s3/tree/child_collection.rb +104 -0
  468. data/lib/aws/s3/tree/leaf_node.rb +94 -0
  469. data/lib/aws/s3/tree/node.rb +22 -0
  470. data/lib/aws/s3/tree/parent.rb +87 -0
  471. data/lib/aws/s3/uploaded_part.rb +82 -0
  472. data/lib/aws/s3/uploaded_part_collection.rb +84 -0
  473. data/lib/aws/s3/website_configuration.rb +102 -0
  474. data/lib/aws/simple_db.rb +218 -0
  475. data/lib/aws/simple_db/attribute.rb +156 -0
  476. data/lib/aws/simple_db/attribute_collection.rb +240 -0
  477. data/lib/aws/simple_db/client.rb +67 -0
  478. data/lib/aws/simple_db/config.rb +20 -0
  479. data/lib/aws/simple_db/consistent_read_option.rb +42 -0
  480. data/lib/aws/simple_db/delete_attributes.rb +62 -0
  481. data/lib/aws/simple_db/domain.rb +123 -0
  482. data/lib/aws/simple_db/domain_collection.rb +86 -0
  483. data/lib/aws/simple_db/domain_metadata.rb +110 -0
  484. data/lib/aws/simple_db/errors.rb +55 -0
  485. data/lib/aws/simple_db/expect_condition_option.rb +45 -0
  486. data/lib/aws/simple_db/item.rb +93 -0
  487. data/lib/aws/simple_db/item_collection.rb +654 -0
  488. data/lib/aws/simple_db/item_data.rb +73 -0
  489. data/lib/aws/simple_db/put_attributes.rb +60 -0
  490. data/lib/aws/simple_email_service.rb +443 -0
  491. data/lib/aws/simple_email_service/client.rb +37 -0
  492. data/lib/aws/simple_email_service/config.rb +18 -0
  493. data/lib/aws/simple_email_service/email_address_collection.rb +69 -0
  494. data/lib/aws/simple_email_service/errors.rb +22 -0
  495. data/lib/aws/simple_email_service/identity.rb +230 -0
  496. data/lib/aws/simple_email_service/identity_collection.rb +81 -0
  497. data/lib/aws/simple_email_service/quotas.rb +66 -0
  498. data/lib/aws/simple_workflow.rb +227 -0
  499. data/lib/aws/simple_workflow/activity_task.rb +178 -0
  500. data/lib/aws/simple_workflow/activity_task_collection.rb +123 -0
  501. data/lib/aws/simple_workflow/activity_type.rb +131 -0
  502. data/lib/aws/simple_workflow/activity_type_collection.rb +93 -0
  503. data/lib/aws/simple_workflow/client.rb +69 -0
  504. data/lib/aws/simple_workflow/config.rb +18 -0
  505. data/lib/aws/simple_workflow/count.rb +49 -0
  506. data/lib/aws/simple_workflow/decision_task.rb +603 -0
  507. data/lib/aws/simple_workflow/decision_task_collection.rb +223 -0
  508. data/lib/aws/simple_workflow/domain.rb +122 -0
  509. data/lib/aws/simple_workflow/domain_collection.rb +169 -0
  510. data/lib/aws/simple_workflow/errors.rb +20 -0
  511. data/lib/aws/simple_workflow/history_event.rb +276 -0
  512. data/lib/aws/simple_workflow/history_event_collection.rb +76 -0
  513. data/lib/aws/simple_workflow/option_formatters.rb +82 -0
  514. data/lib/aws/simple_workflow/resource.rb +94 -0
  515. data/lib/aws/simple_workflow/type.rb +89 -0
  516. data/lib/aws/simple_workflow/type_collection.rb +140 -0
  517. data/lib/aws/simple_workflow/workflow_execution.rb +384 -0
  518. data/lib/aws/simple_workflow/workflow_execution_collection.rb +617 -0
  519. data/lib/aws/simple_workflow/workflow_type.rb +177 -0
  520. data/lib/aws/simple_workflow/workflow_type_collection.rb +91 -0
  521. data/lib/aws/sns.rb +76 -0
  522. data/lib/aws/sns/client.rb +35 -0
  523. data/lib/aws/sns/config.rb +18 -0
  524. data/lib/aws/sns/errors.rb +22 -0
  525. data/lib/aws/sns/has_delivery_policy.rb +68 -0
  526. data/lib/aws/sns/message.rb +204 -0
  527. data/lib/aws/sns/originators/from_auto_scaling.rb +68 -0
  528. data/lib/aws/sns/policy.rb +47 -0
  529. data/lib/aws/sns/subscription.rb +165 -0
  530. data/lib/aws/sns/subscription_collection.rb +78 -0
  531. data/lib/aws/sns/topic.rb +403 -0
  532. data/lib/aws/sns/topic_collection.rb +62 -0
  533. data/lib/aws/sns/topic_subscription_collection.rb +54 -0
  534. data/lib/aws/sqs.rb +80 -0
  535. data/lib/aws/sqs/client.rb +53 -0
  536. data/lib/aws/sqs/config.rb +20 -0
  537. data/lib/aws/sqs/errors.rb +125 -0
  538. data/lib/aws/sqs/policy.rb +48 -0
  539. data/lib/aws/sqs/queue.rb +856 -0
  540. data/lib/aws/sqs/queue_collection.rb +186 -0
  541. data/lib/aws/sqs/received_message.rb +190 -0
  542. data/lib/aws/sqs/received_sns_message.rb +116 -0
  543. data/lib/aws/storage_gateway.rb +72 -0
  544. data/lib/aws/storage_gateway/client.rb +42 -0
  545. data/lib/aws/storage_gateway/config.rb +18 -0
  546. data/lib/aws/storage_gateway/errors.rb +22 -0
  547. data/lib/aws/sts.rb +164 -0
  548. data/lib/aws/sts/client.rb +55 -0
  549. data/lib/aws/sts/config.rb +18 -0
  550. data/lib/aws/sts/errors.rb +22 -0
  551. data/lib/aws/sts/federated_session.rb +56 -0
  552. data/lib/aws/sts/policy.rb +30 -0
  553. data/lib/aws/sts/session.rb +48 -0
  554. data/lib/aws/support.rb +29 -0
  555. data/lib/aws/support/client.rb +35 -0
  556. data/lib/aws/support/config.rb +18 -0
  557. data/lib/aws/support/errors.rb +20 -0
  558. data/lib/aws/version.rb +17 -0
  559. data/rails/init.rb +15 -0
  560. metadata +634 -0
@@ -0,0 +1,73 @@
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 SimpleDB
16
+
17
+ # Holds the data for a SimpleDB item. While {Item} only proxies
18
+ # requests to return data, this class actually stores data
19
+ # returned by a query. For example, you can use this to get the
20
+ # list of items whose titles are palindromes using only a single
21
+ # request to SimpleDB (not counting pagination):
22
+ #
23
+ # items.enum_for(:select).
24
+ # select { |data| data.title == data.title.to_s.reverse }.
25
+ # map { |data| data.item }
26
+ #
27
+ # The {ItemCollection#select} call yields instances of ItemData,
28
+ # and the `map` call in the example above gets the list of
29
+ # corresponding {Item} instances.
30
+ class ItemData
31
+
32
+ # @api private
33
+ def initialize(opts = {})
34
+ @name = opts[:name]
35
+ @attributes = opts[:attributes]
36
+ @domain = opts[:domain]
37
+
38
+ if obj = opts[:response_object]
39
+ @name ||= obj[:name]
40
+ if obj[:attributes]
41
+ @attributes ||= begin
42
+ attributes = {}
43
+ obj[:attributes].each do |attr|
44
+ attributes[attr[:name]] ||= []
45
+ attributes[attr[:name]] << attr[:value]
46
+ end
47
+ attributes
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ # @return [String] The item name.
54
+ attr_reader :name
55
+
56
+ # @return [Hash] A hash of attribute names to arrays of values.
57
+ attr_reader :attributes
58
+
59
+ # @return [Domain] The domain from which the item data was retrieved.
60
+ attr_reader :domain
61
+
62
+ # Returns the {Item} corresponding to this ItemData; you can
63
+ # use this to perform further operations on the item, or to
64
+ # fetch its most recent data.
65
+ # @return [Item] The item this data belongs to.
66
+ def item
67
+ domain.items[name]
68
+ end
69
+
70
+ end
71
+
72
+ end
73
+ end
@@ -0,0 +1,60 @@
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 SimpleDB
16
+
17
+ # @api private
18
+ module PutAttributes
19
+
20
+ include ExpectConditionOption
21
+
22
+ # Given a single hash of attribute names to values, returns a list
23
+ # of hashes suitable for the put_attributes :attributes option.
24
+ # @api private
25
+ protected
26
+ def attribute_hashes attributes, replace
27
+ attribute_hashes = []
28
+ attributes.each_pair do |attribute_name,values|
29
+ [values].flatten.each do |value|
30
+ attribute_hashes << {
31
+ :name => attribute_name.to_s,
32
+ :value => value.to_s,
33
+ :replace => replace,
34
+ } unless [:if, :unless].include?(attribute_name)
35
+ end
36
+ end
37
+ attribute_hashes
38
+ end
39
+
40
+ # @api private
41
+ protected
42
+ def do_put attribute_hashes, expect_opts = {}
43
+ return nil if attribute_hashes.empty?
44
+
45
+ opts = {
46
+ :domain_name => item.domain.name,
47
+ :item_name => item.name,
48
+ :attributes => attribute_hashes,
49
+ :expected => expect_condition_opts(expect_opts)
50
+ }
51
+ opts.delete(:expected) if opts[:expected].empty?
52
+
53
+ client.put_attributes(opts)
54
+ nil
55
+ end
56
+
57
+ end
58
+
59
+ end
60
+ end
@@ -0,0 +1,443 @@
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 'aws/core'
15
+ require 'aws/simple_email_service/config'
16
+
17
+ module AWS
18
+
19
+ # This class is the starting point for working with Amazon
20
+ # SimpleEmailService (SES).
21
+ #
22
+ # To use Amazon SimpleEmailService you must first
23
+ # [sign up here](http://aws.amazon.com/ses/)
24
+ #
25
+ # For more information about Amazon SimpleEmailService:
26
+ #
27
+ # * [Amazon SimpleEmailService](http://aws.amazon.com/ses/)
28
+ # * [Amazon SimpleEmailService Documentation](http://aws.amazon.com/documentation/ses/)
29
+ #
30
+ # # Credentials
31
+ #
32
+ # You can setup default credentials for all AWS services via
33
+ # AWS.config:
34
+ #
35
+ # AWS.config(
36
+ # :access_key_id => 'YOUR_ACCESS_KEY_ID',
37
+ # :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
38
+ #
39
+ # Or you can set them directly on the SimpleEmailService interface:
40
+ #
41
+ # ses = AWS::SimpleEmailService.new(
42
+ # :access_key_id => 'YOUR_ACCESS_KEY_ID',
43
+ # :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
44
+ #
45
+ # # Rails
46
+ #
47
+ # If you want to use Amazon SimpleEmailService to send email from your
48
+ # Rails application you just need to do 2 things:
49
+ #
50
+ # 1. Configure your AWS credentials with {AWS.config}
51
+ # 2. Set SES as the delivery method:
52
+ #
53
+ # config.action_mailer.delivery_method = :amazon_ses
54
+ #
55
+ # This has only been tested with Rails 2.3 and Rails 3.0.
56
+ #
57
+ #
58
+ # Regions
59
+ #
60
+ # SES is not available in all regions. If you configure a default region
61
+ # where SES is not available, you will receive a network error. You
62
+ # can configure a default region and a default SES region:
63
+ #
64
+ # AWS.config(
65
+ # :region => 'ap-southeast-1',
66
+ # :ses => { :region => 'us-west-2' }
67
+ # )
68
+ #
69
+ # [Go here for a complete list of supported regions](http://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region).
70
+ #
71
+ # # Identities
72
+ #
73
+ # Before you can send emails, you need to verify one or more identities.
74
+ # Identities are email addresses or domain names that you have control over.
75
+ # Until you have [requested production access](http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/InitialSetup.Customer.html)
76
+ # you will only be able to send emails to and from verified email addresses
77
+ # and domains.
78
+ #
79
+ # ## Verifying Email Addresses
80
+ #
81
+ # You can verify an email address for sending/receiving emails using
82
+ # the identities collection.
83
+ #
84
+ # identity = ses.identities.verify('email@yourdomain.com')
85
+ # identity.verified? #=> false
86
+ #
87
+ # You will be sent an email address with a link. Follow the link to
88
+ # verify the email address.
89
+ #
90
+ # ## Verifying Domains
91
+ #
92
+ # You can also verify an entire domain for sending and receiving emails.
93
+ #
94
+ # identity = ses.identities.verify('yourdomain.com')
95
+ # identity.verification_token
96
+ # #=> "216D+lZbhUL0zOoAkC83/0TAl5lJSzLmzsOjtXM7AeM="
97
+ #
98
+ # You will be expected to update the DNS records for your domain with
99
+ # the given verification token. See the service documentation for
100
+ # more details.
101
+ #
102
+ # ## Listing Identities
103
+ #
104
+ # You can enumerate all identities:
105
+ #
106
+ # ses.identities.map(&:identity)
107
+ # #=> ['email@foo.com', 'somedomain.com']
108
+ #
109
+ # You can filter the types of identities enumerated:
110
+ #
111
+ # domains = ses.identities.domains.map(&:identity)
112
+ # email_addresses = ses.identities.email_addresses.map(&:identity)
113
+ #
114
+ # You can get the verification status and token from identities as well.
115
+ #
116
+ # # for an email address
117
+ # identity = ses.identities['youremail@yourdomain.com']
118
+ # identity.verified? #=> true/false
119
+ #
120
+ # # for a domain
121
+ # identity = ses.identities['yourdomain.com']
122
+ # identity.verified? #=> true/false
123
+ # identity.verification_token #=> '...'
124
+ #
125
+ # # Sending Email
126
+ #
127
+ # To send a basic email you can use {#send_email}.
128
+ #
129
+ # ses.send_email(
130
+ # :subject => 'A Sample Email',
131
+ # :from => 'sender@domain.com',
132
+ # :to => 'receipient@domain.com',
133
+ # :body_text => 'Sample email text.',
134
+ # :body_html => '<h1>Sample Email</h1>')
135
+ #
136
+ # If you need to send email with attachments or have other special needs
137
+ # that send_email does not support you can use {#send_raw_email}.
138
+ #
139
+ # ses.send_raw_email(<<EMAIL)
140
+ # Subject: A Sample Email
141
+ # From: sender@domain.com
142
+ # To: receipient@domain.com
143
+ #
144
+ # Sample email text.
145
+ # EMAIL
146
+ #
147
+ # If you prefer, you can also set the sender and recipient in ruby
148
+ # when sending raw emails:
149
+ #
150
+ # ses.send_raw_email(<<EMAIL, :to => 'to@foo.com', :from => 'from@foo.com')
151
+ # Subject: A Sample Email
152
+ #
153
+ # Sample email text.
154
+ # EMAIL
155
+ #
156
+ # # Quotas
157
+ #
158
+ # Based on several factors, Amazon SES determines how much email you can
159
+ # send and how quickly you can send it. These sending limits are defined
160
+ # as follows:
161
+ #
162
+ # * `:max_send_rate` - Maximum number of emails you can send per second.
163
+ # * `:max_24_hour_send` - Maximum number of emails you can send in a
164
+ # 24-hour period.
165
+ #
166
+ # To get your current quotas (and how many emails you have sent in the last
167
+ # 24 hours):
168
+ #
169
+ # ses.quotas
170
+ # # => {:max_24_hour_send=>200, :max_send_rate=>1.0, :sent_last_24_hours=>22}
171
+ #
172
+ # # Statistics
173
+ #
174
+ # You can get statistics about individual emails:
175
+ #
176
+ # ses.statistics.each do |stats|
177
+ # puts "Sent: #{stats[:sent]}"
178
+ # puts "Delivery Attempts: #{stats[:delivery_attempts]}"
179
+ # puts "Rejects: #{stats[:rejects]}"
180
+ # puts "Bounces: #{stats[:bounces]}"
181
+ # puts "Complaints: #{stats[:complaints]}"
182
+ # end
183
+ #
184
+ # @!attribute [r] client
185
+ # @return [Client] the low-level SimpleEmailService client object
186
+ class SimpleEmailService
187
+
188
+ autoload :Client, 'aws/simple_email_service/client'
189
+ autoload :Errors, 'aws/simple_email_service/errors'
190
+ autoload :EmailAddressCollection, 'aws/simple_email_service/email_address_collection'
191
+ autoload :Identity, 'aws/simple_email_service/identity'
192
+ autoload :IdentityCollection, 'aws/simple_email_service/identity_collection'
193
+ autoload :Quotas, 'aws/simple_email_service/quotas'
194
+
195
+ include Core::ServiceInterface
196
+
197
+ endpoint_prefix 'email'
198
+
199
+ # @note This method is deprecated. Use {#identities} instead.
200
+ # @return [EmailAddressCollection] Returns a collection that represents
201
+ # all of the verified email addresses for your account.
202
+ def email_addresses
203
+ EmailAddressCollection.new(:config => config)
204
+ end
205
+
206
+ # @return [IdentityCollection]
207
+ def identities
208
+ IdentityCollection.new(:config => config)
209
+ end
210
+
211
+ # Sends an email.
212
+ #
213
+ # ses.send_email(
214
+ # :subject => 'A Sample Email',
215
+ # :to => 'john@doe.com',
216
+ # :from => 'no@reply.com',
217
+ # :body_text => 'sample text ...',
218
+ # :body_html => '<p>sample text ...</p>')
219
+ #
220
+ # You can also pass multiple email addresses for the `:to`, `:cc`,
221
+ # `:bcc` and `:reply_to` options. Email addresses can also be
222
+ # formatted with names.
223
+ #
224
+ # ses.send_email(
225
+ # :subject => 'A Sample Email',
226
+ # :to => ['"John Doe" <john@doe.com>', '"Jane Doe" <jane@doe.com>'],
227
+ # :from => 'no@reply.com',
228
+ # :body_text => 'sample text ...')
229
+ #
230
+ # @param [Hash] options
231
+ # @option options [required,String] :subject The subject of the message.
232
+ # A short summary of the content, which will appear in the #
233
+ # recipient's inbox.
234
+ # @option options [required,String] :from The sender's email address.
235
+ # @option options [String,Array] :to The address(es) to send the email to.
236
+ # @option options [String,Array] :cc The address(es) to cc (carbon copy)
237
+ # the email to.
238
+ # @option options [String,Array] :bcc The address(es) to bcc (blind
239
+ # carbon copy) the email to.
240
+ # @option options [String,Array] :reply_to The reply-to email address(es)
241
+ # for the message. If the recipient replies to the message, each
242
+ # reply-to address will receive the reply.
243
+ # @option options [String] :return_path The email address to which
244
+ # bounce notifications are to be forwarded. If the message cannot be
245
+ # delivered to the recipient, then an error message will be returned
246
+ # from the recipient's ISP; this message will then be forwarded to
247
+ # the email address specified by the `:return_path` option.
248
+ # @option options [String] :body_text The email text contents.
249
+ # You must provide `:body_text`, `:body_html` or both.
250
+ # @option options [String] :body_html The email html contents.
251
+ # You must provide `:body_text`, `:body_html` or both.
252
+ # @option options [String] :subject_charset The character set of the
253
+ # `:subject` string. If the text must contain any other characters,
254
+ # then you must also specify the character set. Examples include
255
+ # UTF-8, ISO-8859-1, and Shift_JIS. Defaults to 7-bit ASCII.
256
+ # @option options [String] :body_text_charset The character set of the
257
+ # `:body_text` string. If the text must contain any other characters,
258
+ # then you must also specify the character set. Examples include
259
+ # UTF-8, ISO-8859-1, and Shift_JIS. Defaults to 7-bit ASCII.
260
+ # @option options [String] :body_html_charset The character set of the
261
+ # `:body_html` string. If the text must contain any other characters,
262
+ # then you must also specify the character set. Examples include
263
+ # UTF-8, ISO-8859-1, and Shift_JIS. Defaults to 7-bit ASCII.
264
+ # @option options [String] :body_html
265
+ # @return [Core::Response] the SendEmail response
266
+ def send_email options = {}
267
+
268
+ require_each(options, :subject, :from)
269
+ require_one_of(options, :to, :cc, :bcc)
270
+ require_one_of(options, :body_text, :body_html)
271
+
272
+ # these three options can be passed strings or arrays of strings,
273
+ # but the service requires them in a list (array)
274
+ [:to, :cc, :bcc, :reply_to].each do |key|
275
+ if options[key]
276
+ options[key] = [options[key]].flatten
277
+ end
278
+ end
279
+
280
+ accepted_options = {
281
+ :subject => %w(message subject data),
282
+ :subject_charset => %w(message subject charset),
283
+ :to => %w(destination to_addresses),
284
+ :cc => %w(destination cc_addresses),
285
+ :bcc => %w(destination bcc_addresses),
286
+ :from => %w(source),
287
+ :reply_to => %w(reply_to_addresses),
288
+ :return_path => %w(return_path),
289
+ :body_text => %w(message body text data),
290
+ :body_text_charset => %w(message body text charset),
291
+ :body_html => %w(message body html data),
292
+ :body_html_charset => %w(message body html charset),
293
+ }
294
+
295
+ client.send_email(nest_options(options, accepted_options))
296
+ end
297
+
298
+ # Sends a raw email (email message, with header and content specified).
299
+ # Useful for sending multipart MIME emails. The raw text of the message
300
+ # must comply with Internet email standards; otherwise, the message
301
+ # cannot be sent.
302
+ #
303
+ # raw = <<-EMAIL
304
+ # Date: Wed, 1 Jun 2011 09:13:07 -0700
305
+ # Subject: A Sample Email
306
+ # From: "John Doe" <johndoe@domain.com>
307
+ # To: "Jane Doe" <janedoe@domain.com>
308
+ # Accept-Language: en-US
309
+ # Content-Language: en-US
310
+ # Content-Type: text/plain; charset="utf-8"
311
+ # Content-Transfer-Encoding: base64
312
+ # MIME-Version: 1.0
313
+ #
314
+ # c2FtcGxlIHRleHQNCg==
315
+ # EMAIL
316
+ #
317
+ # ses.send_raw_email(raw)
318
+ #
319
+ # Amazon SES has a limit on the total number of recipients per
320
+ # message: The combined number of To:, CC: and BCC: email addresses
321
+ # cannot exceed 50. If you need to send an email message to a larger
322
+ # audience, you can divide your recipient list into groups of 50 or
323
+ # fewer, and then call Amazon SES repeatedly to send the message to
324
+ # each group.
325
+ #
326
+ # @param [required, String] raw_message The raw text of the message.
327
+ # You can pass in any object whos #to_s returns a valid formatted
328
+ # email (e.g. ruby Mail gem). The raw message should:
329
+ # * Contain a header and a body, separated by a blank line
330
+ # * Contain all required internet email headers
331
+ # * Each part of a multipart MIME message must be formatted properly
332
+ # * MIME content types must be among those supported by Amazon SES.
333
+ # Refer to the Amazon SES Developer Guide for more details.
334
+ # * Use content that is base64-encoded, if MIME requires it
335
+ # @option options [String,Array] :to One or more email addresses to
336
+ # send the email to.
337
+ # @option options [String] :from The sender's email address.
338
+ # If you specify the :from option, then bounce notifications and
339
+ # complaints will be sent to this email address. This takes
340
+ # precedence over any Return-Path header that you might include in
341
+ # the `raw_message`.
342
+ # @return [Core::Response] the SendRawEmail response
343
+ def send_raw_email raw_message, options = {}
344
+
345
+ send_opts = {}
346
+ send_opts[:raw_message] = {}
347
+ send_opts[:raw_message][:data] = raw_message.to_s
348
+ send_opts[:source] = options[:from] if options[:from]
349
+
350
+ if raw_message.respond_to?(:destinations)
351
+ send_opts[:destinations] = raw_message.destinations
352
+ end
353
+ send_opts[:destinations] = [options[:to]].flatten if options[:to]
354
+
355
+ response = client.send_raw_email(send_opts)
356
+
357
+ if raw_message.respond_to?(:message_id=)
358
+ raw_message.message_id = "#{response.data[:message_id]}@email.amazonses.com"
359
+ end
360
+
361
+ response
362
+ end
363
+
364
+ # for compatability with ActionMailer
365
+ alias_method :deliver, :send_raw_email
366
+ alias_method :deliver!, :send_raw_email
367
+ def settings; {}; end
368
+
369
+ # @example
370
+ #
371
+ # ses.quotas
372
+ # # {:max_24_hour_send=>200, :max_send_rate=>1.0, :sent_last_24_hours=>22}
373
+ #
374
+ # @return [Hash] Returns a hash of SES quotas and limits.
375
+ def quotas
376
+ Quotas.new(:config => config).to_h
377
+ end
378
+
379
+ # Returns an array of email statistics. Each object in this array is a
380
+ # hash with the following keys:
381
+ #
382
+ # * `:delivery_attempts`
383
+ # * `:rejects`
384
+ # * `:bounces`
385
+ # * `:complaints`
386
+ # * `:timestamp`
387
+ #
388
+ # @return [Array of Hashes] An array of email statistic hashes.
389
+ def statistics
390
+ response = client.get_send_statistics
391
+ response.data[:send_data_points].collect do |data|
392
+ {
393
+ :sent => data[:timestamp],
394
+ :delivery_attempts => data[:delivery_attempts],
395
+ :rejects => data[:rejects],
396
+ :bounces => data[:bounces],
397
+ :complaints => data[:complaints],
398
+ }
399
+ end
400
+ end
401
+
402
+ # @api private
403
+ protected
404
+ def require_one_of options, *keys
405
+ unless keys.any?{|key| options[key] }
406
+ parts = keys.collect{|key| ":#{key}" }.join(', ')
407
+ raise ArgumentError, "you must provide at least one of #{parts}"
408
+ end
409
+ end
410
+
411
+ # @api private
412
+ protected
413
+ def require_each options, *keys
414
+ keys.each do |key|
415
+ unless options[key]
416
+ raise ArgumentError, "missing required option :#{key}"
417
+ end
418
+ end
419
+ end
420
+
421
+ # @api private
422
+ protected
423
+ def nest_options options, accepted_options
424
+
425
+ send_opts = {}
426
+ accepted_options.each_pair do |option, keys|
427
+ next unless options[option]
428
+ hash = send_opts
429
+ keys.collect{|k| k.to_sym }.each do |key|
430
+ hash[key] = {} unless hash[key]
431
+ if keys.last == key.to_s
432
+ hash[key] = options[option]
433
+ else
434
+ hash = hash[key]
435
+ end
436
+ end
437
+ end
438
+
439
+ send_opts
440
+ end
441
+
442
+ end
443
+ end