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,18 @@
|
|
|
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
|
+
AWS::Core::Configuration.module_eval do
|
|
15
|
+
|
|
16
|
+
add_service 'SNS', 'sns', 'sns.us-east-1.amazonaws.com'
|
|
17
|
+
|
|
18
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
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 SNS
|
|
16
|
+
module Errors
|
|
17
|
+
|
|
18
|
+
extend Core::LazyErrorClasses
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
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 SNS
|
|
16
|
+
|
|
17
|
+
# A module shared between {Topic} and {Subscription}. Provides methods
|
|
18
|
+
# for getting and setting the delivery policy and for getting the
|
|
19
|
+
# effective delivery policy.
|
|
20
|
+
module HasDeliveryPolicy
|
|
21
|
+
|
|
22
|
+
# @return [nil,Hash] Returns the delivery policy.
|
|
23
|
+
def delivery_policy
|
|
24
|
+
parse_delivery_policy(delivery_policy_json)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @return [Hash] Returns the effective delivery policy.
|
|
28
|
+
def effective_delivery_policy
|
|
29
|
+
parse_delivery_policy(effective_delivery_policy_json)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# @param [nil,Hash,String<JSON>] policy A delivery policy. You can
|
|
33
|
+
# pass a JSON string, A policy hash or nil.
|
|
34
|
+
def delivery_policy= policy
|
|
35
|
+
|
|
36
|
+
policy_json = case policy
|
|
37
|
+
when nil then ''
|
|
38
|
+
when String then policy
|
|
39
|
+
else policy.to_json
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
update_delivery_policy(policy_json)
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# @return [nil,String] Returns the delivery policy JSON string.
|
|
47
|
+
def delivery_policy_json
|
|
48
|
+
raise NotImplementedError
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# @return [String] Returns the effective delivery policy JSON string.
|
|
52
|
+
def effective_delivery_policy_json
|
|
53
|
+
raise NotImplementedError
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
protected
|
|
57
|
+
def parse_delivery_policy policy_json
|
|
58
|
+
policy_json.nil? ? nil : JSON.parse(policy_json)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
protected
|
|
62
|
+
def update_delivery_policy policy_json
|
|
63
|
+
raise NotImplementedError
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
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 SNS
|
|
16
|
+
|
|
17
|
+
# (see Core::Policy)
|
|
18
|
+
class Policy < Core::Policy
|
|
19
|
+
|
|
20
|
+
class Statement < Core::Policy::Statement
|
|
21
|
+
|
|
22
|
+
ACTION_MAPPING = {
|
|
23
|
+
:add_permission => 'sns:AddPermission',
|
|
24
|
+
:delete_topic => 'sns:DeleteTopic',
|
|
25
|
+
:get_topic_attributes => 'sns:GetTopicAttributes',
|
|
26
|
+
:list_subscriptions_by_topic => 'sns:ListSubscriptionsByTopic',
|
|
27
|
+
:publish => 'sns:Publish',
|
|
28
|
+
:receive => 'sns:Receive',
|
|
29
|
+
:remove_permission => 'sns:RemovePermission',
|
|
30
|
+
:set_topic_attributes => 'sns:SetTopicAttributes',
|
|
31
|
+
:subscribe => 'sns:Subscribe',
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
protected
|
|
35
|
+
def resource_arn resource
|
|
36
|
+
case resource
|
|
37
|
+
when Topic then resource.arn
|
|
38
|
+
#when Subscription then resource.arn
|
|
39
|
+
else super(resource)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
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 SNS
|
|
16
|
+
|
|
17
|
+
# @private
|
|
18
|
+
class Request < Core::Http::Request
|
|
19
|
+
include Core::Signature::Version2
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,144 @@
|
|
|
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 SNS
|
|
16
|
+
|
|
17
|
+
# Represents a subscription of a single endpoint to an SNS topic.
|
|
18
|
+
# To create a subscription, use the {Topic#subscribe} method.
|
|
19
|
+
# Depending on the endpoint type, you may also need to use
|
|
20
|
+
# {Topic#confirm_subscription}.
|
|
21
|
+
class Subscription
|
|
22
|
+
|
|
23
|
+
include Core::Model
|
|
24
|
+
include HasDeliveryPolicy
|
|
25
|
+
|
|
26
|
+
# @private
|
|
27
|
+
def initialize(arn, opts = {})
|
|
28
|
+
@arn = arn
|
|
29
|
+
@topic_arn = opts[:topic_arn]
|
|
30
|
+
@endpoint = opts[:endpoint]
|
|
31
|
+
@protocol = opts[:protocol]
|
|
32
|
+
@owner_id = opts[:owner_id]
|
|
33
|
+
super
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# @return [String] The ARN of the subscription.
|
|
37
|
+
attr_reader :arn
|
|
38
|
+
|
|
39
|
+
# @return [String] The endpoint. This can be an HTTP or HTTPS
|
|
40
|
+
# URL, an e-mail address, or a queue ARN.
|
|
41
|
+
attr_reader :endpoint
|
|
42
|
+
|
|
43
|
+
# @return [String] The protocol. Possible values:
|
|
44
|
+
#
|
|
45
|
+
# * +:http+
|
|
46
|
+
# * +:https+
|
|
47
|
+
# * +:email+
|
|
48
|
+
# * +:email_json+
|
|
49
|
+
# * +:sqs+
|
|
50
|
+
attr_reader :protocol
|
|
51
|
+
|
|
52
|
+
# @return [String] The AWS account ID of the subscription owner.
|
|
53
|
+
def owner_id
|
|
54
|
+
@owner_id ||= get_attributes['Owner']
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# @return [String]
|
|
58
|
+
def topic_arn
|
|
59
|
+
@topic_arn ||= get_attributes['TopicArn']
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# @return [Topic]
|
|
63
|
+
def topic
|
|
64
|
+
Topic.new(topic_arn, :config => config)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Deletes this subscription.
|
|
68
|
+
# @return [nil]
|
|
69
|
+
def unsubscribe
|
|
70
|
+
client.unsubscribe(:subscription_arn => arn)
|
|
71
|
+
nil
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# @return [Boolean] Returns true if the subscription confirmation
|
|
75
|
+
# request was authenticated.
|
|
76
|
+
def confirmation_authenticated?
|
|
77
|
+
|
|
78
|
+
return true if @authenticated
|
|
79
|
+
|
|
80
|
+
if authenticated = get_attributes['ConfirmationWasAuthenticated']
|
|
81
|
+
@authenticated = true
|
|
82
|
+
else
|
|
83
|
+
false
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# You can get the parsed JSON hash from {#delivery_policy}.
|
|
89
|
+
# @return [nil,String] Returns the delivery policy JSON string.
|
|
90
|
+
def delivery_policy_json
|
|
91
|
+
get_attributes['DeliveryPolicy']
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# You can get the parsed JSON hash from {#effective_delivery_policy}.
|
|
95
|
+
# @return [nil,String] Returns the effective delivery policy JSON string.
|
|
96
|
+
def effective_delivery_policy_json
|
|
97
|
+
get_attributes['EffectiveDeliveryPolicy']
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# @note This method requests the entire list of subscriptions
|
|
101
|
+
# for the topic (if known) or the account (if the topic is not
|
|
102
|
+
# known). It can be expensive if the number of subscriptions
|
|
103
|
+
# is high.
|
|
104
|
+
#
|
|
105
|
+
# @return [Boolean] Returns true if the subscription exists.
|
|
106
|
+
def exists?
|
|
107
|
+
begin
|
|
108
|
+
get_attributes
|
|
109
|
+
true
|
|
110
|
+
rescue Errors::NotFound, Errors::InvalidParameter
|
|
111
|
+
false
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# @private
|
|
116
|
+
def inspect
|
|
117
|
+
"<#{self.class} arn:#{arn}>"
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# @return [Boolean] Returns true if the subscriptions have the same
|
|
121
|
+
# resource ARN.
|
|
122
|
+
def eql? other
|
|
123
|
+
other.kind_of?(Subscription) and other.arn == arn
|
|
124
|
+
end
|
|
125
|
+
alias_method :==, :eql?
|
|
126
|
+
|
|
127
|
+
protected
|
|
128
|
+
def update_delivery_policy policy_json
|
|
129
|
+
client_opts = {}
|
|
130
|
+
client_opts[:subscription_arn] = arn
|
|
131
|
+
client_opts[:attribute_name] = 'DeliveryPolicy'
|
|
132
|
+
client_opts[:attribute_value] = policy_json
|
|
133
|
+
client.set_subscription_attributes(client_opts)
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
protected
|
|
137
|
+
def get_attributes
|
|
138
|
+
client.get_subscription_attributes(:subscription_arn => arn).attributes
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
end
|
|
144
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
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 SNS
|
|
16
|
+
|
|
17
|
+
# Represents the collection of all subscriptions for the AWS
|
|
18
|
+
# account. For example:
|
|
19
|
+
#
|
|
20
|
+
# # get the ARNs of all SQS queues with subscriptions to topics
|
|
21
|
+
# # owned by this account
|
|
22
|
+
# topic.subscriptions.
|
|
23
|
+
# select { |s| s.protocol == :sqs }.
|
|
24
|
+
# collect(&:endpoint)
|
|
25
|
+
#
|
|
26
|
+
class SubscriptionCollection
|
|
27
|
+
|
|
28
|
+
include Core::Collection::WithNextToken
|
|
29
|
+
|
|
30
|
+
# Returns a subscription with the given ARN. This does not make
|
|
31
|
+
# a request to AWS.
|
|
32
|
+
# @param [String] arn The subscription ARN.
|
|
33
|
+
# @return [Subscription]
|
|
34
|
+
def [] arn
|
|
35
|
+
Subscription.new(arn, :config => config)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
protected
|
|
39
|
+
|
|
40
|
+
# Yield each subscription belonging to this account.
|
|
41
|
+
# @yieldparam [Subscription] subscription Each of the
|
|
42
|
+
# subscriptions in the account.
|
|
43
|
+
# @return [nil]
|
|
44
|
+
def _each_item next_token, options, &block
|
|
45
|
+
|
|
46
|
+
options[:next_token] = next_token if next_token
|
|
47
|
+
|
|
48
|
+
resp = client.send(client_method, options.merge(request_options))
|
|
49
|
+
resp.data[:subscriptions].each do |sub|
|
|
50
|
+
|
|
51
|
+
subscription = Subscription.new(
|
|
52
|
+
sub[:subscription_arn],
|
|
53
|
+
:endpoint => sub[:endpoint],
|
|
54
|
+
:protocol => sub[:protocol].tr('-','_').to_sym,
|
|
55
|
+
:owner_id => sub[:owner],
|
|
56
|
+
:topic_arn => sub[:topic_arn],
|
|
57
|
+
:config => config)
|
|
58
|
+
|
|
59
|
+
yield(subscription)
|
|
60
|
+
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
resp.data[:next_token]
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def client_method
|
|
68
|
+
:list_subscriptions
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def request_options
|
|
72
|
+
{}
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,403 @@
|
|
|
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 'json'
|
|
15
|
+
|
|
16
|
+
module AWS
|
|
17
|
+
class SNS
|
|
18
|
+
|
|
19
|
+
class Topic
|
|
20
|
+
|
|
21
|
+
include Core::Model
|
|
22
|
+
include HasDeliveryPolicy
|
|
23
|
+
|
|
24
|
+
# @param [String] arn The topic ARN.
|
|
25
|
+
def initialize arn, options = {}
|
|
26
|
+
@arn = arn
|
|
27
|
+
super
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# @return [String] The topic ARN.
|
|
31
|
+
attr_reader :arn
|
|
32
|
+
|
|
33
|
+
# The topic name.
|
|
34
|
+
#
|
|
35
|
+
# If you have not set a display name (see {#display_name=}) then
|
|
36
|
+
# this is used as the "From" field for notifications to email and
|
|
37
|
+
# email-json endpoints.
|
|
38
|
+
# @return [String] Returns the toipc name.
|
|
39
|
+
def name
|
|
40
|
+
arn.split(/:/)[-1]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Causes the given +endpoint+ to receive messages published to this
|
|
44
|
+
# topic.
|
|
45
|
+
#
|
|
46
|
+
# == Subscribing to SQS Queues
|
|
47
|
+
#
|
|
48
|
+
# If you subscribe to an SQS queue (with a {SQS::Queue} object}
|
|
49
|
+
# then a policy will be added/updated to the queue that will
|
|
50
|
+
# permit this topic to send it messages. Some important notes:
|
|
51
|
+
#
|
|
52
|
+
# * If you subscribe with a queue by ARN then you must change the
|
|
53
|
+
# policy yourself.
|
|
54
|
+
#
|
|
55
|
+
# * If you do not want the policy modified then pass +:update_policy+
|
|
56
|
+
# as false or just pass the queue's arn
|
|
57
|
+
#
|
|
58
|
+
# topic.subscribe(queue.arn)
|
|
59
|
+
# topic.subscribe(queue, :update_policy => false)
|
|
60
|
+
#
|
|
61
|
+
# @example Using a url string to set the endpoint (http and https)
|
|
62
|
+
#
|
|
63
|
+
# topic.subscribe('http://example.com/messages')
|
|
64
|
+
# topic.subscribe('https://example.com/messages')
|
|
65
|
+
#
|
|
66
|
+
# @example Using a uri object to set the endpoint (http and https)
|
|
67
|
+
#
|
|
68
|
+
# topic.subscribe(URI.parse('http://example.com/messages'))
|
|
69
|
+
# topic.subscribe(URI.parse('https://example.com/messages'))
|
|
70
|
+
#
|
|
71
|
+
# @example Email address as endpoint
|
|
72
|
+
#
|
|
73
|
+
# topic.subscribe('nobody@example.com')
|
|
74
|
+
#
|
|
75
|
+
# @example Email address as a JSON endpoint
|
|
76
|
+
#
|
|
77
|
+
# # send messages encoded as json object to the given email address
|
|
78
|
+
# topic.subscribe('nobody@example.com', :json => true)
|
|
79
|
+
#
|
|
80
|
+
# @example SQS Queue (by arn)
|
|
81
|
+
#
|
|
82
|
+
# # you must manage the queue policy yourself to allow the
|
|
83
|
+
# # the topic to send messages (policy action 'sqs:SendMessage')
|
|
84
|
+
# topic.subscribe('arn:aws:sqs:us-east-1:123456789123:AQueue')
|
|
85
|
+
#
|
|
86
|
+
# @example SQS Queue (by Queue object)
|
|
87
|
+
#
|
|
88
|
+
# # the queue policy will be added/updated to allow the topic
|
|
89
|
+
# # to send it messages
|
|
90
|
+
# topic.subscribe(AWS::SQS.new.queues.first)
|
|
91
|
+
#
|
|
92
|
+
# @param [mixed] endpoint The endpoint that should receive
|
|
93
|
+
# messages that are published to this topic. Valid values
|
|
94
|
+
# for +endpoint+ include:
|
|
95
|
+
#
|
|
96
|
+
# * URI object
|
|
97
|
+
# * http and https URI strings
|
|
98
|
+
# * email address
|
|
99
|
+
# * {SQS::Queue}
|
|
100
|
+
# * SQS queue ARN
|
|
101
|
+
# * phone number of an SMS-enabled device
|
|
102
|
+
#
|
|
103
|
+
# @param [Hash] options
|
|
104
|
+
# @option options [Boolean] :json (false)
|
|
105
|
+
# @return [Subscription,nil] Returns a subscription when possible.
|
|
106
|
+
# If the subscription requires confirmation first, then +nil+ is
|
|
107
|
+
# returned instead.
|
|
108
|
+
def subscribe endpoint, options = {}
|
|
109
|
+
subscribe_opts = endpoint_opts(endpoint, options).merge(:topic_arn => arn)
|
|
110
|
+
resp = client.subscribe(subscribe_opts)
|
|
111
|
+
if arn = resp[:subscription_arn] and arn =~ /^arn:/
|
|
112
|
+
Subscription.new(arn, :config => config)
|
|
113
|
+
else
|
|
114
|
+
nil
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# Verifies an endpoint owner's intent to receive messages by
|
|
119
|
+
# validating the token sent to the endpoint by an earlier
|
|
120
|
+
# Subscribe action. If the token is valid, the action creates a
|
|
121
|
+
# new subscription.
|
|
122
|
+
#
|
|
123
|
+
# @param [String] token Short-lived token sent to an endpoint
|
|
124
|
+
# during the {#subscribe} action.
|
|
125
|
+
#
|
|
126
|
+
# @param [Hash] options Additional options for confirming the
|
|
127
|
+
# subscription.
|
|
128
|
+
#
|
|
129
|
+
# @option options [Boolean] :authenticate_on_unsubscribe
|
|
130
|
+
# Indicates that you want to disable unauthenticated
|
|
131
|
+
# unsubsciption of the subscription.
|
|
132
|
+
#
|
|
133
|
+
# @return [Subscription] The newly created subscription.
|
|
134
|
+
#
|
|
135
|
+
def confirm_subscription token, options = {}
|
|
136
|
+
|
|
137
|
+
options[:authenticate_on_unsubscribe] = 'true' if
|
|
138
|
+
options[:authenticate_on_unsubscribe]
|
|
139
|
+
|
|
140
|
+
confirm_opts = options.merge(:token => token, :topic_arn => arn)
|
|
141
|
+
resp = client.confirm_subscription(confirm_opts)
|
|
142
|
+
Subscription.new(
|
|
143
|
+
resp[:subscription_arn],
|
|
144
|
+
:topic_arn => arn,
|
|
145
|
+
:config => config)
|
|
146
|
+
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# @return [TopicSubscriptionCollection] Returns a collection that
|
|
150
|
+
# represents all of the subscriptions for this topic.
|
|
151
|
+
def subscriptions
|
|
152
|
+
TopicSubscriptionCollection.new(self)
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# @return [String] Returns the human-readable name used in
|
|
156
|
+
# the "From" field for notifications to email and email-json
|
|
157
|
+
# endpoints. If you have not set the display name the topic
|
|
158
|
+
# {#name} will be used/returned instead.
|
|
159
|
+
def display_name
|
|
160
|
+
to_h[:display_name]
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# @param [String] display_name Sets the human-readable name used in
|
|
164
|
+
# the "From" field for notifications to email and email-json
|
|
165
|
+
# endpoints.
|
|
166
|
+
# @return [String] Returns the display_name as passed.
|
|
167
|
+
def display_name= display_name
|
|
168
|
+
set_attribute('DisplayName', display_name)
|
|
169
|
+
display_name
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# @return [String] The topic owner's ID.
|
|
173
|
+
def owner
|
|
174
|
+
to_h[:owner]
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# @return [Integer] Returns number of confirmed topic subscriptions.
|
|
178
|
+
def num_subscriptions_confirmed
|
|
179
|
+
to_h[:num_subscriptions_confirmed]
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
# @return [Integer] Returns number of pending topic subscriptions.
|
|
183
|
+
def num_subscriptions_pending
|
|
184
|
+
to_h[:num_subscriptions_pending]
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# @return [Integer] Returns number of deleted topic subscriptions.
|
|
188
|
+
def num_subscriptions_deleted
|
|
189
|
+
to_h[:num_subscriptions_deleted]
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
# @return [Policy] The topic's {Policy}.
|
|
193
|
+
def policy
|
|
194
|
+
to_h[:policy]
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
# Sets the topic's policy.
|
|
198
|
+
# @param [String,Policy] policy A JSON policy string, a {Policy} object
|
|
199
|
+
# or any other object that responds to #to_json with a valid
|
|
200
|
+
# policy.
|
|
201
|
+
# @return [nil]
|
|
202
|
+
def policy= policy
|
|
203
|
+
policy_json = policy.is_a?(String) ? policy : policy.to_json
|
|
204
|
+
set_attribute('Policy', policy_json)
|
|
205
|
+
nil
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
# @return [nil,String<JSON>] The delivery policy JSON string.
|
|
209
|
+
def delivery_policy_json
|
|
210
|
+
to_h[:delivery_policy_json]
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
# @return [String<JSON>] The effective delivery policy JSON string.
|
|
214
|
+
# into account system defaults.
|
|
215
|
+
def effective_delivery_policy_json
|
|
216
|
+
to_h[:effective_delivery_policy_json]
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
# Publishes a message to this SNS topic.
|
|
220
|
+
#
|
|
221
|
+
# topic.publish('a short message')
|
|
222
|
+
#
|
|
223
|
+
# You can pass a subject that is used when sending the message to
|
|
224
|
+
# email endpoints:
|
|
225
|
+
#
|
|
226
|
+
# topic.publish('message', :subject => 'SNS message subject')
|
|
227
|
+
#
|
|
228
|
+
# If you would like to pass a different message to various protocols
|
|
229
|
+
# (endpoint types) you can pass those as options:
|
|
230
|
+
#
|
|
231
|
+
# topic.publish('default message',
|
|
232
|
+
# :http => "message sent to http endpoints",
|
|
233
|
+
# :https => "message sent to https endpoints",
|
|
234
|
+
# :email => "message sent to email endpoints")
|
|
235
|
+
#
|
|
236
|
+
# The full list of acceptable protocols are listed below. The default
|
|
237
|
+
# message is sent to endpoints who's protocol was not listed.
|
|
238
|
+
#
|
|
239
|
+
# @param [String] default_message The message you want to send to the
|
|
240
|
+
# topic. Messages must be UTF-8 encoded strings at most 8 KB in size
|
|
241
|
+
# (8192 bytes, not 8192 characters).
|
|
242
|
+
# @param [Hash] options
|
|
243
|
+
# @option options [String] :subject Used as the "Subject" line when
|
|
244
|
+
# the message is delivered to email endpoints. Will also be
|
|
245
|
+
# included in the standard JSON messages delivered to other endpoints.
|
|
246
|
+
# * must be ASCII text that begins with a letter, number or
|
|
247
|
+
# punctuation mark
|
|
248
|
+
# * must not include line breaks or control characters
|
|
249
|
+
# * and must be less than 100 characters long
|
|
250
|
+
# @option options [String] :http - Message to use when sending to an
|
|
251
|
+
# HTTP endpoint.
|
|
252
|
+
# @option options [String] :https - Message to use when sending to an
|
|
253
|
+
# HTTPS endpoint.
|
|
254
|
+
# @option options [String] :email - Message to use when sending to an
|
|
255
|
+
# email endpoint.
|
|
256
|
+
# @option options [String] :email_json - Message to use when sending
|
|
257
|
+
# to an email json endpoint.
|
|
258
|
+
# @option options [String] :sqs - Message to use when sending to an
|
|
259
|
+
# SQS endpoint.
|
|
260
|
+
# @return [String] Returns the ID of the message that was sent.
|
|
261
|
+
def publish default_message, options = {}
|
|
262
|
+
|
|
263
|
+
message = { :default => default_message }
|
|
264
|
+
|
|
265
|
+
[:http, :https, :email, :email_json, :sqs].each do |protocol|
|
|
266
|
+
if options[protocol]
|
|
267
|
+
message[protocol.to_s.gsub(/_/, '-')] = options[protocol]
|
|
268
|
+
end
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
publish_opts = {}
|
|
272
|
+
publish_opts[:message] = message.to_json
|
|
273
|
+
publish_opts[:message_structure] = 'json'
|
|
274
|
+
publish_opts[:subject] = options[:subject] if options[:subject]
|
|
275
|
+
publish_opts[:topic_arn] = arn
|
|
276
|
+
|
|
277
|
+
response = client.publish(publish_opts)
|
|
278
|
+
|
|
279
|
+
response[:message_id]
|
|
280
|
+
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
# Deletes the topic.
|
|
284
|
+
# @return [nil]
|
|
285
|
+
def delete
|
|
286
|
+
client.delete_topic(:topic_arn => arn)
|
|
287
|
+
nil
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
# @return [Hash] Returns a hash of attributes about this topic,
|
|
291
|
+
# including:
|
|
292
|
+
#
|
|
293
|
+
# * +:arn+
|
|
294
|
+
# * +:name+
|
|
295
|
+
# * +:owner+
|
|
296
|
+
# * +:display_name+
|
|
297
|
+
# * +:policy+
|
|
298
|
+
# * +:num_subscriptions_confirmed+
|
|
299
|
+
# * +:num_subscriptions_pending+
|
|
300
|
+
# * +:num_subscriptions_deleted+
|
|
301
|
+
#
|
|
302
|
+
def to_h
|
|
303
|
+
attributes = client.get_topic_attributes(:topic_arn => arn).attributes
|
|
304
|
+
{
|
|
305
|
+
:arn => arn,
|
|
306
|
+
:name => name,
|
|
307
|
+
:owner => attributes['Owner'],
|
|
308
|
+
:display_name => attributes['DisplayName'] || name,
|
|
309
|
+
:policy => parse_policy(attributes['Policy']),
|
|
310
|
+
:num_subscriptions_confirmed => attributes['SubscriptionsConfirmed'].to_i,
|
|
311
|
+
:num_subscriptions_pending => attributes['SubscriptionsPending'].to_i,
|
|
312
|
+
:num_subscriptions_deleted => attributes['SubscriptionsDeleted'].to_i,
|
|
313
|
+
:delivery_policy_json => attributes['DeliveryPolicy'],
|
|
314
|
+
:effective_delivery_policy_json => attributes['EffectiveDeliveryPolicy'],
|
|
315
|
+
}
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
# @return [Boolean] Returns true if compared to another {Topic}
|
|
319
|
+
# with the same ARN.
|
|
320
|
+
def eql? other
|
|
321
|
+
other.kind_of?(Topic) and other.arn == arn
|
|
322
|
+
end
|
|
323
|
+
alias_method :==, :eql?
|
|
324
|
+
|
|
325
|
+
protected
|
|
326
|
+
def update_delivery_policy policy_json
|
|
327
|
+
set_attribute('DeliveryPolicy', policy_json)
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
protected
|
|
331
|
+
def parse_policy policy_json
|
|
332
|
+
if policy_json
|
|
333
|
+
policy = SNS::Policy.from_json(policy_json)
|
|
334
|
+
policy.extend(PolicyProxy)
|
|
335
|
+
policy.topic = self
|
|
336
|
+
policy
|
|
337
|
+
else
|
|
338
|
+
nil
|
|
339
|
+
end
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
# @private
|
|
343
|
+
protected
|
|
344
|
+
def set_attribute name, value
|
|
345
|
+
client.send(:set_topic_attributes, {
|
|
346
|
+
:topic_arn => arn,
|
|
347
|
+
:attribute_name => name,
|
|
348
|
+
:attribute_value => value,
|
|
349
|
+
})
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
# @private
|
|
353
|
+
module PolicyProxy
|
|
354
|
+
attr_accessor :topic
|
|
355
|
+
def change
|
|
356
|
+
yield(self)
|
|
357
|
+
topic.policy = self
|
|
358
|
+
end
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
# @private
|
|
362
|
+
protected
|
|
363
|
+
def endpoint_opts(endpoint, opts = {})
|
|
364
|
+
|
|
365
|
+
case
|
|
366
|
+
when endpoint.is_a?(SQS::Queue)
|
|
367
|
+
|
|
368
|
+
# auto add a policy to the queue to allow the topic
|
|
369
|
+
# to send the queue messages
|
|
370
|
+
unless opts[:update_policy] == false
|
|
371
|
+
policy = endpoint.policy || SQS::Policy.new
|
|
372
|
+
policy.allow(
|
|
373
|
+
:principal => :any,
|
|
374
|
+
:actions => [:send_message],
|
|
375
|
+
:resources => [endpoint]
|
|
376
|
+
).where(:source_arn).is(arn)
|
|
377
|
+
endpoint.policy = policy
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
{ :protocol => 'sqs', :endpoint => endpoint.arn }
|
|
381
|
+
|
|
382
|
+
when endpoint =~ /^arn:/
|
|
383
|
+
raise ArgumentError, "expected a queue ARN" unless
|
|
384
|
+
endpoint =~ /^arn:aws:sqs:/
|
|
385
|
+
{ :protocol => "sqs", :endpoint => endpoint }
|
|
386
|
+
when endpoint.kind_of?(URI)
|
|
387
|
+
{ :protocol => endpoint.scheme,
|
|
388
|
+
:endpoint => endpoint.to_s }
|
|
389
|
+
when endpoint =~ /^(https?):/
|
|
390
|
+
{ :protocol => $1, :endpoint => endpoint }
|
|
391
|
+
when endpoint.include?("@")
|
|
392
|
+
{ :protocol => opts[:json] ? "email-json" : "email",
|
|
393
|
+
:endpoint => endpoint }
|
|
394
|
+
when endpoint.gsub(/\D/,'') =~ /\d{11,15}/
|
|
395
|
+
{ :protocol => "sms", :endpoint => endpoint.gsub(/\D/,'') }
|
|
396
|
+
else
|
|
397
|
+
raise ArgumentError, "could not determine protocol for '#{endpoint}'"
|
|
398
|
+
end
|
|
399
|
+
end
|
|
400
|
+
|
|
401
|
+
end
|
|
402
|
+
end
|
|
403
|
+
end
|