aws-sdk-euca 1.8.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.yardopts +5 -0
- data/LICENSE.txt +12 -0
- data/README.rdoc +189 -0
- data/ca-bundle.crt +3895 -0
- data/lib/aws-sdk-euca.rb +79 -0
- data/lib/aws-sdk.rb +79 -0
- data/lib/aws.rb +14 -0
- data/lib/aws/api_config/AutoScaling-2011-01-01.yml +825 -0
- data/lib/aws/api_config/CloudFormation-2010-05-15.yml +322 -0
- data/lib/aws/api_config/CloudFront-2012-05-05.yml +2102 -0
- data/lib/aws/api_config/CloudSearch-2011-02-01.yml +681 -0
- data/lib/aws/api_config/CloudWatch-2010-08-01.yml +433 -0
- data/lib/aws/api_config/DataPipeline-2012-10-29.yml +422 -0
- data/lib/aws/api_config/DynamoDB-2011-12-05.yml +1160 -0
- data/lib/aws/api_config/EC2-2013-02-01.yml +4368 -0
- data/lib/aws/api_config/ELB-2012-06-01.yml +597 -0
- data/lib/aws/api_config/EMR-2009-03-31.yml +370 -0
- data/lib/aws/api_config/ElastiCache-2012-03-09.yml +777 -0
- data/lib/aws/api_config/ElastiCache-2012-11-15.yml +979 -0
- data/lib/aws/api_config/ElasticBeanstalk-2010-12-01.yml +823 -0
- data/lib/aws/api_config/ElasticTranscoder-2012-09-25.yml +1036 -0
- data/lib/aws/api_config/Glacier-2012-06-01.yml +618 -0
- data/lib/aws/api_config/IAM-2010-05-08.yml +1222 -0
- data/lib/aws/api_config/ImportExport-2010-06-01.yml +109 -0
- data/lib/aws/api_config/OpsWorks-2013-02-18.yml +1463 -0
- data/lib/aws/api_config/RDS-2012-09-17.yml +1861 -0
- data/lib/aws/api_config/RDS-2013-02-12.yml +2377 -0
- data/lib/aws/api_config/Redshift-2012-12-01.yml +1149 -0
- data/lib/aws/api_config/Route53-2012-02-29.yml +380 -0
- data/lib/aws/api_config/Route53-2012-12-12.yml +547 -0
- data/lib/aws/api_config/SNS-2010-03-31.yml +249 -0
- data/lib/aws/api_config/SQS-2012-11-05.yml +317 -0
- data/lib/aws/api_config/STS-2011-06-15.yml +81 -0
- data/lib/aws/api_config/SimpleDB-2009-04-15.yml +306 -0
- data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +346 -0
- data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +2358 -0
- data/lib/aws/api_config/StorageGateway-2012-06-30.yml +748 -0
- data/lib/aws/auto_scaling.rb +164 -0
- data/lib/aws/auto_scaling/activity.rb +102 -0
- data/lib/aws/auto_scaling/activity_collection.rb +82 -0
- data/lib/aws/auto_scaling/client.rb +521 -0
- data/lib/aws/auto_scaling/config.rb +18 -0
- data/lib/aws/auto_scaling/errors.rb +22 -0
- data/lib/aws/auto_scaling/group.rb +420 -0
- data/lib/aws/auto_scaling/group_collection.rb +96 -0
- data/lib/aws/auto_scaling/group_options.rb +146 -0
- data/lib/aws/auto_scaling/instance.rb +192 -0
- data/lib/aws/auto_scaling/instance_collection.rb +63 -0
- data/lib/aws/auto_scaling/launch_configuration.rb +158 -0
- data/lib/aws/auto_scaling/launch_configuration_collection.rb +154 -0
- data/lib/aws/auto_scaling/notification_configuration.rb +89 -0
- data/lib/aws/auto_scaling/notification_configuration_collection.rb +184 -0
- data/lib/aws/auto_scaling/request.rb +29 -0
- data/lib/aws/auto_scaling/scaling_policy.rb +142 -0
- data/lib/aws/auto_scaling/scaling_policy_collection.rb +72 -0
- data/lib/aws/auto_scaling/scaling_policy_options.rb +64 -0
- data/lib/aws/auto_scaling/scheduled_action.rb +145 -0
- data/lib/aws/auto_scaling/scheduled_action_collection.rb +195 -0
- data/lib/aws/auto_scaling/tag.rb +59 -0
- data/lib/aws/auto_scaling/tag_collection.rb +112 -0
- data/lib/aws/cloud_formation.rb +272 -0
- data/lib/aws/cloud_formation/client.rb +369 -0
- data/lib/aws/cloud_formation/config.rb +18 -0
- data/lib/aws/cloud_formation/errors.rb +22 -0
- data/lib/aws/cloud_formation/request.rb +29 -0
- data/lib/aws/cloud_formation/stack.rb +255 -0
- data/lib/aws/cloud_formation/stack_collection.rb +209 -0
- data/lib/aws/cloud_formation/stack_event.rb +75 -0
- data/lib/aws/cloud_formation/stack_event_collection.rb +47 -0
- data/lib/aws/cloud_formation/stack_options.rb +72 -0
- data/lib/aws/cloud_formation/stack_output.rb +53 -0
- data/lib/aws/cloud_formation/stack_resource.rb +117 -0
- data/lib/aws/cloud_formation/stack_resource_collection.rb +84 -0
- data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +64 -0
- data/lib/aws/cloud_formation/stack_summary_collection.rb +123 -0
- data/lib/aws/cloud_front.rb +73 -0
- data/lib/aws/cloud_front/client.rb +1307 -0
- data/lib/aws/cloud_front/config.rb +18 -0
- data/lib/aws/cloud_front/errors.rb +22 -0
- data/lib/aws/cloud_front/request.rb +44 -0
- data/lib/aws/cloud_search.rb +74 -0
- data/lib/aws/cloud_search/client.rb +558 -0
- data/lib/aws/cloud_search/config.rb +18 -0
- data/lib/aws/cloud_search/errors.rb +22 -0
- data/lib/aws/cloud_search/request.rb +23 -0
- data/lib/aws/cloud_watch.rb +119 -0
- data/lib/aws/cloud_watch/alarm.rb +272 -0
- data/lib/aws/cloud_watch/alarm_collection.rb +153 -0
- data/lib/aws/cloud_watch/alarm_history_item.rb +50 -0
- data/lib/aws/cloud_watch/alarm_history_item_collection.rb +84 -0
- data/lib/aws/cloud_watch/client.rb +247 -0
- data/lib/aws/cloud_watch/config.rb +18 -0
- data/lib/aws/cloud_watch/errors.rb +22 -0
- data/lib/aws/cloud_watch/metric.rb +135 -0
- data/lib/aws/cloud_watch/metric_alarm_collection.rb +160 -0
- data/lib/aws/cloud_watch/metric_collection.rb +131 -0
- data/lib/aws/cloud_watch/metric_statistics.rb +69 -0
- data/lib/aws/cloud_watch/request.rb +23 -0
- data/lib/aws/core.rb +587 -0
- data/lib/aws/core/async_handle.rb +90 -0
- data/lib/aws/core/autoloader.rb +64 -0
- data/lib/aws/core/cacheable.rb +78 -0
- data/lib/aws/core/client.rb +691 -0
- data/lib/aws/core/collection.rb +267 -0
- data/lib/aws/core/collection/simple.rb +82 -0
- data/lib/aws/core/collection/with_limit_and_next_token.rb +71 -0
- data/lib/aws/core/collection/with_next_token.rb +97 -0
- data/lib/aws/core/configuration.rb +546 -0
- data/lib/aws/core/credential_providers.rb +461 -0
- data/lib/aws/core/data.rb +247 -0
- data/lib/aws/core/http/curb_handler.rb +155 -0
- data/lib/aws/core/http/handler.rb +89 -0
- data/lib/aws/core/http/net_http_handler.rb +128 -0
- data/lib/aws/core/http/request.rb +263 -0
- data/lib/aws/core/http/response.rb +81 -0
- data/lib/aws/core/indifferent_hash.rb +88 -0
- data/lib/aws/core/inflection.rb +56 -0
- data/lib/aws/core/json_client.rb +47 -0
- data/lib/aws/core/json_parser.rb +76 -0
- data/lib/aws/core/json_request_builder.rb +35 -0
- data/lib/aws/core/json_response_parser.rb +79 -0
- data/lib/aws/core/lazy_error_classes.rb +90 -0
- data/lib/aws/core/log_formatter.rb +462 -0
- data/lib/aws/core/managed_file.rb +32 -0
- data/lib/aws/core/meta_utils.rb +45 -0
- data/lib/aws/core/model.rb +57 -0
- data/lib/aws/core/naming.rb +30 -0
- data/lib/aws/core/option_grammar.rb +735 -0
- data/lib/aws/core/options/json_serializer.rb +82 -0
- data/lib/aws/core/options/validator.rb +155 -0
- data/lib/aws/core/options/xml_serializer.rb +118 -0
- data/lib/aws/core/page_result.rb +75 -0
- data/lib/aws/core/policy.rb +916 -0
- data/lib/aws/core/query_client.rb +41 -0
- data/lib/aws/core/query_error_parser.rb +24 -0
- data/lib/aws/core/query_request_builder.rb +47 -0
- data/lib/aws/core/query_response_parser.rb +35 -0
- data/lib/aws/core/resource.rb +413 -0
- data/lib/aws/core/resource_cache.rb +40 -0
- data/lib/aws/core/response.rb +208 -0
- data/lib/aws/core/response_cache.rb +50 -0
- data/lib/aws/core/rest_error_parser.rb +24 -0
- data/lib/aws/core/rest_json_client.rb +40 -0
- data/lib/aws/core/rest_request_builder.rb +146 -0
- data/lib/aws/core/rest_response_parser.rb +66 -0
- data/lib/aws/core/rest_xml_client.rb +47 -0
- data/lib/aws/core/service_interface.rb +61 -0
- data/lib/aws/core/signature/version_2.rb +56 -0
- data/lib/aws/core/signature/version_3.rb +77 -0
- data/lib/aws/core/signature/version_3_https.rb +54 -0
- data/lib/aws/core/signature/version_4.rb +135 -0
- data/lib/aws/core/signer.rb +46 -0
- data/lib/aws/core/uri_escape.rb +44 -0
- data/lib/aws/core/xml/frame.rb +244 -0
- data/lib/aws/core/xml/frame_stack.rb +85 -0
- data/lib/aws/core/xml/grammar.rb +307 -0
- data/lib/aws/core/xml/parser.rb +70 -0
- data/lib/aws/core/xml/root_frame.rb +65 -0
- data/lib/aws/core/xml/sax_handlers/libxml.rb +47 -0
- data/lib/aws/core/xml/sax_handlers/nokogiri.rb +55 -0
- data/lib/aws/core/xml/sax_handlers/ox.rb +41 -0
- data/lib/aws/core/xml/sax_handlers/rexml.rb +43 -0
- data/lib/aws/core/xml/stub.rb +123 -0
- data/lib/aws/data_pipeline.rb +73 -0
- data/lib/aws/data_pipeline/client.rb +339 -0
- data/lib/aws/data_pipeline/config.rb +18 -0
- data/lib/aws/data_pipeline/errors.rb +20 -0
- data/lib/aws/data_pipeline/request.rb +26 -0
- data/lib/aws/dynamo_db.rb +206 -0
- data/lib/aws/dynamo_db/attribute_collection.rb +461 -0
- data/lib/aws/dynamo_db/batch_get.rb +213 -0
- data/lib/aws/dynamo_db/batch_write.rb +252 -0
- data/lib/aws/dynamo_db/binary.rb +35 -0
- data/lib/aws/dynamo_db/client.rb +904 -0
- data/lib/aws/dynamo_db/config.rb +24 -0
- data/lib/aws/dynamo_db/errors.rb +20 -0
- data/lib/aws/dynamo_db/expectations.rb +40 -0
- data/lib/aws/dynamo_db/item.rb +133 -0
- data/lib/aws/dynamo_db/item_collection.rb +852 -0
- data/lib/aws/dynamo_db/item_data.rb +31 -0
- data/lib/aws/dynamo_db/keys.rb +41 -0
- data/lib/aws/dynamo_db/primary_key_element.rb +48 -0
- data/lib/aws/dynamo_db/request.rb +26 -0
- data/lib/aws/dynamo_db/resource.rb +33 -0
- data/lib/aws/dynamo_db/table.rb +491 -0
- data/lib/aws/dynamo_db/table_collection.rb +165 -0
- data/lib/aws/dynamo_db/types.rb +111 -0
- data/lib/aws/ec2.rb +440 -0
- data/lib/aws/ec2/attachment.rb +140 -0
- data/lib/aws/ec2/attachment_collection.rb +54 -0
- data/lib/aws/ec2/availability_zone.rb +86 -0
- data/lib/aws/ec2/availability_zone_collection.rb +43 -0
- data/lib/aws/ec2/block_device_mappings.rb +53 -0
- data/lib/aws/ec2/client.rb +3621 -0
- data/lib/aws/ec2/collection.rb +36 -0
- data/lib/aws/ec2/config.rb +18 -0
- data/lib/aws/ec2/config_transform.rb +63 -0
- data/lib/aws/ec2/customer_gateway.rb +90 -0
- data/lib/aws/ec2/customer_gateway_collection.rb +73 -0
- data/lib/aws/ec2/dhcp_options.rb +106 -0
- data/lib/aws/ec2/dhcp_options_collection.rb +87 -0
- data/lib/aws/ec2/elastic_ip.rb +208 -0
- data/lib/aws/ec2/elastic_ip_collection.rb +97 -0
- data/lib/aws/ec2/errors.rb +32 -0
- data/lib/aws/ec2/export_task.rb +120 -0
- data/lib/aws/ec2/export_task_collection.rb +67 -0
- data/lib/aws/ec2/filtered_collection.rb +89 -0
- data/lib/aws/ec2/has_permissions.rb +44 -0
- data/lib/aws/ec2/image.rb +264 -0
- data/lib/aws/ec2/image_collection.rb +228 -0
- data/lib/aws/ec2/instance.rb +796 -0
- data/lib/aws/ec2/instance_collection.rb +372 -0
- data/lib/aws/ec2/internet_gateway.rb +122 -0
- data/lib/aws/ec2/internet_gateway/attachment.rb +78 -0
- data/lib/aws/ec2/internet_gateway_collection.rb +54 -0
- data/lib/aws/ec2/key_pair.rb +82 -0
- data/lib/aws/ec2/key_pair_collection.rb +99 -0
- data/lib/aws/ec2/network_acl.rb +256 -0
- data/lib/aws/ec2/network_acl/association.rb +56 -0
- data/lib/aws/ec2/network_acl/entry.rb +147 -0
- data/lib/aws/ec2/network_acl_collection.rb +64 -0
- data/lib/aws/ec2/network_interface.rb +228 -0
- data/lib/aws/ec2/network_interface/attachment.rb +100 -0
- data/lib/aws/ec2/network_interface_collection.rb +103 -0
- data/lib/aws/ec2/permission_collection.rb +174 -0
- data/lib/aws/ec2/region.rb +106 -0
- data/lib/aws/ec2/region_collection.rb +51 -0
- data/lib/aws/ec2/request.rb +21 -0
- data/lib/aws/ec2/reserved_instances.rb +56 -0
- data/lib/aws/ec2/reserved_instances_collection.rb +40 -0
- data/lib/aws/ec2/reserved_instances_offering.rb +60 -0
- data/lib/aws/ec2/reserved_instances_offering_collection.rb +39 -0
- data/lib/aws/ec2/resource.rb +161 -0
- data/lib/aws/ec2/resource_tag_collection.rb +211 -0
- data/lib/aws/ec2/route_table.rb +205 -0
- data/lib/aws/ec2/route_table/association.rb +119 -0
- data/lib/aws/ec2/route_table/route.rb +119 -0
- data/lib/aws/ec2/route_table_collection.rb +72 -0
- data/lib/aws/ec2/security_group.rb +484 -0
- data/lib/aws/ec2/security_group/ip_permission.rb +135 -0
- data/lib/aws/ec2/security_group/ip_permission_collection.rb +82 -0
- data/lib/aws/ec2/security_group_collection.rb +135 -0
- data/lib/aws/ec2/snapshot.rb +143 -0
- data/lib/aws/ec2/snapshot_collection.rb +132 -0
- data/lib/aws/ec2/subnet.rb +161 -0
- data/lib/aws/ec2/subnet_collection.rb +115 -0
- data/lib/aws/ec2/tag.rb +81 -0
- data/lib/aws/ec2/tag_collection.rb +107 -0
- data/lib/aws/ec2/tagged_collection.rb +53 -0
- data/lib/aws/ec2/tagged_item.rb +85 -0
- data/lib/aws/ec2/volume.rb +174 -0
- data/lib/aws/ec2/volume_collection.rb +101 -0
- data/lib/aws/ec2/vpc.rb +166 -0
- data/lib/aws/ec2/vpc_collection.rb +70 -0
- data/lib/aws/ec2/vpn_connection.rb +99 -0
- data/lib/aws/ec2/vpn_connection/telemetry.rb +49 -0
- data/lib/aws/ec2/vpn_connection_collection.rb +96 -0
- data/lib/aws/ec2/vpn_gateway.rb +123 -0
- data/lib/aws/ec2/vpn_gateway/attachment.rb +45 -0
- data/lib/aws/ec2/vpn_gateway_collection.rb +77 -0
- data/lib/aws/elastic_beanstalk.rb +50 -0
- data/lib/aws/elastic_beanstalk/client.rb +867 -0
- data/lib/aws/elastic_beanstalk/config.rb +18 -0
- data/lib/aws/elastic_beanstalk/errors.rb +22 -0
- data/lib/aws/elastic_beanstalk/request.rb +29 -0
- data/lib/aws/elastic_transcoder.rb +30 -0
- data/lib/aws/elastic_transcoder/client.rb +672 -0
- data/lib/aws/elastic_transcoder/config.rb +18 -0
- data/lib/aws/elastic_transcoder/errors.rb +23 -0
- data/lib/aws/elastic_transcoder/request.rb +30 -0
- data/lib/aws/elasticache.rb +50 -0
- data/lib/aws/elasticache/client.rb +920 -0
- data/lib/aws/elasticache/config.rb +18 -0
- data/lib/aws/elasticache/errors.rb +22 -0
- data/lib/aws/elasticache/request.rb +23 -0
- data/lib/aws/elb.rb +67 -0
- data/lib/aws/elb/availability_zone_collection.rb +138 -0
- data/lib/aws/elb/backend_server_policy_collection.rb +139 -0
- data/lib/aws/elb/client.rb +500 -0
- data/lib/aws/elb/config.rb +18 -0
- data/lib/aws/elb/errors.rb +26 -0
- data/lib/aws/elb/instance_collection.rb +173 -0
- data/lib/aws/elb/listener.rb +190 -0
- data/lib/aws/elb/listener_collection.rb +113 -0
- data/lib/aws/elb/listener_opts.rb +45 -0
- data/lib/aws/elb/load_balancer.rb +281 -0
- data/lib/aws/elb/load_balancer_collection.rb +134 -0
- data/lib/aws/elb/load_balancer_policy.rb +93 -0
- data/lib/aws/elb/load_balancer_policy_collection.rb +208 -0
- data/lib/aws/elb/request.rb +29 -0
- data/lib/aws/emr.rb +86 -0
- data/lib/aws/emr/client.rb +330 -0
- data/lib/aws/emr/config.rb +18 -0
- data/lib/aws/emr/errors.rb +22 -0
- data/lib/aws/emr/instance_group.rb +138 -0
- data/lib/aws/emr/instance_group_collection.rb +82 -0
- data/lib/aws/emr/job_flow.rb +306 -0
- data/lib/aws/emr/job_flow_collection.rb +185 -0
- data/lib/aws/emr/request.rb +23 -0
- data/lib/aws/errors.rb +162 -0
- data/lib/aws/glacier.rb +80 -0
- data/lib/aws/glacier/archive.rb +56 -0
- data/lib/aws/glacier/archive_collection.rb +146 -0
- data/lib/aws/glacier/client.rb +286 -0
- data/lib/aws/glacier/config.rb +19 -0
- data/lib/aws/glacier/errors.rb +22 -0
- data/lib/aws/glacier/request.rb +34 -0
- data/lib/aws/glacier/resource.rb +30 -0
- data/lib/aws/glacier/vault.rb +145 -0
- data/lib/aws/glacier/vault_collection.rb +75 -0
- data/lib/aws/glacier/vault_notification_configuration.rb +29 -0
- data/lib/aws/iam.rb +420 -0
- data/lib/aws/iam/access_key.rb +180 -0
- data/lib/aws/iam/access_key_collection.rb +128 -0
- data/lib/aws/iam/account_alias_collection.rb +79 -0
- data/lib/aws/iam/client.rb +1092 -0
- data/lib/aws/iam/collection.rb +83 -0
- data/lib/aws/iam/config.rb +18 -0
- data/lib/aws/iam/errors.rb +22 -0
- data/lib/aws/iam/group.rb +111 -0
- data/lib/aws/iam/group_collection.rb +132 -0
- data/lib/aws/iam/group_policy_collection.rb +47 -0
- data/lib/aws/iam/group_user_collection.rb +84 -0
- data/lib/aws/iam/login_profile.rb +99 -0
- data/lib/aws/iam/mfa_device.rb +52 -0
- data/lib/aws/iam/mfa_device_collection.rb +127 -0
- data/lib/aws/iam/policy.rb +46 -0
- data/lib/aws/iam/policy_collection.rb +188 -0
- data/lib/aws/iam/request.rb +29 -0
- data/lib/aws/iam/resource.rb +62 -0
- data/lib/aws/iam/server_certificate.rb +141 -0
- data/lib/aws/iam/server_certificate_collection.rb +138 -0
- data/lib/aws/iam/signing_certificate.rb +169 -0
- data/lib/aws/iam/signing_certificate_collection.rb +131 -0
- data/lib/aws/iam/user.rb +205 -0
- data/lib/aws/iam/user_collection.rb +133 -0
- data/lib/aws/iam/user_group_collection.rb +98 -0
- data/lib/aws/iam/user_policy.rb +90 -0
- data/lib/aws/iam/user_policy_collection.rb +45 -0
- data/lib/aws/iam/virtual_mfa_device.rb +139 -0
- data/lib/aws/iam/virtual_mfa_device_collection.rb +73 -0
- data/lib/aws/import_export.rb +73 -0
- data/lib/aws/import_export/client.rb +109 -0
- data/lib/aws/import_export/config.rb +19 -0
- data/lib/aws/import_export/errors.rb +22 -0
- data/lib/aws/import_export/request.rb +23 -0
- data/lib/aws/ops_works.rb +30 -0
- data/lib/aws/ops_works/client.rb +713 -0
- data/lib/aws/ops_works/config.rb +18 -0
- data/lib/aws/ops_works/errors.rb +20 -0
- data/lib/aws/ops_works/request.rb +27 -0
- data/lib/aws/rails.rb +195 -0
- data/lib/aws/rds.rb +71 -0
- data/lib/aws/rds/client.rb +2228 -0
- data/lib/aws/rds/config.rb +18 -0
- data/lib/aws/rds/db_instance.rb +205 -0
- data/lib/aws/rds/db_instance_collection.rb +75 -0
- data/lib/aws/rds/db_snapshot.rb +163 -0
- data/lib/aws/rds/db_snapshot_collection.rb +89 -0
- data/lib/aws/rds/errors.rb +22 -0
- data/lib/aws/rds/request.rb +23 -0
- data/lib/aws/record.rb +116 -0
- data/lib/aws/record/abstract_base.rb +701 -0
- data/lib/aws/record/attributes.rb +384 -0
- data/lib/aws/record/conversion.rb +38 -0
- data/lib/aws/record/dirty_tracking.rb +285 -0
- data/lib/aws/record/errors.rb +143 -0
- data/lib/aws/record/exceptions.rb +48 -0
- data/lib/aws/record/hash_model.rb +161 -0
- data/lib/aws/record/hash_model/attributes.rb +197 -0
- data/lib/aws/record/hash_model/finder_methods.rb +172 -0
- data/lib/aws/record/hash_model/scope.rb +108 -0
- data/lib/aws/record/model.rb +427 -0
- data/lib/aws/record/model/attributes.rb +379 -0
- data/lib/aws/record/model/finder_methods.rb +232 -0
- data/lib/aws/record/model/scope.rb +213 -0
- data/lib/aws/record/naming.rb +31 -0
- data/lib/aws/record/scope.rb +199 -0
- data/lib/aws/record/validations.rb +712 -0
- data/lib/aws/record/validator.rb +246 -0
- data/lib/aws/record/validators/acceptance.rb +51 -0
- data/lib/aws/record/validators/block.rb +38 -0
- data/lib/aws/record/validators/confirmation.rb +43 -0
- data/lib/aws/record/validators/count.rb +108 -0
- data/lib/aws/record/validators/exclusion.rb +43 -0
- data/lib/aws/record/validators/format.rb +57 -0
- data/lib/aws/record/validators/inclusion.rb +56 -0
- data/lib/aws/record/validators/length.rb +107 -0
- data/lib/aws/record/validators/method.rb +33 -0
- data/lib/aws/record/validators/numericality.rb +138 -0
- data/lib/aws/record/validators/presence.rb +45 -0
- data/lib/aws/redshift.rb +52 -0
- data/lib/aws/redshift/client.rb +1291 -0
- data/lib/aws/redshift/config.rb +18 -0
- data/lib/aws/redshift/errors.rb +22 -0
- data/lib/aws/redshift/request.rb +29 -0
- data/lib/aws/route_53.rb +87 -0
- data/lib/aws/route_53/change_batch.rb +159 -0
- data/lib/aws/route_53/change_info.rb +72 -0
- data/lib/aws/route_53/client.rb +387 -0
- data/lib/aws/route_53/config.rb +18 -0
- data/lib/aws/route_53/errors.rb +22 -0
- data/lib/aws/route_53/hosted_zone.rb +111 -0
- data/lib/aws/route_53/hosted_zone_collection.rb +100 -0
- data/lib/aws/route_53/request.rb +23 -0
- data/lib/aws/route_53/resource_record_set.rb +237 -0
- data/lib/aws/route_53/resource_record_set_collection.rb +110 -0
- data/lib/aws/s3.rb +155 -0
- data/lib/aws/s3/access_control_list.rb +257 -0
- data/lib/aws/s3/acl_object.rb +264 -0
- data/lib/aws/s3/acl_options.rb +204 -0
- data/lib/aws/s3/bucket.rb +742 -0
- data/lib/aws/s3/bucket_collection.rb +160 -0
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +458 -0
- data/lib/aws/s3/bucket_tag_collection.rb +109 -0
- data/lib/aws/s3/bucket_version_collection.rb +77 -0
- data/lib/aws/s3/cipher_io.rb +119 -0
- data/lib/aws/s3/client.rb +1700 -0
- data/lib/aws/s3/client/xml.rb +231 -0
- data/lib/aws/s3/config.rb +36 -0
- data/lib/aws/s3/cors_rule.rb +106 -0
- data/lib/aws/s3/cors_rule_collection.rb +192 -0
- data/lib/aws/s3/data_options.rb +185 -0
- data/lib/aws/s3/encryption_utils.rb +139 -0
- data/lib/aws/s3/errors.rb +94 -0
- data/lib/aws/s3/multipart_upload.rb +320 -0
- data/lib/aws/s3/multipart_upload_collection.rb +68 -0
- data/lib/aws/s3/object_collection.rb +355 -0
- data/lib/aws/s3/object_metadata.rb +96 -0
- data/lib/aws/s3/object_upload_collection.rb +77 -0
- data/lib/aws/s3/object_version.rb +148 -0
- data/lib/aws/s3/object_version_collection.rb +89 -0
- data/lib/aws/s3/paginated_collection.rb +75 -0
- data/lib/aws/s3/policy.rb +74 -0
- data/lib/aws/s3/prefix_and_delimiter_collection.rb +47 -0
- data/lib/aws/s3/prefixed_collection.rb +81 -0
- data/lib/aws/s3/presigned_post.rb +555 -0
- data/lib/aws/s3/request.rb +201 -0
- data/lib/aws/s3/s3_object.rb +1690 -0
- data/lib/aws/s3/tree.rb +118 -0
- data/lib/aws/s3/tree/branch_node.rb +68 -0
- data/lib/aws/s3/tree/child_collection.rb +104 -0
- data/lib/aws/s3/tree/leaf_node.rb +94 -0
- data/lib/aws/s3/tree/node.rb +22 -0
- data/lib/aws/s3/tree/parent.rb +87 -0
- data/lib/aws/s3/uploaded_part.rb +80 -0
- data/lib/aws/s3/uploaded_part_collection.rb +84 -0
- data/lib/aws/s3/website_configuration.rb +102 -0
- data/lib/aws/simple_db.rb +219 -0
- data/lib/aws/simple_db/attribute.rb +154 -0
- data/lib/aws/simple_db/attribute_collection.rb +231 -0
- data/lib/aws/simple_db/client.rb +287 -0
- data/lib/aws/simple_db/config.rb +20 -0
- data/lib/aws/simple_db/consistent_read_option.rb +42 -0
- data/lib/aws/simple_db/delete_attributes.rb +62 -0
- data/lib/aws/simple_db/domain.rb +121 -0
- data/lib/aws/simple_db/domain_collection.rb +86 -0
- data/lib/aws/simple_db/domain_metadata.rb +110 -0
- data/lib/aws/simple_db/errors.rb +55 -0
- data/lib/aws/simple_db/expect_condition_option.rb +45 -0
- data/lib/aws/simple_db/item.rb +93 -0
- data/lib/aws/simple_db/item_collection.rb +649 -0
- data/lib/aws/simple_db/item_data.rb +73 -0
- data/lib/aws/simple_db/put_attributes.rb +60 -0
- data/lib/aws/simple_db/request.rb +23 -0
- data/lib/aws/simple_email_service.rb +428 -0
- data/lib/aws/simple_email_service/client.rb +276 -0
- data/lib/aws/simple_email_service/config.rb +19 -0
- data/lib/aws/simple_email_service/email_address_collection.rb +69 -0
- data/lib/aws/simple_email_service/errors.rb +22 -0
- data/lib/aws/simple_email_service/identity.rb +209 -0
- data/lib/aws/simple_email_service/identity_collection.rb +81 -0
- data/lib/aws/simple_email_service/quotas.rb +64 -0
- data/lib/aws/simple_email_service/request.rb +27 -0
- data/lib/aws/simple_workflow.rb +228 -0
- data/lib/aws/simple_workflow/activity_task.rb +173 -0
- data/lib/aws/simple_workflow/activity_task_collection.rb +123 -0
- data/lib/aws/simple_workflow/activity_type.rb +131 -0
- data/lib/aws/simple_workflow/activity_type_collection.rb +93 -0
- data/lib/aws/simple_workflow/client.rb +1204 -0
- data/lib/aws/simple_workflow/config.rb +18 -0
- data/lib/aws/simple_workflow/count.rb +49 -0
- data/lib/aws/simple_workflow/decision_task.rb +603 -0
- data/lib/aws/simple_workflow/decision_task_collection.rb +225 -0
- data/lib/aws/simple_workflow/domain.rb +122 -0
- data/lib/aws/simple_workflow/domain_collection.rb +169 -0
- data/lib/aws/simple_workflow/errors.rb +20 -0
- data/lib/aws/simple_workflow/history_event.rb +276 -0
- data/lib/aws/simple_workflow/history_event_collection.rb +76 -0
- data/lib/aws/simple_workflow/option_formatters.rb +82 -0
- data/lib/aws/simple_workflow/request.rb +33 -0
- data/lib/aws/simple_workflow/resource.rb +94 -0
- data/lib/aws/simple_workflow/type.rb +89 -0
- data/lib/aws/simple_workflow/type_collection.rb +140 -0
- data/lib/aws/simple_workflow/workflow_execution.rb +386 -0
- data/lib/aws/simple_workflow/workflow_execution_collection.rb +617 -0
- data/lib/aws/simple_workflow/workflow_type.rb +177 -0
- data/lib/aws/simple_workflow/workflow_type_collection.rb +91 -0
- data/lib/aws/sns.rb +76 -0
- data/lib/aws/sns/client.rb +266 -0
- data/lib/aws/sns/config.rb +18 -0
- data/lib/aws/sns/errors.rb +22 -0
- data/lib/aws/sns/has_delivery_policy.rb +68 -0
- data/lib/aws/sns/policy.rb +47 -0
- data/lib/aws/sns/request.rb +23 -0
- data/lib/aws/sns/subscription.rb +144 -0
- data/lib/aws/sns/subscription_collection.rb +78 -0
- data/lib/aws/sns/topic.rb +403 -0
- data/lib/aws/sns/topic_collection.rb +62 -0
- data/lib/aws/sns/topic_subscription_collection.rb +54 -0
- data/lib/aws/sqs.rb +81 -0
- data/lib/aws/sqs/client.rb +258 -0
- data/lib/aws/sqs/config.rb +18 -0
- data/lib/aws/sqs/errors.rb +101 -0
- data/lib/aws/sqs/policy.rb +48 -0
- data/lib/aws/sqs/queue.rb +764 -0
- data/lib/aws/sqs/queue_collection.rb +174 -0
- data/lib/aws/sqs/received_message.rb +181 -0
- data/lib/aws/sqs/received_sns_message.rb +116 -0
- data/lib/aws/sqs/request.rb +67 -0
- data/lib/aws/storage_gateway.rb +73 -0
- data/lib/aws/storage_gateway/client.rb +472 -0
- data/lib/aws/storage_gateway/config.rb +18 -0
- data/lib/aws/storage_gateway/errors.rb +22 -0
- data/lib/aws/storage_gateway/request.rb +28 -0
- data/lib/aws/sts.rb +163 -0
- data/lib/aws/sts/client.rb +157 -0
- data/lib/aws/sts/config.rb +18 -0
- data/lib/aws/sts/errors.rb +22 -0
- data/lib/aws/sts/federated_session.rb +56 -0
- data/lib/aws/sts/policy.rb +30 -0
- data/lib/aws/sts/request.rb +29 -0
- data/lib/aws/sts/session.rb +48 -0
- data/lib/aws/version.rb +18 -0
- data/lib/net/http/connection_pool.rb +226 -0
- data/lib/net/http/connection_pool/connection.rb +189 -0
- data/lib/net/http/connection_pool/session.rb +126 -0
- data/rails/init.rb +15 -0
- metadata +632 -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
|
+
# @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
|
+
# @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
|
+
# @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
|
+
# @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,23 @@
|
|
|
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
|
+
# @private
|
|
18
|
+
class Request < Core::Http::Request
|
|
19
|
+
include Core::Signature::Version2
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,428 @@
|
|
|
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
|
+
# = Identities
|
|
59
|
+
#
|
|
60
|
+
# Before you can send emails, you need to verify one or more identities.
|
|
61
|
+
# Identities are email addresses or domain names that you have control over.
|
|
62
|
+
# Until you have {requested production access}[http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/InitialSetup.Customer.html]
|
|
63
|
+
# you will only be able to send emails to and from verified email addresses
|
|
64
|
+
# and domains.
|
|
65
|
+
#
|
|
66
|
+
# == Verifying Email Addresses
|
|
67
|
+
#
|
|
68
|
+
# You can verify an email address for sending/receiving emails using
|
|
69
|
+
# the identities collection.
|
|
70
|
+
#
|
|
71
|
+
# identity = ses.identities.verify('email@yourdomain.com')
|
|
72
|
+
# identity.verified? #=> false
|
|
73
|
+
#
|
|
74
|
+
# You will be sent an email address with a link. Follow the link to
|
|
75
|
+
# verify the email address.
|
|
76
|
+
#
|
|
77
|
+
# == Verifying Domains
|
|
78
|
+
#
|
|
79
|
+
# You can also verify an entire domain for sending and receiving emails.
|
|
80
|
+
#
|
|
81
|
+
# identity = ses.identities.verify('yourdomain.com')
|
|
82
|
+
# identity.verification_token
|
|
83
|
+
# #=> "216D+lZbhUL0zOoAkC83/0TAl5lJSzLmzsOjtXM7AeM="
|
|
84
|
+
#
|
|
85
|
+
# You will be expected to update the DNS records for your domain with
|
|
86
|
+
# the given verification token. See the service documentation for
|
|
87
|
+
# more details.
|
|
88
|
+
#
|
|
89
|
+
# == Listing Identities
|
|
90
|
+
#
|
|
91
|
+
# You can enumerate all identities:
|
|
92
|
+
#
|
|
93
|
+
# ses.identities.map(&:identity)
|
|
94
|
+
# #=> ['email@foo.com', 'somedomain.com']
|
|
95
|
+
#
|
|
96
|
+
# You can filter the types of identities enumerated:
|
|
97
|
+
#
|
|
98
|
+
# domains = ses.identities.domains.map(&:identity)
|
|
99
|
+
# email_addresses = ses.identities.email_addresses.map(&:identity)
|
|
100
|
+
#
|
|
101
|
+
# You can get the verification status and token from identities as well.
|
|
102
|
+
#
|
|
103
|
+
# # for an email address
|
|
104
|
+
# identity = ses.identities['youremail@yourdomain.com']
|
|
105
|
+
# identity.verified? #=> true/false
|
|
106
|
+
#
|
|
107
|
+
# # for a domain
|
|
108
|
+
# identity = ses.identities['yourdomain.com']
|
|
109
|
+
# identity.verified? #=> true/false
|
|
110
|
+
# identity.verification_token #=> '...'
|
|
111
|
+
#
|
|
112
|
+
# = Sending Email
|
|
113
|
+
#
|
|
114
|
+
# To send a basic email you can use {#send_email}.
|
|
115
|
+
#
|
|
116
|
+
# ses.send_email(
|
|
117
|
+
# :subject => 'A Sample Email',
|
|
118
|
+
# :from => 'sender@domain.com',
|
|
119
|
+
# :to => 'receipient@domain.com',
|
|
120
|
+
# :body_text => 'Sample email text.',
|
|
121
|
+
# :body_html => '<h1>Sample Email</h1>')
|
|
122
|
+
#
|
|
123
|
+
# If you need to send email with attachments or have other special needs
|
|
124
|
+
# that send_email does not support you can use {#send_raw_email}.
|
|
125
|
+
#
|
|
126
|
+
# ses.send_raw_email(<<EMAIL)
|
|
127
|
+
# Subject: A Sample Email
|
|
128
|
+
# From: sender@domain.com
|
|
129
|
+
# To: receipient@domain.com
|
|
130
|
+
#
|
|
131
|
+
# Sample email text.
|
|
132
|
+
# EMAIL
|
|
133
|
+
#
|
|
134
|
+
# If you prefer, you can also set the sender and recipient in ruby
|
|
135
|
+
# when sending raw emails:
|
|
136
|
+
#
|
|
137
|
+
# ses.send_raw_email(<<EMAIL, :to => 'to@foo.com', :from => 'from@foo.com')
|
|
138
|
+
# Subject: A Sample Email
|
|
139
|
+
#
|
|
140
|
+
# Sample email text.
|
|
141
|
+
# EMAIL
|
|
142
|
+
#
|
|
143
|
+
# = Quotas
|
|
144
|
+
#
|
|
145
|
+
# Based on several factors, Amazon SES determines how much email you can
|
|
146
|
+
# send and how quickly you can send it. These sending limits are defined
|
|
147
|
+
# as follows:
|
|
148
|
+
#
|
|
149
|
+
# * +:max_send_rate+ - Maximum number of emails you can send per second.
|
|
150
|
+
# * +:max_24_hour_send+ - Maximum number of emails you can send in a
|
|
151
|
+
# 24-hour period.
|
|
152
|
+
#
|
|
153
|
+
# To get your current quotas (and how many emails you have sent in the last
|
|
154
|
+
# 24 hours):
|
|
155
|
+
#
|
|
156
|
+
# ses.quotas
|
|
157
|
+
# # => {:max_24_hour_send=>200, :max_send_rate=>1.0, :sent_last_24_hours=>22}
|
|
158
|
+
#
|
|
159
|
+
# = Statistics
|
|
160
|
+
#
|
|
161
|
+
# You can get statistics about individual emails:
|
|
162
|
+
#
|
|
163
|
+
# ses.statistics.each do |stats|
|
|
164
|
+
# puts "Sent: #{stats[:sent]}"
|
|
165
|
+
# puts "Delivery Attempts: #{stats[:delivery_attempts]}"
|
|
166
|
+
# puts "Rejects: #{stats[:rejects]}"
|
|
167
|
+
# puts "Bounces: #{stats[:bounces]}"
|
|
168
|
+
# puts "Complaints: #{stats[:complaints]}"
|
|
169
|
+
# end
|
|
170
|
+
#
|
|
171
|
+
# @!attribute [r] client
|
|
172
|
+
# @return [Client] the low-level SimpleEmailService client object
|
|
173
|
+
class SimpleEmailService
|
|
174
|
+
|
|
175
|
+
AWS.register_autoloads(self, 'aws/simple_email_service') do
|
|
176
|
+
autoload :Client, 'client'
|
|
177
|
+
autoload :Errors, 'errors'
|
|
178
|
+
autoload :EmailAddressCollection, 'email_address_collection'
|
|
179
|
+
autoload :Identity, 'identity'
|
|
180
|
+
autoload :IdentityCollection, 'identity_collection'
|
|
181
|
+
autoload :Quotas, 'quotas'
|
|
182
|
+
autoload :Request, 'request'
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
include Core::ServiceInterface
|
|
186
|
+
|
|
187
|
+
# @note This method is deprecated. Use {#identities} instead.
|
|
188
|
+
# @return [EmailAddressCollection] Returns a collection that represents
|
|
189
|
+
# all of the verified email addresses for your account.
|
|
190
|
+
def email_addresses
|
|
191
|
+
EmailAddressCollection.new(:config => config)
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
# @return [IdentityCollection]
|
|
195
|
+
def identities
|
|
196
|
+
IdentityCollection.new(:config => config)
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# Sends an email.
|
|
200
|
+
#
|
|
201
|
+
# ses.send_email(
|
|
202
|
+
# :subject => 'A Sample Email',
|
|
203
|
+
# :to => 'john@doe.com',
|
|
204
|
+
# :from => 'no@reply.com',
|
|
205
|
+
# :body_text => 'sample text ...',
|
|
206
|
+
# :body_html => '<p>sample text ...</p>')
|
|
207
|
+
#
|
|
208
|
+
# You can also pass multiple email addresses for the +:to+, +:cc+,
|
|
209
|
+
# +:bcc+ and +:reply_to+ options. Email addresses can also be
|
|
210
|
+
# formatted with names.
|
|
211
|
+
#
|
|
212
|
+
# ses.send_email(
|
|
213
|
+
# :subject => 'A Sample Email',
|
|
214
|
+
# :to => ['"John Doe" <john@doe.com>', '"Jane Doe" <jane@doe.com>'],
|
|
215
|
+
# :from => 'no@reply.com',
|
|
216
|
+
# :body_text => 'sample text ...')
|
|
217
|
+
#
|
|
218
|
+
# @param [Hash] options
|
|
219
|
+
# @option options [required,String] :subject The subject of the message.
|
|
220
|
+
# A short summary of the content, which will appear in the #
|
|
221
|
+
# recipient's inbox.
|
|
222
|
+
# @option options [required,String] :from The sender's email address.
|
|
223
|
+
# @option options [String,Array] :to The address(es) to send the email to.
|
|
224
|
+
# @option options [String,Array] :cc The address(es) to cc (carbon copy)
|
|
225
|
+
# the email to.
|
|
226
|
+
# @option options [String,Array] :bcc The address(es) to bcc (blind
|
|
227
|
+
# carbon copy) the email to.
|
|
228
|
+
# @option options [String,Array] :reply_to The reply-to email address(es)
|
|
229
|
+
# for the message. If the recipient replies to the message, each
|
|
230
|
+
# reply-to address will receive the reply.
|
|
231
|
+
# @option options [String] :return_path The email address to which
|
|
232
|
+
# bounce notifications are to be forwarded. If the message cannot be
|
|
233
|
+
# delivered to the recipient, then an error message will be returned
|
|
234
|
+
# from the recipient's ISP; this message will then be forwarded to
|
|
235
|
+
# the email address specified by the +:return_path+ option.
|
|
236
|
+
# @option options [String] :body_text The email text contents.
|
|
237
|
+
# You must provide +:body_text+, +:body_html+ or both.
|
|
238
|
+
# @option options [String] :body_html The email html contents.
|
|
239
|
+
# You must provide +:body_text+, +:body_html+ or both.
|
|
240
|
+
# @option options [String] :subject_charset The character set of the
|
|
241
|
+
# +:subject+ string. If the text must contain any other characters,
|
|
242
|
+
# then you must also specify the character set. Examples include
|
|
243
|
+
# UTF-8, ISO-8859-1, and Shift_JIS. Defaults to 7-bit ASCII.
|
|
244
|
+
# @option options [String] :body_text_charset The character set of the
|
|
245
|
+
# +:body_text+ string. If the text must contain any other characters,
|
|
246
|
+
# then you must also specify the character set. Examples include
|
|
247
|
+
# UTF-8, ISO-8859-1, and Shift_JIS. Defaults to 7-bit ASCII.
|
|
248
|
+
# @option options [String] :body_html_charset The character set of the
|
|
249
|
+
# +:body_html+ string. If the text must contain any other characters,
|
|
250
|
+
# then you must also specify the character set. Examples include
|
|
251
|
+
# UTF-8, ISO-8859-1, and Shift_JIS. Defaults to 7-bit ASCII.
|
|
252
|
+
# @option options [String] :body_html
|
|
253
|
+
# @return [nil]
|
|
254
|
+
def send_email options = {}
|
|
255
|
+
|
|
256
|
+
require_each(options, :subject, :from)
|
|
257
|
+
require_one_of(options, :to, :cc, :bcc)
|
|
258
|
+
require_one_of(options, :body_text, :body_html)
|
|
259
|
+
|
|
260
|
+
# these three options can be passed strings or arrays of strings,
|
|
261
|
+
# but the service requires them in a list (array)
|
|
262
|
+
[:to, :cc, :bcc, :reply_to].each do |key|
|
|
263
|
+
if options[key]
|
|
264
|
+
options[key] = [options[key]].flatten
|
|
265
|
+
end
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
accepted_options = {
|
|
269
|
+
:subject => %w(message subject data),
|
|
270
|
+
:subject_charset => %w(message subject charset),
|
|
271
|
+
:to => %w(destination to_addresses),
|
|
272
|
+
:cc => %w(destination cc_addresses),
|
|
273
|
+
:bcc => %w(destination bcc_addresses),
|
|
274
|
+
:from => %w(source),
|
|
275
|
+
:reply_to => %w(reply_to_addresses),
|
|
276
|
+
:return_path => %w(return_path),
|
|
277
|
+
:body_text => %w(message body text data),
|
|
278
|
+
:body_text_charset => %w(message body text charset),
|
|
279
|
+
:body_html => %w(message body html data),
|
|
280
|
+
:body_html_charset => %w(message body html charset),
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
client.send_email(nest_options(options, accepted_options))
|
|
284
|
+
nil
|
|
285
|
+
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
# Sends a raw email (email message, with header and content specified).
|
|
289
|
+
# Useful for sending multipart MIME emails. The raw text of the message
|
|
290
|
+
# must comply with Internet email standards; otherwise, the message
|
|
291
|
+
# cannot be sent.
|
|
292
|
+
#
|
|
293
|
+
# raw = <<-EMAIL
|
|
294
|
+
# Date: Wed, 1 Jun 2011 09:13:07 -0700
|
|
295
|
+
# Subject: A Sample Email
|
|
296
|
+
# From: "John Doe" <johndoe@domain.com>
|
|
297
|
+
# To: "Jane Doe" <janedoe@domain.com>
|
|
298
|
+
# Accept-Language: en-US
|
|
299
|
+
# Content-Language: en-US
|
|
300
|
+
# Content-Type: text/plain; charset="utf-8"
|
|
301
|
+
# Content-Transfer-Encoding: base64
|
|
302
|
+
# MIME-Version: 1.0
|
|
303
|
+
#
|
|
304
|
+
# c2FtcGxlIHRleHQNCg==
|
|
305
|
+
# EMAIL
|
|
306
|
+
#
|
|
307
|
+
# ses.send_raw_email(raw)
|
|
308
|
+
#
|
|
309
|
+
# Amazon SES has a limit on the total number of recipients per
|
|
310
|
+
# message: The combined number of To:, CC: and BCC: email addresses
|
|
311
|
+
# cannot exceed 50. If you need to send an email message to a larger
|
|
312
|
+
# audience, you can divide your recipient list into groups of 50 or
|
|
313
|
+
# fewer, and then call Amazon SES repeatedly to send the message to
|
|
314
|
+
# each group.
|
|
315
|
+
#
|
|
316
|
+
# @param [required, String] raw_message The raw text of the message.
|
|
317
|
+
# You can pass in any object whos #to_s returns a valid formatted
|
|
318
|
+
# email (e.g. ruby Mail gem). The raw message should:
|
|
319
|
+
# * Contain a header and a body, separated by a blank line
|
|
320
|
+
# * Contain all required internet email headers
|
|
321
|
+
# * Each part of a multipart MIME message must be formatted properly
|
|
322
|
+
# * MIME content types must be among those supported by Amazon SES.
|
|
323
|
+
# Refer to the Amazon SES Developer Guide for more details.
|
|
324
|
+
# * Use content that is base64-encoded, if MIME requires it
|
|
325
|
+
# @option options [String,Array] :to One or more email addresses to
|
|
326
|
+
# send the email to.
|
|
327
|
+
# @option options [String] :from The sender's email address.
|
|
328
|
+
# If you specify the :from option, then bounce notifications and
|
|
329
|
+
# complaints will be sent to this email address. This takes
|
|
330
|
+
# precedence over any Return-Path header that you might include in
|
|
331
|
+
# the +raw_message+.
|
|
332
|
+
# @return [nil]
|
|
333
|
+
def send_raw_email raw_message, options = {}
|
|
334
|
+
|
|
335
|
+
send_opts = {}
|
|
336
|
+
send_opts[:raw_message] = {}
|
|
337
|
+
send_opts[:raw_message][:data] = raw_message.to_s
|
|
338
|
+
send_opts[:source] = options[:from] if options[:from]
|
|
339
|
+
|
|
340
|
+
if raw_message.respond_to?(:destinations)
|
|
341
|
+
send_opts[:destinations] = raw_message.destinations
|
|
342
|
+
end
|
|
343
|
+
send_opts[:destinations] = [options[:to]].flatten if options[:to]
|
|
344
|
+
|
|
345
|
+
client.send_raw_email(send_opts)
|
|
346
|
+
nil
|
|
347
|
+
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
# for compatability with ActionMailer
|
|
351
|
+
alias_method :deliver, :send_raw_email
|
|
352
|
+
alias_method :deliver!, :send_raw_email
|
|
353
|
+
|
|
354
|
+
# @example
|
|
355
|
+
#
|
|
356
|
+
# ses.quotas
|
|
357
|
+
# # {:max_24_hour_send=>200, :max_send_rate=>1.0, :sent_last_24_hours=>22}
|
|
358
|
+
#
|
|
359
|
+
# @return [Hash] Returns a hash of SES quotas and limits.
|
|
360
|
+
def quotas
|
|
361
|
+
Quotas.new(:config => config).to_h
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
# Returns an array of email statistics. Each object in this array is a
|
|
365
|
+
# hash with the following keys:
|
|
366
|
+
#
|
|
367
|
+
# * +:delivery_attempts+
|
|
368
|
+
# * +:rejects+
|
|
369
|
+
# * +:bounces+
|
|
370
|
+
# * +:complaints+
|
|
371
|
+
# * +:timestamp+
|
|
372
|
+
#
|
|
373
|
+
# @return [Array of Hashes] An array of email statistic hashes.
|
|
374
|
+
def statistics
|
|
375
|
+
response = client.get_send_statistics
|
|
376
|
+
response.data[:send_data_points].collect do |data|
|
|
377
|
+
{
|
|
378
|
+
:sent => data[:timestamp],
|
|
379
|
+
:delivery_attempts => data[:delivery_attempts],
|
|
380
|
+
:rejects => data[:rejects],
|
|
381
|
+
:bounces => data[:bounces],
|
|
382
|
+
:complaints => data[:complaints],
|
|
383
|
+
}
|
|
384
|
+
end
|
|
385
|
+
end
|
|
386
|
+
|
|
387
|
+
# @private
|
|
388
|
+
protected
|
|
389
|
+
def require_one_of options, *keys
|
|
390
|
+
unless keys.any?{|key| options[key] }
|
|
391
|
+
parts = keys.collect{|key| ":#{key}" }.join(', ')
|
|
392
|
+
raise ArgumentError, "you must provide at least one of #{parts}"
|
|
393
|
+
end
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
# @private
|
|
397
|
+
protected
|
|
398
|
+
def require_each options, *keys
|
|
399
|
+
keys.each do |key|
|
|
400
|
+
unless options[key]
|
|
401
|
+
raise ArgumentError, "missing required option :#{key}"
|
|
402
|
+
end
|
|
403
|
+
end
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
# @private
|
|
407
|
+
protected
|
|
408
|
+
def nest_options options, accepted_options
|
|
409
|
+
|
|
410
|
+
send_opts = {}
|
|
411
|
+
accepted_options.each_pair do |option, keys|
|
|
412
|
+
next unless options[option]
|
|
413
|
+
hash = send_opts
|
|
414
|
+
keys.collect{|k| k.to_sym }.each do |key|
|
|
415
|
+
hash[key] = {} unless hash[key]
|
|
416
|
+
if keys.last == key.to_s
|
|
417
|
+
hash[key] = options[option]
|
|
418
|
+
else
|
|
419
|
+
hash = hash[key]
|
|
420
|
+
end
|
|
421
|
+
end
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
send_opts
|
|
425
|
+
end
|
|
426
|
+
|
|
427
|
+
end
|
|
428
|
+
end
|