aws-sdk 1.8.5 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.yardopts +1 -0
- data/README.rdoc +8 -0
- data/lib/aws-sdk.rb +39 -35
- data/lib/aws/api_config/CloudFront-2012-07-01.yml +2398 -0
- data/lib/aws/api_config/DirectConnect-2012-10-25.yml +475 -0
- data/lib/aws/api_config/DynamoDB-2011-12-05.yml +8 -0
- data/lib/aws/api_config/DynamoDB-2012-08-10.yml +1516 -0
- data/lib/aws/api_config/OpsWorks-2013-02-18.yml +2 -2
- data/lib/aws/auto_scaling.rb +44 -44
- data/lib/aws/auto_scaling/activity.rb +1 -1
- data/lib/aws/auto_scaling/activity_collection.rb +14 -15
- data/lib/aws/auto_scaling/client.rb +277 -277
- data/lib/aws/auto_scaling/config.rb +1 -1
- data/lib/aws/auto_scaling/group.rb +35 -36
- data/lib/aws/auto_scaling/group_collection.rb +10 -10
- data/lib/aws/auto_scaling/group_options.rb +19 -19
- data/lib/aws/auto_scaling/instance.rb +27 -27
- data/lib/aws/auto_scaling/instance_collection.rb +10 -10
- data/lib/aws/auto_scaling/launch_configuration.rb +3 -3
- data/lib/aws/auto_scaling/launch_configuration_collection.rb +1 -1
- data/lib/aws/auto_scaling/notification_configuration.rb +2 -2
- data/lib/aws/auto_scaling/notification_configuration_collection.rb +37 -38
- data/lib/aws/auto_scaling/scaling_policy.rb +3 -3
- data/lib/aws/auto_scaling/scaling_policy_collection.rb +6 -6
- data/lib/aws/auto_scaling/scaling_policy_options.rb +8 -7
- data/lib/aws/auto_scaling/scheduled_action.rb +3 -3
- data/lib/aws/auto_scaling/scheduled_action_collection.rb +28 -28
- data/lib/aws/auto_scaling/tag_collection.rb +30 -28
- data/lib/aws/cloud_formation.rb +95 -94
- data/lib/aws/cloud_formation/client.rb +136 -133
- data/lib/aws/cloud_formation/config.rb +1 -1
- data/lib/aws/cloud_formation/stack.rb +37 -37
- data/lib/aws/cloud_formation/stack_collection.rb +28 -27
- data/lib/aws/cloud_formation/stack_event.rb +9 -11
- data/lib/aws/cloud_formation/stack_output.rb +1 -1
- data/lib/aws/cloud_formation/stack_resource.rb +6 -6
- data/lib/aws/cloud_formation/stack_resource_collection.rb +11 -12
- data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +11 -11
- data/lib/aws/cloud_formation/stack_summary_collection.rb +39 -39
- data/lib/aws/cloud_front.rb +21 -21
- data/lib/aws/cloud_front/client.rb +853 -652
- data/lib/aws/cloud_front/request.rb +3 -0
- data/lib/aws/cloud_search.rb +22 -22
- data/lib/aws/cloud_search/client.rb +322 -315
- data/lib/aws/cloud_search/config.rb +1 -1
- data/lib/aws/cloud_watch.rb +39 -39
- data/lib/aws/cloud_watch/alarm.rb +55 -37
- data/lib/aws/cloud_watch/alarm_collection.rb +18 -18
- data/lib/aws/cloud_watch/alarm_history_item_collection.rb +2 -2
- data/lib/aws/cloud_watch/client.rb +360 -146
- data/lib/aws/cloud_watch/config.rb +1 -1
- data/lib/aws/cloud_watch/metric.rb +15 -15
- data/lib/aws/cloud_watch/metric_alarm_collection.rb +17 -17
- data/lib/aws/cloud_watch/metric_collection.rb +16 -16
- data/lib/aws/cloud_watch/metric_statistics.rb +11 -11
- data/lib/aws/core.rb +243 -225
- data/lib/aws/core/async_handle.rb +13 -13
- data/lib/aws/core/cacheable.rb +14 -15
- data/lib/aws/core/client.rb +40 -15
- data/lib/aws/core/collection.rb +42 -46
- data/lib/aws/core/collection/with_limit_and_next_token.rb +1 -1
- data/lib/aws/core/collection/with_next_token.rb +1 -1
- data/lib/aws/core/configuration.rb +97 -133
- data/lib/aws/core/credential_providers.rb +16 -16
- data/lib/aws/core/data.rb +23 -23
- data/lib/aws/core/http/connection_pool.rb +348 -0
- data/lib/aws/core/http/net_http_handler.rb +17 -26
- data/lib/aws/core/http/patch.rb +102 -0
- data/lib/aws/core/http/request.rb +13 -19
- data/lib/aws/core/http/response.rb +2 -2
- data/lib/aws/core/lazy_error_classes.rb +17 -17
- data/lib/aws/core/log_formatter.rb +70 -104
- data/lib/aws/core/options/json_serializer.rb +1 -1
- data/lib/aws/core/options/validator.rb +4 -4
- data/lib/aws/core/page_result.rb +8 -8
- data/lib/aws/core/policy.rb +49 -49
- data/lib/aws/core/region.rb +72 -0
- data/lib/aws/core/region_collection.rb +106 -0
- data/lib/aws/core/resource.rb +5 -5
- data/lib/aws/core/response.rb +20 -17
- data/lib/aws/core/rest_request_builder.rb +4 -4
- data/lib/aws/core/service_interface.rb +24 -2
- data/lib/aws/core/signature/version_3.rb +2 -2
- data/lib/aws/core/uri_escape.rb +1 -1
- data/lib/aws/core/xml/frame_stack.rb +1 -1
- data/lib/aws/core/xml/grammar.rb +3 -4
- data/lib/aws/core/xml/sax_handlers/libxml.rb +2 -2
- data/lib/aws/core/xml/sax_handlers/nokogiri.rb +3 -3
- data/lib/aws/core/xml/sax_handlers/rexml.rb +5 -5
- data/lib/aws/core/xml/stub.rb +9 -9
- data/lib/aws/data_pipeline.rb +21 -21
- data/lib/aws/data_pipeline/client.rb +189 -133
- data/lib/aws/data_pipeline/config.rb +1 -1
- data/lib/aws/direct_connect.rb +74 -0
- data/lib/aws/direct_connect/client.rb +253 -0
- data/lib/aws/direct_connect/config.rb +18 -0
- data/lib/aws/direct_connect/errors.rb +22 -0
- data/lib/aws/direct_connect/request.rb +27 -0
- data/lib/aws/dynamo_db.rb +71 -69
- data/lib/aws/dynamo_db/attribute_collection.rb +53 -58
- data/lib/aws/dynamo_db/batch_get.rb +23 -23
- data/lib/aws/dynamo_db/batch_write.rb +43 -43
- data/lib/aws/dynamo_db/binary.rb +9 -9
- data/lib/aws/dynamo_db/client.rb +494 -509
- data/lib/aws/dynamo_db/client_base.rb +91 -0
- data/lib/aws/dynamo_db/client_v2.rb +825 -0
- data/lib/aws/dynamo_db/config.rb +1 -1
- data/lib/aws/dynamo_db/item.rb +10 -10
- data/lib/aws/dynamo_db/item_collection.rb +75 -75
- data/lib/aws/dynamo_db/table.rb +85 -85
- data/lib/aws/dynamo_db/table_collection.rb +13 -13
- data/lib/aws/ec2.rb +132 -142
- data/lib/aws/ec2/attachment.rb +31 -36
- data/lib/aws/ec2/attachment_collection.rb +1 -1
- data/lib/aws/ec2/availability_zone.rb +4 -4
- data/lib/aws/ec2/client.rb +2272 -2125
- data/lib/aws/ec2/config.rb +1 -1
- data/lib/aws/ec2/customer_gateway.rb +6 -6
- data/lib/aws/ec2/customer_gateway_collection.rb +6 -6
- data/lib/aws/ec2/dhcp_options.rb +3 -3
- data/lib/aws/ec2/dhcp_options_collection.rb +10 -10
- data/lib/aws/ec2/elastic_ip.rb +15 -15
- data/lib/aws/ec2/elastic_ip_collection.rb +11 -15
- data/lib/aws/ec2/export_task.rb +4 -4
- data/lib/aws/ec2/export_task_collection.rb +11 -11
- data/lib/aws/ec2/filtered_collection.rb +6 -8
- data/lib/aws/ec2/image.rb +46 -40
- data/lib/aws/ec2/image_collection.rb +44 -52
- data/lib/aws/ec2/instance.rb +64 -62
- data/lib/aws/ec2/instance_collection.rb +47 -50
- data/lib/aws/ec2/internet_gateway.rb +6 -6
- data/lib/aws/ec2/internet_gateway/attachment.rb +13 -13
- data/lib/aws/ec2/internet_gateway_collection.rb +3 -3
- data/lib/aws/ec2/key_pair.rb +3 -3
- data/lib/aws/ec2/key_pair_collection.rb +12 -12
- data/lib/aws/ec2/network_acl.rb +39 -39
- data/lib/aws/ec2/network_acl/association.rb +2 -2
- data/lib/aws/ec2/network_acl/entry.rb +22 -22
- data/lib/aws/ec2/network_acl_collection.rb +2 -2
- data/lib/aws/ec2/network_interface.rb +13 -4
- data/lib/aws/ec2/network_interface/attachment.rb +3 -3
- data/lib/aws/ec2/network_interface_collection.rb +5 -5
- data/lib/aws/ec2/permission_collection.rb +1 -1
- data/lib/aws/ec2/region.rb +6 -6
- data/lib/aws/ec2/region_collection.rb +1 -1
- data/lib/aws/ec2/reserved_instances_collection.rb +2 -2
- data/lib/aws/ec2/reserved_instances_offering_collection.rb +2 -2
- data/lib/aws/ec2/resource_tag_collection.rb +5 -5
- data/lib/aws/ec2/route_table.rb +14 -14
- data/lib/aws/ec2/route_table/association.rb +22 -22
- data/lib/aws/ec2/route_table/route.rb +8 -8
- data/lib/aws/ec2/route_table_collection.rb +3 -3
- data/lib/aws/ec2/security_group.rb +39 -41
- data/lib/aws/ec2/security_group_collection.rb +19 -21
- data/lib/aws/ec2/snapshot.rb +3 -3
- data/lib/aws/ec2/snapshot_collection.rb +11 -12
- data/lib/aws/ec2/subnet.rb +2 -2
- data/lib/aws/ec2/subnet_collection.rb +17 -17
- data/lib/aws/ec2/tag_collection.rb +1 -1
- data/lib/aws/ec2/tagged_collection.rb +7 -7
- data/lib/aws/ec2/tagged_item.rb +10 -10
- data/lib/aws/ec2/volume.rb +16 -16
- data/lib/aws/ec2/volume_collection.rb +9 -12
- data/lib/aws/ec2/vpc.rb +6 -6
- data/lib/aws/ec2/vpc_collection.rb +10 -10
- data/lib/aws/ec2/vpn_connection.rb +4 -4
- data/lib/aws/ec2/vpn_connection/telemetry.rb +1 -1
- data/lib/aws/ec2/vpn_connection_collection.rb +6 -6
- data/lib/aws/ec2/vpn_gateway.rb +2 -2
- data/lib/aws/ec2/vpn_gateway_collection.rb +5 -5
- data/lib/aws/elastic_beanstalk.rb +12 -12
- data/lib/aws/elastic_beanstalk/client.rb +376 -368
- data/lib/aws/elastic_beanstalk/config.rb +1 -1
- data/lib/aws/elastic_transcoder.rb +5 -5
- data/lib/aws/elastic_transcoder/client.rb +283 -283
- data/lib/aws/elastic_transcoder/config.rb +1 -1
- data/lib/aws/elasticache.rb +12 -12
- data/lib/aws/elasticache/client.rb +484 -479
- data/lib/aws/elasticache/config.rb +1 -1
- data/lib/aws/elb.rb +23 -23
- data/lib/aws/elb/availability_zone_collection.rb +34 -34
- data/lib/aws/elb/backend_server_policy_collection.rb +24 -24
- data/lib/aws/elb/client.rb +153 -153
- data/lib/aws/elb/config.rb +1 -1
- data/lib/aws/elb/errors.rb +1 -1
- data/lib/aws/elb/instance_collection.rb +20 -25
- data/lib/aws/elb/listener.rb +3 -3
- data/lib/aws/elb/listener_collection.rb +8 -8
- data/lib/aws/elb/load_balancer.rb +15 -16
- data/lib/aws/elb/load_balancer_collection.rb +36 -24
- data/lib/aws/elb/load_balancer_policy.rb +1 -1
- data/lib/aws/elb/load_balancer_policy_collection.rb +5 -5
- data/lib/aws/emr.rb +28 -26
- data/lib/aws/emr/client.rb +165 -149
- data/lib/aws/emr/config.rb +1 -1
- data/lib/aws/emr/instance_group.rb +1 -1
- data/lib/aws/emr/instance_group_collection.rb +1 -1
- data/lib/aws/emr/job_flow.rb +27 -26
- data/lib/aws/emr/job_flow_collection.rb +34 -34
- data/lib/aws/errors.rb +7 -7
- data/lib/aws/glacier.rb +21 -21
- data/lib/aws/glacier/archive_collection.rb +2 -2
- data/lib/aws/glacier/client.rb +139 -140
- data/lib/aws/glacier/config.rb +1 -1
- data/lib/aws/glacier/vault.rb +2 -2
- data/lib/aws/glacier/vault_collection.rb +1 -1
- data/lib/aws/iam.rb +133 -144
- data/lib/aws/iam/access_key.rb +17 -17
- data/lib/aws/iam/access_key_collection.rb +22 -22
- data/lib/aws/iam/account_alias_collection.rb +2 -2
- data/lib/aws/iam/client.rb +429 -420
- data/lib/aws/iam/collection.rb +1 -1
- data/lib/aws/iam/config.rb +2 -2
- data/lib/aws/iam/group.rb +8 -8
- data/lib/aws/iam/group_collection.rb +16 -16
- data/lib/aws/iam/group_policy_collection.rb +6 -6
- data/lib/aws/iam/group_user_collection.rb +3 -3
- data/lib/aws/iam/mfa_device.rb +1 -1
- data/lib/aws/iam/mfa_device_collection.rb +9 -9
- data/lib/aws/iam/policy_collection.rb +4 -4
- data/lib/aws/iam/resource.rb +2 -2
- data/lib/aws/iam/server_certificate.rb +1 -1
- data/lib/aws/iam/server_certificate_collection.rb +15 -15
- data/lib/aws/iam/signing_certificate.rb +29 -29
- data/lib/aws/iam/signing_certificate_collection.rb +23 -23
- data/lib/aws/iam/user.rb +33 -38
- data/lib/aws/iam/user_collection.rb +27 -27
- data/lib/aws/iam/user_group_collection.rb +3 -3
- data/lib/aws/iam/user_policy_collection.rb +6 -6
- data/lib/aws/iam/virtual_mfa_device.rb +12 -12
- data/lib/aws/iam/virtual_mfa_device_collection.rb +4 -4
- data/lib/aws/import_export.rb +22 -21
- data/lib/aws/import_export/client.rb +47 -43
- data/lib/aws/ops_works.rb +5 -5
- data/lib/aws/ops_works/client.rb +484 -438
- data/lib/aws/ops_works/config.rb +1 -1
- data/lib/aws/rails.rb +34 -34
- data/lib/aws/rds.rb +18 -18
- data/lib/aws/rds/client.rb +1286 -1277
- data/lib/aws/rds/config.rb +1 -1
- data/lib/aws/rds/db_instance.rb +15 -4
- data/lib/aws/rds/db_snapshot.rb +1 -1
- data/lib/aws/record.rb +50 -24
- data/lib/aws/record/abstract_base.rb +52 -60
- data/lib/aws/record/attributes.rb +79 -79
- data/lib/aws/record/conversion.rb +1 -1
- data/lib/aws/record/dirty_tracking.rb +69 -67
- data/lib/aws/record/errors.rb +21 -21
- data/lib/aws/record/exceptions.rb +2 -2
- data/lib/aws/record/hash_model.rb +20 -21
- data/lib/aws/record/hash_model/attributes.rb +13 -15
- data/lib/aws/record/hash_model/finder_methods.rb +46 -46
- data/lib/aws/record/hash_model/scope.rb +31 -31
- data/lib/aws/record/model.rb +136 -136
- data/lib/aws/record/model/attributes.rb +57 -59
- data/lib/aws/record/model/finder_methods.rb +67 -67
- data/lib/aws/record/model/scope.rb +48 -49
- data/lib/aws/record/naming.rb +1 -1
- data/lib/aws/record/scope.rb +23 -19
- data/lib/aws/record/validations.rb +253 -271
- data/lib/aws/record/validator.rb +3 -3
- data/lib/aws/record/validators/acceptance.rb +1 -3
- data/lib/aws/record/validators/block.rb +1 -3
- data/lib/aws/record/validators/confirmation.rb +1 -3
- data/lib/aws/record/validators/count.rb +2 -4
- data/lib/aws/record/validators/exclusion.rb +2 -4
- data/lib/aws/record/validators/format.rb +2 -4
- data/lib/aws/record/validators/inclusion.rb +1 -3
- data/lib/aws/record/validators/length.rb +5 -7
- data/lib/aws/record/validators/method.rb +1 -3
- data/lib/aws/record/validators/numericality.rb +6 -8
- data/lib/aws/record/validators/presence.rb +1 -3
- data/lib/aws/redshift.rb +14 -14
- data/lib/aws/redshift/client.rb +596 -592
- data/lib/aws/redshift/config.rb +1 -1
- data/lib/aws/route_53.rb +30 -30
- data/lib/aws/route_53/change_batch.rb +7 -7
- data/lib/aws/route_53/client.rb +188 -152
- data/lib/aws/route_53/hosted_zone.rb +4 -4
- data/lib/aws/route_53/hosted_zone_collection.rb +7 -7
- data/lib/aws/route_53/resource_record_set.rb +10 -10
- data/lib/aws/route_53/resource_record_set_collection.rb +6 -6
- data/lib/aws/s3.rb +79 -79
- data/lib/aws/s3/access_control_list.rb +44 -36
- data/lib/aws/s3/acl_options.rb +51 -51
- data/lib/aws/s3/bucket.rb +146 -146
- data/lib/aws/s3/bucket_collection.rb +21 -21
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +81 -82
- data/lib/aws/s3/bucket_tag_collection.rb +4 -2
- data/lib/aws/s3/cipher_io.rb +5 -4
- data/lib/aws/s3/client.rb +89 -84
- data/lib/aws/s3/client/xml.rb +1 -1
- data/lib/aws/s3/config.rb +7 -1
- data/lib/aws/s3/cors_rule.rb +2 -0
- data/lib/aws/s3/cors_rule_collection.rb +42 -40
- data/lib/aws/s3/data_options.rb +16 -11
- data/lib/aws/s3/encryption_utils.rb +2 -2
- data/lib/aws/s3/errors.rb +7 -7
- data/lib/aws/s3/multipart_upload.rb +30 -33
- data/lib/aws/s3/multipart_upload_collection.rb +8 -6
- data/lib/aws/s3/object_collection.rb +35 -35
- data/lib/aws/s3/object_metadata.rb +6 -6
- data/lib/aws/s3/object_version.rb +4 -4
- data/lib/aws/s3/object_version_collection.rb +15 -15
- data/lib/aws/s3/policy.rb +2 -2
- data/lib/aws/s3/prefixed_collection.rb +9 -5
- data/lib/aws/s3/presigned_post.rb +39 -37
- data/lib/aws/s3/request.rb +11 -11
- data/lib/aws/s3/s3_object.rb +210 -200
- data/lib/aws/s3/tree.rb +25 -27
- data/lib/aws/s3/tree/child_collection.rb +3 -3
- data/lib/aws/s3/tree/leaf_node.rb +2 -2
- data/lib/aws/s3/tree/parent.rb +1 -1
- data/lib/aws/s3/website_configuration.rb +13 -13
- data/lib/aws/simple_db.rb +83 -83
- data/lib/aws/simple_db/attribute.rb +9 -7
- data/lib/aws/simple_db/attribute_collection.rb +22 -13
- data/lib/aws/simple_db/client.rb +107 -107
- data/lib/aws/simple_db/config.rb +7 -1
- data/lib/aws/simple_db/consistent_read_option.rb +5 -5
- data/lib/aws/simple_db/domain.rb +4 -2
- data/lib/aws/simple_db/domain_collection.rb +4 -4
- data/lib/aws/simple_db/domain_metadata.rb +5 -5
- data/lib/aws/simple_db/errors.rb +9 -9
- data/lib/aws/simple_db/item.rb +5 -5
- data/lib/aws/simple_db/item_collection.rb +83 -81
- data/lib/aws/simple_db/item_data.rb +4 -4
- data/lib/aws/simple_db/put_attributes.rb +3 -3
- data/lib/aws/simple_email_service.rb +140 -140
- data/lib/aws/simple_email_service/client.rb +82 -76
- data/lib/aws/simple_email_service/config.rb +1 -2
- data/lib/aws/simple_email_service/email_address_collection.rb +3 -3
- data/lib/aws/simple_email_service/identity.rb +8 -8
- data/lib/aws/simple_email_service/quotas.rb +8 -6
- data/lib/aws/simple_workflow.rb +106 -106
- data/lib/aws/simple_workflow/activity_task.rb +15 -22
- data/lib/aws/simple_workflow/activity_task_collection.rb +15 -15
- data/lib/aws/simple_workflow/activity_type.rb +23 -23
- data/lib/aws/simple_workflow/activity_type_collection.rb +23 -23
- data/lib/aws/simple_workflow/client.rb +1004 -956
- data/lib/aws/simple_workflow/config.rb +1 -1
- data/lib/aws/simple_workflow/count.rb +5 -5
- data/lib/aws/simple_workflow/decision_task.rb +129 -129
- data/lib/aws/simple_workflow/decision_task_collection.rb +59 -59
- data/lib/aws/simple_workflow/domain.rb +11 -11
- data/lib/aws/simple_workflow/domain_collection.rb +26 -26
- data/lib/aws/simple_workflow/history_event.rb +32 -32
- data/lib/aws/simple_workflow/history_event_collection.rb +3 -3
- data/lib/aws/simple_workflow/option_formatters.rb +5 -5
- data/lib/aws/simple_workflow/request.rb +1 -1
- data/lib/aws/simple_workflow/resource.rb +1 -1
- data/lib/aws/simple_workflow/type.rb +8 -8
- data/lib/aws/simple_workflow/type_collection.rb +15 -15
- data/lib/aws/simple_workflow/workflow_execution.rb +70 -72
- data/lib/aws/simple_workflow/workflow_execution_collection.rb +130 -130
- data/lib/aws/simple_workflow/workflow_type.rb +27 -25
- data/lib/aws/simple_workflow/workflow_type_collection.rb +20 -20
- data/lib/aws/sns.rb +25 -25
- data/lib/aws/sns/client.rb +55 -55
- data/lib/aws/sns/config.rb +1 -1
- data/lib/aws/sns/policy.rb +1 -1
- data/lib/aws/sns/subscription.rb +7 -7
- data/lib/aws/sns/subscription_collection.rb +5 -5
- data/lib/aws/sns/topic.rb +49 -49
- data/lib/aws/sns/topic_collection.rb +2 -2
- data/lib/aws/sns/topic_subscription_collection.rb +5 -5
- data/lib/aws/sqs.rb +20 -20
- data/lib/aws/sqs/client.rb +78 -78
- data/lib/aws/sqs/config.rb +1 -1
- data/lib/aws/sqs/errors.rb +12 -12
- data/lib/aws/sqs/queue.rb +66 -67
- data/lib/aws/sqs/queue_collection.rb +16 -8
- data/lib/aws/sqs/received_message.rb +7 -6
- data/lib/aws/storage_gateway.rb +21 -21
- data/lib/aws/storage_gateway/client.rb +269 -202
- data/lib/aws/storage_gateway/config.rb +1 -1
- data/lib/aws/sts.rb +10 -8
- data/lib/aws/sts/client.rb +35 -35
- data/lib/aws/sts/session.rb +3 -3
- data/lib/aws/version.rb +1 -2
- metadata +23 -21
- data/lib/aws/core/autoloader.rb +0 -64
- data/lib/net/http/connection_pool.rb +0 -226
- data/lib/net/http/connection_pool/connection.rb +0 -189
- data/lib/net/http/connection_pool/session.rb +0 -126
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
# Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
4
|
-
# may not use this file except in compliance with the License. A copy of
|
|
5
|
-
# the License is located at
|
|
6
|
-
#
|
|
7
|
-
# http://aws.amazon.com/apache2.0/
|
|
8
|
-
#
|
|
9
|
-
# or in the "license" file accompanying this file. This file is
|
|
10
|
-
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
|
-
# ANY KIND, either express or implied. See the License for the specific
|
|
12
|
-
# language governing permissions and limitations under the License.
|
|
13
|
-
|
|
14
|
-
require 'uri'
|
|
15
|
-
|
|
16
|
-
class Net::HTTP::ConnectionPool
|
|
17
|
-
|
|
18
|
-
# Represents a HTTP connection. Call {#request} on a connection like
|
|
19
|
-
# you would with a Net::HTTPSession object.
|
|
20
|
-
#
|
|
21
|
-
# == Getting a Connection object
|
|
22
|
-
#
|
|
23
|
-
# To get a connection object, you start with a connection pool:
|
|
24
|
-
#
|
|
25
|
-
# pool = Net::HTTP::ConnectionPool.new
|
|
26
|
-
# connection = pool.connection_for('domain.com')
|
|
27
|
-
#
|
|
28
|
-
# {ConnectionPool#connection_for} accepts a number of options to control
|
|
29
|
-
# the connection settings (SSL, proxy, timeouts, etc).
|
|
30
|
-
#
|
|
31
|
-
# == Making Requests
|
|
32
|
-
#
|
|
33
|
-
# Given a connection object, you call #request. {Connection#request}
|
|
34
|
-
# yields Net::HTTPResponse objects (when given a block). You should
|
|
35
|
-
# read the response (via #body or #read_body) before the end of the
|
|
36
|
-
# block.
|
|
37
|
-
#
|
|
38
|
-
# connection.request(Net::HTTP::Get.new('/')) do |resp|
|
|
39
|
-
# puts resp.body
|
|
40
|
-
# end
|
|
41
|
-
#
|
|
42
|
-
class Connection
|
|
43
|
-
|
|
44
|
-
# Use {ConnectionPool#connection_for} to construct {Connection} objects.
|
|
45
|
-
# @private
|
|
46
|
-
def initialize pool, host, options = {}
|
|
47
|
-
|
|
48
|
-
@pool = pool
|
|
49
|
-
|
|
50
|
-
@host = host
|
|
51
|
-
|
|
52
|
-
@port = options.key?(:port) ? options[:port] : (options[:ssl] ? 443 : 80)
|
|
53
|
-
|
|
54
|
-
@ssl = options.key?(:ssl) ? options[:ssl] : (port == 443)
|
|
55
|
-
|
|
56
|
-
@ssl_verify_peer = options.key?(:ssl_verify_peer) ?
|
|
57
|
-
options[:ssl_verify_peer] : true
|
|
58
|
-
|
|
59
|
-
@ssl_ca_file = options[:ssl_ca_file]
|
|
60
|
-
|
|
61
|
-
@ssl_ca_path = options[:ssl_ca_path]
|
|
62
|
-
|
|
63
|
-
if uri = options[:proxy_uri]
|
|
64
|
-
uri = URI.parse(uri) if uri.is_a?(String)
|
|
65
|
-
@proxy_address = uri.host
|
|
66
|
-
@proxy_port = uri.port
|
|
67
|
-
@proxy_user = uri.user
|
|
68
|
-
@proxy_password = uri.password
|
|
69
|
-
else
|
|
70
|
-
@proxy_address = options[:proxy_address]
|
|
71
|
-
@proxy_port = options[:proxy_port]
|
|
72
|
-
@proxy_user = options[:proxy_user]
|
|
73
|
-
@proxy_password = options[:proxy_password]
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
@read_timeout = options[:read_timeout] || 60
|
|
77
|
-
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
# @return [ConnectionPool]
|
|
81
|
-
attr_reader :pool
|
|
82
|
-
|
|
83
|
-
# @return [String]
|
|
84
|
-
attr_reader :host
|
|
85
|
-
|
|
86
|
-
# @return [Integer]
|
|
87
|
-
attr_reader :port
|
|
88
|
-
|
|
89
|
-
# @return [Boolean]
|
|
90
|
-
attr_reader :ssl
|
|
91
|
-
|
|
92
|
-
# @return [Boolean]
|
|
93
|
-
attr_reader :ssl_verify_peer
|
|
94
|
-
|
|
95
|
-
# @return [String,nil]
|
|
96
|
-
attr_reader :ssl_ca_file
|
|
97
|
-
|
|
98
|
-
# @return [String,nil]
|
|
99
|
-
attr_reader :ssl_ca_path
|
|
100
|
-
|
|
101
|
-
# @return [String,nil]
|
|
102
|
-
attr_reader :proxy_address
|
|
103
|
-
|
|
104
|
-
# @return [Integer,nil]
|
|
105
|
-
attr_reader :proxy_port
|
|
106
|
-
|
|
107
|
-
# @return [String,nil]
|
|
108
|
-
attr_reader :proxy_user
|
|
109
|
-
|
|
110
|
-
# @return [String,nil]
|
|
111
|
-
attr_reader :proxy_password
|
|
112
|
-
|
|
113
|
-
# @return [Numeric,nil]
|
|
114
|
-
attr_accessor :read_timeout
|
|
115
|
-
|
|
116
|
-
# @return [Boolean] Returns +true+ if this connection requires SSL.
|
|
117
|
-
def ssl?
|
|
118
|
-
@ssl
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
# @return [Boolean] Returns +true+ if ssl connections should verify the
|
|
122
|
-
# peer certificate.
|
|
123
|
-
def ssl_verify_peer?
|
|
124
|
-
@ssl_verify_peer
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
# @return [Boolean] Returns +true+ if this connection proxies requests.
|
|
128
|
-
def proxy?
|
|
129
|
-
!!proxy_address
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
# Makes a single HTTP request. The Net::HTTPResponse is yielded to the
|
|
133
|
-
# given block.
|
|
134
|
-
#
|
|
135
|
-
# pool = Net::HTTP::ConnectionPool.new
|
|
136
|
-
# connection = pool.connection_for('www.google.com')
|
|
137
|
-
#
|
|
138
|
-
# connection.request(Net::HTTP::Get.new('/')) do |response|
|
|
139
|
-
# # yeilds a Net::HTTPResponse object
|
|
140
|
-
# puts "STATUS CODE: #{response.code}"
|
|
141
|
-
# puts "HEADERS: #{response.to_hash.inspect}"
|
|
142
|
-
# puts "BODY:\n#{response.body}"
|
|
143
|
-
# end
|
|
144
|
-
#
|
|
145
|
-
# If you want to read the HTTP response body in chunks (useful for
|
|
146
|
-
# large responses you do not want to load into memory), you should
|
|
147
|
-
# pass a block to the #read_body method of the yielded response.
|
|
148
|
-
#
|
|
149
|
-
# File.open('output.txt', 'w') do |file|
|
|
150
|
-
# connection.request(Net::HTTP::Get.new('/')) do |response|
|
|
151
|
-
# response.read_body do |chunk|
|
|
152
|
-
# file.write(chunk)
|
|
153
|
-
# end
|
|
154
|
-
# end
|
|
155
|
-
# end
|
|
156
|
-
#
|
|
157
|
-
# If you omit the block when calling #request, you will not be able
|
|
158
|
-
# to read the response. This method never returns the
|
|
159
|
-
# Net::HTTPResponse generated.
|
|
160
|
-
#
|
|
161
|
-
# This method passes *args to Net::HTTPSession#request. See the
|
|
162
|
-
# Ruby standard lib documentation for more documentation about
|
|
163
|
-
# accepted arguments.
|
|
164
|
-
#
|
|
165
|
-
# @note You should read the yielded response object before the end
|
|
166
|
-
# of the passed block. Do no save a reference to yielded response
|
|
167
|
-
# objects.
|
|
168
|
-
#
|
|
169
|
-
# @yield [response]
|
|
170
|
-
# @yieldparam [Net::HTTPResponse] response
|
|
171
|
-
# @return [nil]
|
|
172
|
-
def request *args, &block
|
|
173
|
-
pool.request(self, *args, &block)
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
# @return [String] Returns a key that can be used to group connections
|
|
177
|
-
# that may share the same HTTP sessions.
|
|
178
|
-
def key
|
|
179
|
-
@key ||= begin
|
|
180
|
-
%w(
|
|
181
|
-
host port
|
|
182
|
-
ssl ssl_verify_peer ssl_ca_file ssl_ca_path
|
|
183
|
-
proxy_address proxy_port proxy_user proxy_password
|
|
184
|
-
).map{|part| send(part).to_s }.join(":")
|
|
185
|
-
end
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
end
|
|
189
|
-
end
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
# Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
4
|
-
# may not use this file except in compliance with the License. A copy of
|
|
5
|
-
# the License is located at
|
|
6
|
-
#
|
|
7
|
-
# http://aws.amazon.com/apache2.0/
|
|
8
|
-
#
|
|
9
|
-
# or in the "license" file accompanying this file. This file is
|
|
10
|
-
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
|
-
# ANY KIND, either express or implied. See the License for the specific
|
|
12
|
-
# language governing permissions and limitations under the License.
|
|
13
|
-
|
|
14
|
-
require 'net/http'
|
|
15
|
-
require 'net/https'
|
|
16
|
-
require 'openssl'
|
|
17
|
-
|
|
18
|
-
class Net::HTTP::ConnectionPool
|
|
19
|
-
|
|
20
|
-
# Used by Net::HTTP::ConnectionPool to wrap Net::HTTP::Session objects.
|
|
21
|
-
# Users should never need to interact with these session wrappers.
|
|
22
|
-
# @private
|
|
23
|
-
class Session
|
|
24
|
-
|
|
25
|
-
# @param [Net::HTTPSession] http_session
|
|
26
|
-
# @param [String] key
|
|
27
|
-
def initialize http_session, key
|
|
28
|
-
@http_session = http_session
|
|
29
|
-
@key = key
|
|
30
|
-
@created_at = Time.now
|
|
31
|
-
@last_used_at = nil
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# @return [Net::HTTPSession]
|
|
35
|
-
attr_reader :http_session
|
|
36
|
-
|
|
37
|
-
# @return [String]
|
|
38
|
-
attr_reader :key
|
|
39
|
-
|
|
40
|
-
# @return [Time]
|
|
41
|
-
attr_reader :created_at
|
|
42
|
-
|
|
43
|
-
# @return [Time]
|
|
44
|
-
attr_reader :last_used_at
|
|
45
|
-
|
|
46
|
-
# @param [Integer] timeout Number of seconds before Net::HTTP should
|
|
47
|
-
# timeout while waiting to read a response.
|
|
48
|
-
def read_timeout= timeout
|
|
49
|
-
http_session.read_timeout = timeout
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# Makes a HTTP request. See Net::HTTPSession#request documentation
|
|
53
|
-
# from the Ruby standard library for information about argments.
|
|
54
|
-
#
|
|
55
|
-
# connection.request(Net::HTTP::Get.new('/')) do |response|
|
|
56
|
-
# # Parse the response (status, headers and body) here.
|
|
57
|
-
# # You should be done with the response by the end of the block.
|
|
58
|
-
# end
|
|
59
|
-
#
|
|
60
|
-
# @yield [response]
|
|
61
|
-
# @yieldparam [Net::HTTPResponse] response
|
|
62
|
-
# @return [nil]
|
|
63
|
-
def request *args, &block
|
|
64
|
-
http_session.request(*args, &block)
|
|
65
|
-
@last_used_at = Time.now
|
|
66
|
-
nil
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
# Attempts to cleanly close the HTTP session.
|
|
70
|
-
# @return [nil]
|
|
71
|
-
def finish
|
|
72
|
-
begin
|
|
73
|
-
http_session.finish if http_session.started?
|
|
74
|
-
rescue IOError
|
|
75
|
-
end
|
|
76
|
-
nil
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
class << self
|
|
80
|
-
|
|
81
|
-
# Starts a new HTTP session and returns it wrapped in a {Session} object.
|
|
82
|
-
# @param [Connection] connection
|
|
83
|
-
# @param [Hash] options
|
|
84
|
-
# @option options [Integer] :open_timeout (15) The number of seconds to
|
|
85
|
-
# wait while trying to open the HTTP session before timeing out.
|
|
86
|
-
# @option options [Logger] :debug_logger HTTP wire traces are logged
|
|
87
|
-
# here when specified.
|
|
88
|
-
# @return [Session]
|
|
89
|
-
def start connection, options = {}
|
|
90
|
-
|
|
91
|
-
http_args = []
|
|
92
|
-
http_args << connection.host
|
|
93
|
-
http_args << connection.port
|
|
94
|
-
if connection.proxy?
|
|
95
|
-
http_args << connection.proxy_address
|
|
96
|
-
http_args << connection.proxy_port
|
|
97
|
-
http_args << connection.proxy_user
|
|
98
|
-
http_args << connection.proxy_password
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
http = Net::HTTP.new(*http_args)
|
|
102
|
-
http.set_debug_output(options[:debug_logger]) if options[:debug_logger]
|
|
103
|
-
http.open_timeout = options[:open_timeout] || 15
|
|
104
|
-
|
|
105
|
-
if connection.ssl?
|
|
106
|
-
http.use_ssl = true
|
|
107
|
-
if connection.ssl_verify_peer?
|
|
108
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
|
109
|
-
http.ca_file = connection.ssl_ca_file if connection.ssl_ca_file
|
|
110
|
-
http.ca_path = connection.ssl_ca_path if connection.ssl_ca_path
|
|
111
|
-
else
|
|
112
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
|
113
|
-
end
|
|
114
|
-
else
|
|
115
|
-
http.use_ssl = false
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
http.start
|
|
119
|
-
|
|
120
|
-
Session.new(http, connection.key)
|
|
121
|
-
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
end
|