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,128 @@
|
|
|
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 'net/http/connection_pool'
|
|
15
|
+
|
|
16
|
+
module AWS
|
|
17
|
+
module Core
|
|
18
|
+
module Http
|
|
19
|
+
|
|
20
|
+
# = NetHttpHandler
|
|
21
|
+
#
|
|
22
|
+
# This is the default HTTP handler for the aws-sdk gem. It uses
|
|
23
|
+
# Ruby's Net::HTTP to make requests. It uses persistent connections
|
|
24
|
+
# and a connection pool.
|
|
25
|
+
#
|
|
26
|
+
class NetHttpHandler
|
|
27
|
+
|
|
28
|
+
# @private
|
|
29
|
+
PASS_THROUGH_ERRORS = [
|
|
30
|
+
NoMethodError, FloatDomainError, TypeError, NotImplementedError,
|
|
31
|
+
SystemExit, Interrupt, SyntaxError, RangeError, NoMemoryError,
|
|
32
|
+
ArgumentError, ZeroDivisionError, LoadError, NameError,
|
|
33
|
+
LocalJumpError, SignalException, ScriptError,
|
|
34
|
+
SystemStackError, RegexpError, IndexError,
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
# (see Net::HTTP::ConnectionPool.new)
|
|
38
|
+
def initialize options = {}
|
|
39
|
+
@pool = Net::HTTP::ConnectionPool.new(options)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# @return [Net::HTTP::ConnectionPool]
|
|
43
|
+
attr_reader :pool
|
|
44
|
+
|
|
45
|
+
# Given a populated request object and an empty response object,
|
|
46
|
+
# this method will make the request and them populate the
|
|
47
|
+
# response.
|
|
48
|
+
# @param [Request] request
|
|
49
|
+
# @param [Response] response
|
|
50
|
+
# @return [nil]
|
|
51
|
+
def handle request, response, &read_block
|
|
52
|
+
|
|
53
|
+
options = {}
|
|
54
|
+
options[:port] = request.port
|
|
55
|
+
options[:ssl] = request.use_ssl?
|
|
56
|
+
options[:proxy_uri] = request.proxy_uri
|
|
57
|
+
options[:ssl_verify_peer] = request.ssl_verify_peer?
|
|
58
|
+
options[:ssl_ca_file] = request.ssl_ca_file if request.ssl_ca_file
|
|
59
|
+
options[:ssl_ca_path] = request.ssl_ca_path if request.ssl_ca_path
|
|
60
|
+
|
|
61
|
+
begin
|
|
62
|
+
|
|
63
|
+
connection = pool.connection_for(request.host, options)
|
|
64
|
+
connection.read_timeout = request.read_timeout
|
|
65
|
+
|
|
66
|
+
connection.request(build_net_http_request(request)) do |http_resp|
|
|
67
|
+
response.status = http_resp.code.to_i
|
|
68
|
+
response.headers = http_resp.to_hash
|
|
69
|
+
if block_given? and response.status < 300
|
|
70
|
+
http_resp.read_body(&read_block)
|
|
71
|
+
else
|
|
72
|
+
response.body = http_resp.read_body
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# The first rescue clause is required because Timeout::Error is
|
|
77
|
+
# a SignalException (in Ruby 1.8, not 1.9). Generally, SingalExceptions
|
|
78
|
+
# should not be retried, except for timeout errors.
|
|
79
|
+
rescue Timeout::Error => error
|
|
80
|
+
response.network_error = error
|
|
81
|
+
rescue *PASS_THROUGH_ERRORS => error
|
|
82
|
+
raise error
|
|
83
|
+
rescue Exception => error
|
|
84
|
+
response.network_error = error
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
nil
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
protected
|
|
92
|
+
|
|
93
|
+
# Given an AWS::Core::HttpRequest, this method translates
|
|
94
|
+
# it into a Net::HTTPRequest (Get, Put, Post, Head or Delete).
|
|
95
|
+
# @param [Request] request
|
|
96
|
+
# @return [Net::HTTPRequest]
|
|
97
|
+
def build_net_http_request request
|
|
98
|
+
|
|
99
|
+
# Net::HTTP adds a content-type header automatically unless its set
|
|
100
|
+
# and this messes with request signature signing. Also, it expects
|
|
101
|
+
# all header values to be strings (it call strip on them).
|
|
102
|
+
headers = { 'content-type' => '' }
|
|
103
|
+
request.headers.each_pair do |key,value|
|
|
104
|
+
headers[key] = value.to_s
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
request_class = case request.http_method
|
|
108
|
+
when 'GET' then Net::HTTP::Get
|
|
109
|
+
when 'PUT' then Net::HTTP::Put
|
|
110
|
+
when 'POST' then Net::HTTP::Post
|
|
111
|
+
when 'HEAD' then Net::HTTP::Head
|
|
112
|
+
when 'DELETE' then Net::HTTP::Delete
|
|
113
|
+
else
|
|
114
|
+
msg = "unsupported http method: #{request.http_method}"
|
|
115
|
+
raise ArgumentError, msg
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
net_http_req = request_class.new(request.uri, headers)
|
|
119
|
+
net_http_req.body_stream = request.body_stream
|
|
120
|
+
net_http_req
|
|
121
|
+
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
@@ -0,0 +1,263 @@
|
|
|
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
|
+
module Core
|
|
16
|
+
module Http
|
|
17
|
+
|
|
18
|
+
# Base class for all service reqeusts. This class describes
|
|
19
|
+
# a basic HTTP request, but will not make one. It is consumed
|
|
20
|
+
# by a HTTP handler class that sends the actual request
|
|
21
|
+
# and parses the actual response.
|
|
22
|
+
class Request
|
|
23
|
+
|
|
24
|
+
# Returns a new empty http request object.
|
|
25
|
+
def initialize
|
|
26
|
+
@default_read_timeout = 60
|
|
27
|
+
@http_method = 'POST'
|
|
28
|
+
@use_ssl = true
|
|
29
|
+
@headers = CaseInsensitiveHash.new
|
|
30
|
+
@uri = '/'
|
|
31
|
+
@params = []
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# @return [Integer] The number of seconds the service has to respond
|
|
35
|
+
# before a timeout error is raised on the request. Defaults to
|
|
36
|
+
# 60 seconds.
|
|
37
|
+
attr_accessor :default_read_timeout
|
|
38
|
+
|
|
39
|
+
# @return [String] hostname of the request
|
|
40
|
+
attr_accessor :host
|
|
41
|
+
|
|
42
|
+
# @return [Integer] Returns the port number this request will be
|
|
43
|
+
# made via (usually 443 or 80).
|
|
44
|
+
attr_accessor :port
|
|
45
|
+
|
|
46
|
+
# @return [String] Returns the HTTP request method (e.g. 'GET', 'PUT',
|
|
47
|
+
# 'POST', 'HEAD' or 'DELETE'). Defaults to 'POST'.
|
|
48
|
+
attr_accessor :http_method
|
|
49
|
+
|
|
50
|
+
# @return [CaseInsensitiveHash] request headers
|
|
51
|
+
attr_accessor :headers
|
|
52
|
+
|
|
53
|
+
# @return [String] Returns the request URI (path + querystring).
|
|
54
|
+
attr_accessor :uri
|
|
55
|
+
|
|
56
|
+
# @return [String] The region name this request is for. Only needs
|
|
57
|
+
# to be populated for requests against signature v4 endpoints.
|
|
58
|
+
attr_accessor :region
|
|
59
|
+
|
|
60
|
+
# @return [String] Returns the AWS access key ID used to authorize the
|
|
61
|
+
# request.
|
|
62
|
+
# @private
|
|
63
|
+
attr_accessor :access_key_id
|
|
64
|
+
|
|
65
|
+
# @return [Array<Param>] Returns an array of request params. Requests
|
|
66
|
+
# that use signature version 2 add params to the request and then
|
|
67
|
+
# sign those before building the {#body}. Normally the {#body}
|
|
68
|
+
# should be set directly with the HTTP payload.
|
|
69
|
+
# @private
|
|
70
|
+
attr_accessor :params
|
|
71
|
+
|
|
72
|
+
# @return [String] The name of the service for Signature v4 signing.
|
|
73
|
+
# This does not always match the ruby name (e.g.
|
|
74
|
+
# simple_email_service and ses do not match).
|
|
75
|
+
attr_accessor :service_ruby_name
|
|
76
|
+
|
|
77
|
+
# @return [nil, URI] The URI to the proxy server requests are
|
|
78
|
+
# sent through if configured. Returns nil if there is no proxy.
|
|
79
|
+
attr_accessor :proxy_uri
|
|
80
|
+
|
|
81
|
+
# @return [Integer] The number of seconds the service has to respond
|
|
82
|
+
# before a timeout error is raised on the request. Defaults to
|
|
83
|
+
# 60 seconds.
|
|
84
|
+
attr_accessor :read_timeout
|
|
85
|
+
|
|
86
|
+
# @return [Boolean] Returns +true+ if this request should be made
|
|
87
|
+
# with SSL enabled.
|
|
88
|
+
attr_accessor :use_ssl
|
|
89
|
+
|
|
90
|
+
alias_method :use_ssl?, :use_ssl
|
|
91
|
+
|
|
92
|
+
# @return [Boolean] Returns +true+ if the client should verify
|
|
93
|
+
# the peer certificate.
|
|
94
|
+
attr_accessor :ssl_verify_peer
|
|
95
|
+
|
|
96
|
+
alias_method :ssl_verify_peer?, :ssl_verify_peer
|
|
97
|
+
|
|
98
|
+
# @return [String] Returns the path to a bundle of CA certs in PEM
|
|
99
|
+
# format; the HTTP handler should use this to verify all HTTPS
|
|
100
|
+
# requests if {#ssl_verify_peer?} is true.
|
|
101
|
+
attr_accessor :ssl_ca_file
|
|
102
|
+
|
|
103
|
+
# @return [String] Returns the path to a directory of CA certs.
|
|
104
|
+
# The HTTP handler should use these to verify all HTTPS
|
|
105
|
+
# requests if {#ssl_verify_peer?} is true.
|
|
106
|
+
attr_accessor :ssl_ca_path
|
|
107
|
+
|
|
108
|
+
# @return [Integer] Returns the port the request will be made over.
|
|
109
|
+
# Defaults to 443 for SSL requests and 80 for non-SSL requests.
|
|
110
|
+
def port
|
|
111
|
+
@port || (use_ssl? ? 443 : 80)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Some subclasses override this method to obseve requirements
|
|
115
|
+
# set by the services (e.q. SimpleWorlfow and SQS have special
|
|
116
|
+
# long-pulling requirements and require special read timeouts).
|
|
117
|
+
# @private
|
|
118
|
+
def read_timeout
|
|
119
|
+
default_read_timeout
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# @return [String] Returns the HTTP request path.
|
|
123
|
+
def path
|
|
124
|
+
uri.split(/\?/)[0]
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# @return [String] Returns the HTTP request querystring.
|
|
128
|
+
def querystring
|
|
129
|
+
uri.split(/\?/)[1]
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# Adds a request param.
|
|
133
|
+
#
|
|
134
|
+
# @overload add_param(param_name, param_value = nil)
|
|
135
|
+
# Add a param (name/value)
|
|
136
|
+
# @param [String] param_name
|
|
137
|
+
# @param [String] param_value Leave blank for sub resources
|
|
138
|
+
#
|
|
139
|
+
# @overload add_param(param_obj)
|
|
140
|
+
# Add a param (object)
|
|
141
|
+
# @param [Param] param_obj
|
|
142
|
+
#
|
|
143
|
+
# @private
|
|
144
|
+
def add_param name_or_param, value = nil
|
|
145
|
+
if name_or_param.kind_of?(Param)
|
|
146
|
+
@params << name_or_param
|
|
147
|
+
else
|
|
148
|
+
@params << Param.new(name_or_param, value)
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# @private
|
|
153
|
+
# @return [String,nil] Returns the url encoded request params. If there
|
|
154
|
+
# are no params, then nil is returned.
|
|
155
|
+
def url_encoded_params
|
|
156
|
+
params.empty? ? nil : params.sort.collect(&:encoded).join('&')
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
# @param [String] body
|
|
160
|
+
def body= body
|
|
161
|
+
@body = body
|
|
162
|
+
if body
|
|
163
|
+
headers['content-length'] = body.bytesize if body
|
|
164
|
+
else
|
|
165
|
+
headers.delete('content-length')
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
# @note Calling #body on a request with a #body_stream
|
|
170
|
+
# will cause the entire stream to be read into memory.
|
|
171
|
+
# @return [String,nil] Returns the request body.
|
|
172
|
+
def body
|
|
173
|
+
if @body
|
|
174
|
+
@body
|
|
175
|
+
elsif @body_stream
|
|
176
|
+
@body = @body_stream.read
|
|
177
|
+
if @body_stream.respond_to?(:rewind)
|
|
178
|
+
@body_stream.rewind
|
|
179
|
+
else
|
|
180
|
+
@body_stream = StringIO.new(@body)
|
|
181
|
+
end
|
|
182
|
+
@body
|
|
183
|
+
else
|
|
184
|
+
nil
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
# Sets the request body as an IO object that will be streamed.
|
|
189
|
+
# @note You must also set the #headers['content-length']
|
|
190
|
+
# @param [IO] stream An object that responds to #read and #eof.
|
|
191
|
+
def body_stream= stream
|
|
192
|
+
@body_stream = stream
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# @return [IO,nil]
|
|
196
|
+
def body_stream
|
|
197
|
+
if @body_stream
|
|
198
|
+
@body_stream
|
|
199
|
+
elsif @body
|
|
200
|
+
StringIO.new(@body)
|
|
201
|
+
else
|
|
202
|
+
nil
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
# @private
|
|
207
|
+
class CaseInsensitiveHash < Hash
|
|
208
|
+
|
|
209
|
+
def []= key, value
|
|
210
|
+
super(key.to_s.downcase, value)
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
def [] key
|
|
214
|
+
super(key.to_s.downcase)
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
def has_key?(key)
|
|
218
|
+
super(key.to_s.downcase)
|
|
219
|
+
end
|
|
220
|
+
alias_method :key?, :has_key?
|
|
221
|
+
alias_method :include?, :has_key?
|
|
222
|
+
alias_method :member?, :has_key?
|
|
223
|
+
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
# Represents a single request paramater. Some services accept this
|
|
227
|
+
# in a form encoded body string, others as query parameters.
|
|
228
|
+
# It is up to each service's Request class to determine how to
|
|
229
|
+
# consume these params.
|
|
230
|
+
# @private
|
|
231
|
+
class Param
|
|
232
|
+
|
|
233
|
+
include UriEscape
|
|
234
|
+
|
|
235
|
+
attr_accessor :name, :value
|
|
236
|
+
|
|
237
|
+
def initialize name, value = nil
|
|
238
|
+
@name = name
|
|
239
|
+
@value = value
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
def <=> other
|
|
243
|
+
name <=> other.name
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def to_s
|
|
247
|
+
value ? "#{name}=#{value}" : name
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
def ==(other)
|
|
251
|
+
other.kind_of?(Param) and to_s == other.to_s
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
def encoded
|
|
255
|
+
value ? "#{escape(name)}=#{escape(value)}" : escape(name)
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
end
|
|
261
|
+
end
|
|
262
|
+
end
|
|
263
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
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
|
+
module Core
|
|
16
|
+
module Http
|
|
17
|
+
|
|
18
|
+
# Represents the http response from a service request.
|
|
19
|
+
#
|
|
20
|
+
# Responses have:
|
|
21
|
+
#
|
|
22
|
+
# * status (200, 404, 500, etc)
|
|
23
|
+
# * headers (hash of response headers)
|
|
24
|
+
# * body (the response body)
|
|
25
|
+
class Response
|
|
26
|
+
|
|
27
|
+
# @return [Integer] Returns the http response status code.
|
|
28
|
+
attr_accessor :status
|
|
29
|
+
|
|
30
|
+
# @return [Hash] ({}) Returns the HTTP response headers.
|
|
31
|
+
attr_accessor :headers
|
|
32
|
+
|
|
33
|
+
# @return [String,nil] Returns the HTTP response body.
|
|
34
|
+
attr_accessor :body
|
|
35
|
+
|
|
36
|
+
# @return [Exception,nil]
|
|
37
|
+
attr_accessor :network_error
|
|
38
|
+
|
|
39
|
+
# @return [Boolean] Returns +true+ if the request could not be made
|
|
40
|
+
# because of a networking issue (including timeouts).
|
|
41
|
+
def network_error?
|
|
42
|
+
@network_error ? true : false
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# The #network_error attribute was previously #timeout, aliasing
|
|
46
|
+
# for backwards compatability
|
|
47
|
+
alias_method :timeout=, :network_error=
|
|
48
|
+
|
|
49
|
+
# @param [Hash] options
|
|
50
|
+
# @option options [Integer] :status (200) HTTP status code
|
|
51
|
+
# @option options [Hash] :headers ({}) HTTP response headers
|
|
52
|
+
# @option options [String] :body ('') HTTP response body
|
|
53
|
+
def initialize options = {}, &block
|
|
54
|
+
@status = options[:status] || 200
|
|
55
|
+
@headers = options[:headers] || {}
|
|
56
|
+
@body = options[:body]
|
|
57
|
+
yield(self) if block_given?
|
|
58
|
+
self
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Returns the header value with the given name.
|
|
62
|
+
#
|
|
63
|
+
# The value is matched case-insensitively so if the headers hash
|
|
64
|
+
# contains a key like 'Date' and you request the value for
|
|
65
|
+
# 'date' the 'Date' value will be returned.
|
|
66
|
+
#
|
|
67
|
+
# @param [String,Symbol] name The name of the header to fetch a value for.
|
|
68
|
+
# @return [String,nil] The value of the given header
|
|
69
|
+
def header name
|
|
70
|
+
headers.each_pair do |header_name, header_value|
|
|
71
|
+
if header_name.downcase == name.to_s.downcase
|
|
72
|
+
return header_value.is_a?(Array) ? header_value.first : header_value
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
nil
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|