aws-sdk-core 2.0.0.rc1 → 2.0.0.rc2
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 +4 -4
 - data/.travis.yml +1 -0
 - data/README.md +6 -3
 - data/Rakefile +2 -0
 - data/apis/AutoScaling-2011-01-01.json +1 -0
 - data/apis/CloudFormation-2010-05-15.json +75 -0
 - data/apis/CloudFront-2012-05-05.json +1 -0
 - data/apis/CloudFront-2013-05-12.json +1 -0
 - data/apis/CloudFront-2013-08-26.json +1 -0
 - data/apis/CloudSearch-2011-02-01.json +1 -0
 - data/apis/CloudWatch-2010-08-01.json +1 -0
 - data/apis/DataPipeline-2012-10-29.json +1 -0
 - data/apis/DirectConnect-2012-10-25.json +1 -0
 - data/apis/DynamoDB-2011-12-05.json +1 -0
 - data/apis/DynamoDB-2012-08-10.json +1 -0
 - data/apis/EC2-2013-06-15.json +1 -0
 - data/apis/EC2-2013-10-01.json +1 -0
 - data/apis/EMR-2009-03-31.json +1 -0
 - data/apis/ElastiCache-2012-11-15.json +1 -0
 - data/apis/ElastiCache-2013-06-15.json +1 -0
 - data/apis/ElasticBeanstalk-2010-12-01.json +1 -0
 - data/apis/ElasticLoadBalancing-2012-06-01.json +73 -0
 - data/apis/ElasticTranscoder-2012-09-25.json +231 -0
 - data/apis/Glacier-2012-06-01.json +2 -0
 - data/apis/IAM-2010-05-08.json +1 -0
 - data/apis/ImportExport-2010-06-01.json +1 -0
 - data/apis/OpsWorks-2013-02-18.json +1 -0
 - data/apis/RDS-2013-01-10.json +1 -0
 - data/apis/RDS-2013-02-12.json +1 -0
 - data/apis/RDS-2013-05-15.json +1 -0
 - data/apis/Redshift-2012-12-01.json +1 -0
 - data/apis/Route53-2012-12-12.json +1 -0
 - data/apis/S3-2006-03-01.json +5 -0
 - data/apis/SDB-2009-04-15.json +1 -0
 - data/apis/SES-2010-12-01.json +1 -0
 - data/apis/SNS-2010-03-31.json +1 -0
 - data/apis/SQS-2012-11-05.json +1 -0
 - data/apis/STS-2011-06-15.json +1 -0
 - data/apis/SWF-2012-01-25.json +1 -0
 - data/apis/StorageGateway-2012-06-30.json +1 -0
 - data/apis/StorageGateway-2013-06-30.json +2018 -0
 - data/apis/Support-2013-04-15.json +1 -0
 - data/apis/source/cloudformation-2010-05-15.json +118 -12
 - data/apis/source/elasticloadbalancing-2012-06-01.json +347 -220
 - data/apis/source/elastictranscoder-2012-09-25.json +315 -5
 - data/apis/source/s3-2006-03-01.json +3 -0
 - data/apis/source/storagegateway-2013-06-30.json +12560 -0
 - data/apis/source/storagegateway-2013-06-30.paginators.json +28 -0
 - data/doc-src/plugins/apis.rb +44 -1
 - data/doc-src/templates/default/fulldoc/html/setup.rb +1 -1
 - data/features/common/step_definitions.rb +3 -5
 - data/features/env.rb +2 -0
 - data/features/glacier/client.feature +8 -0
 - data/features/glacier/step_definitions.rb +7 -7
 - data/features/s3/step_definitions.rb +2 -3
 - data/lib/aws.rb +75 -69
 - data/lib/aws/api/service_translators/glacier.rb +1 -0
 - data/lib/aws/api/translator.rb +13 -8
 - data/lib/aws/credentials.rb +5 -5
 - data/lib/aws/instance_profile_credentials.rb +113 -0
 - data/lib/aws/plugins/credentials.rb +2 -1
 - data/lib/aws/plugins/glacier_account_id.rb +11 -0
 - data/lib/aws/plugins/glacier_checksums.rb +7 -3
 - data/lib/aws/plugins/instance_profile_credentials.rb +14 -0
 - data/lib/aws/plugins/s3_bucket_dns.rb +17 -14
 - data/lib/aws/plugins/s3_md5s.rb +3 -3
 - data/lib/aws/service.rb +10 -9
 - data/lib/aws/signers/s3.rb +2 -2
 - data/lib/aws/signers/v2.rb +1 -1
 - data/lib/aws/signers/v4.rb +2 -2
 - data/lib/aws/version.rb +1 -1
 - data/lib/aws/xml/serializer.rb +1 -1
 - data/spec/aws/instance_profile_credentials_spec.rb +94 -0
 - data/spec/aws/operations_spec.rb +1 -1
 - data/spec/aws/plugins/credentials_spec.rb +2 -2
 - data/spec/fixtures/operations/glacier/account_id_param.yml +13 -0
 - data/spec/fixtures/operations/glacier/custom_account_id.yml +11 -0
 - data/spec/fixtures/operations/glacier/default_account_id.yml +10 -0
 - data/spec/fixtures/operations/s3/content_type_header.yml +12 -0
 - data/spec/fixtures/operations/s3/md5_checksum_disabled.yml +1 -1
 - data/tasks/apis.rake +2 -2
 - data/tasks/docs.rake +2 -1
 - data/tasks/handlers.rake +30 -0
 - data/vendor/seahorse/lib/seahorse/client.rb +1 -0
 - data/vendor/seahorse/lib/seahorse/client/base.rb +0 -18
 - data/vendor/seahorse/lib/seahorse/client/block_io.rb +0 -7
 - data/vendor/seahorse/lib/seahorse/client/configuration.rb +57 -37
 - data/vendor/seahorse/lib/seahorse/client/handler_list.rb +115 -78
 - data/vendor/seahorse/lib/seahorse/client/http/endpoint.rb +19 -15
 - data/vendor/seahorse/lib/seahorse/client/http/request.rb +0 -15
 - data/vendor/seahorse/lib/seahorse/client/logging/formatter.rb +0 -7
 - data/vendor/seahorse/lib/seahorse/client/managed_file.rb +14 -0
 - data/vendor/seahorse/lib/seahorse/client/net_http/handler.rb +1 -3
 - data/vendor/seahorse/lib/seahorse/client/plugins/content_length.rb +1 -1
 - data/vendor/seahorse/lib/seahorse/client/plugins/endpoint.rb +81 -10
 - data/vendor/seahorse/lib/seahorse/client/plugins/restful_bindings.rb +1 -71
 - data/vendor/seahorse/lib/seahorse/client/request.rb +26 -3
 - data/vendor/seahorse/spec/seahorse/client/base_spec.rb +1 -5
 - data/vendor/seahorse/spec/seahorse/client/configuration_spec.rb +1 -10
 - data/vendor/seahorse/spec/seahorse/client/handler_list_spec.rb +10 -10
 - data/vendor/seahorse/spec/seahorse/client/http/endpoint_spec.rb +46 -14
 - data/vendor/seahorse/spec/seahorse/client/http/request_spec.rb +1 -42
 - data/vendor/seahorse/spec/seahorse/client/logging/formatter_spec.rb +1 -6
 - data/vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb +1 -1
 - data/vendor/seahorse/spec/seahorse/client/net_http/handler_spec.rb +5 -4
 - data/vendor/seahorse/spec/seahorse/client/param_converter_spec.rb +1 -0
 - data/vendor/seahorse/spec/seahorse/client/plugins/{restful_bindings/uri_path_builder_spec.rb → endpoint/request_uri_builder_spec.rb} +3 -3
 - data/vendor/seahorse/spec/seahorse/client/plugins/endpoint_spec.rb +1 -11
 - data/vendor/seahorse/spec/seahorse/client/request_spec.rb +63 -13
 - metadata +21 -3
 
| 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {
         
     | 
| 
      
 2 
     | 
    
         
            +
              "pagination": {
         
     | 
| 
      
 3 
     | 
    
         
            +
                "DescribeCachediSCSIVolumes": {
         
     | 
| 
      
 4 
     | 
    
         
            +
                  "result_key": "CachediSCSIVolumes"
         
     | 
| 
      
 5 
     | 
    
         
            +
                },
         
     | 
| 
      
 6 
     | 
    
         
            +
                "DescribeStorediSCSIVolumes": {
         
     | 
| 
      
 7 
     | 
    
         
            +
                  "result_key": "StorediSCSIVolumes"
         
     | 
| 
      
 8 
     | 
    
         
            +
                },
         
     | 
| 
      
 9 
     | 
    
         
            +
                "ListGateways": {
         
     | 
| 
      
 10 
     | 
    
         
            +
                  "input_token": "Marker",
         
     | 
| 
      
 11 
     | 
    
         
            +
                  "output_token": "Marker",
         
     | 
| 
      
 12 
     | 
    
         
            +
                  "limit_key": "Limit",
         
     | 
| 
      
 13 
     | 
    
         
            +
                  "result_key": "Gateways"
         
     | 
| 
      
 14 
     | 
    
         
            +
                },
         
     | 
| 
      
 15 
     | 
    
         
            +
                "ListLocalDisks": {
         
     | 
| 
      
 16 
     | 
    
         
            +
                  "result_key": "Disks"
         
     | 
| 
      
 17 
     | 
    
         
            +
                },
         
     | 
| 
      
 18 
     | 
    
         
            +
                "ListVolumeRecoveryPoints": {
         
     | 
| 
      
 19 
     | 
    
         
            +
                  "result_key": "VolumeRecoveryPointInfos"
         
     | 
| 
      
 20 
     | 
    
         
            +
                },
         
     | 
| 
      
 21 
     | 
    
         
            +
                "ListVolumes": {
         
     | 
| 
      
 22 
     | 
    
         
            +
                  "input_token": "Marker",
         
     | 
| 
      
 23 
     | 
    
         
            +
                  "output_token": "Marker",
         
     | 
| 
      
 24 
     | 
    
         
            +
                  "limit_key": "Limit",
         
     | 
| 
      
 25 
     | 
    
         
            +
                  "result_key": "VolumeInfos"
         
     | 
| 
      
 26 
     | 
    
         
            +
                }
         
     | 
| 
      
 27 
     | 
    
         
            +
              }
         
     | 
| 
      
 28 
     | 
    
         
            +
            }
         
     | 
    
        data/doc-src/plugins/apis.rb
    CHANGED
    
    | 
         @@ -56,10 +56,53 @@ Returns a new instance of {#{svc_name}}. 
     | 
|
| 
       56 
56 
     | 
    
         
             
            end
         
     | 
| 
       57 
57 
     | 
    
         | 
| 
       58 
58 
     | 
    
         
             
            def document_svc_class(svc_name, apis)
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
              oldest_api = apis.sort_by(&:version).first
         
     | 
| 
      
 61 
     | 
    
         
            +
              default_api = apis.sort_by(&:version).last
         
     | 
| 
      
 62 
     | 
    
         
            +
              full_name = default_api.metadata['service_full_name']
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
       59 
64 
     | 
    
         
             
              namespace = YARD::Registry['Aws']
         
     | 
| 
       60 
65 
     | 
    
         
             
              klass = YARD::CodeObjects::ClassObject.new(namespace, svc_name)
         
     | 
| 
       61 
66 
     | 
    
         
             
              klass.superclass = YARD::Registry['Aws::Service']
         
     | 
| 
       62 
     | 
    
         
            -
              klass.docstring =  
     | 
| 
      
 67 
     | 
    
         
            +
              klass.docstring = <<-DOCSTRING
         
     | 
| 
      
 68 
     | 
    
         
            +
            A service client builder for #{full_name}.
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            ## Configuration
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
            You can specify global default configuration options via `Aws.config`.  Values
         
     | 
| 
      
 73 
     | 
    
         
            +
            in `Aws.config` are used as default options for all services.
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                Aws.config[:region] = 'us-west-2'
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            You can specify service specific defaults as well:
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
                Aws.config[:#{svc_name.downcase}] = { region: 'us-west-1' }
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
            This has a higher precendence that values at the root of `Aws.config` and will
         
     | 
| 
      
 82 
     | 
    
         
            +
            only applied to objects constructed by {new}.
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
            ## Regions & Endpoints
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
            You must configure a default region with `Aws.config` or provide a `:region`
         
     | 
| 
      
 87 
     | 
    
         
            +
            when creating a service client.  The regions listed below will connect
         
     | 
| 
      
 88 
     | 
    
         
            +
            to the following endpoints:
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
            #{default_api.metadata['regional_endpoints'].map { |r,e| "* `#{r}` - #{e}"}.join("\n")}
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
            ## API Versions
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
            Calling {new} will construct and return a versioned service client. The client
         
     | 
| 
      
 95 
     | 
    
         
            +
            will default to the most recent API version. You can also specify an API version:
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                #{svc_name.downcase} = Aws::#{svc_name}.new # Aws::#{svc_name}::V#{default_api.version.gsub(/-/, '')}
         
     | 
| 
      
 98 
     | 
    
         
            +
                #{svc_name.downcase} = Aws::#{svc_name}.new(api_version: '#{oldest_api.version}') # Aws::#{svc_name}::V#{oldest_api.version.gsub(/-/, '')}
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
            The following API versions are available for Aws::#{svc_name}:
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
            #{apis.map{ |a| "* {V#{a.version.gsub(/-/, '')} #{a.version}}" }.join("\n")}
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
            You can specify the API version for the client by passing `:api_version` to {new}.
         
     | 
| 
      
 105 
     | 
    
         
            +
              DOCSTRING
         
     | 
| 
       63 
106 
     | 
    
         
             
              klass.docstring.add_tag(YARD::Tags::Tag.new(:service, svc_name))
         
     | 
| 
       64 
107 
     | 
    
         | 
| 
       65 
108 
     | 
    
         
             
              svc = Aws.const_get(svc_name)
         
     | 
| 
         @@ -35,7 +35,7 @@ def class_list(root = Registry.root) 
     | 
|
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
                services = Registry.at('Aws').children.select { |c| c.has_tag?(:service) }
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
                services.each do |svc|
         
     | 
| 
      
 38 
     | 
    
         
            +
                services.sort_by(&:name).each do |svc|
         
     | 
| 
       39 
39 
     | 
    
         
             
                  out << "<li><a class='toggle'></a>"
         
     | 
| 
       40 
40 
     | 
    
         
             
                  out << linkify(svc, svc.name)
         
     | 
| 
       41 
41 
     | 
    
         
             
                  out << " < Service"
         
     | 
| 
         @@ -1,10 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            def call_request(service, operation_name, params = {})
         
     | 
| 
       2 
2 
     | 
    
         
             
              service = instance_variable_get("@#{service}")
         
     | 
| 
       3 
     | 
    
         
            -
               
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
       6 
     | 
    
         
            -
                @error = error
         
     | 
| 
       7 
     | 
    
         
            -
              end
         
     | 
| 
      
 3 
     | 
    
         
            +
              @response = service.build_request(operation_name, params).send_request
         
     | 
| 
      
 4 
     | 
    
         
            +
              @error = @response.error
         
     | 
| 
      
 5 
     | 
    
         
            +
              @response
         
     | 
| 
       8 
6 
     | 
    
         
             
            end
         
     | 
| 
       9 
7 
     | 
    
         | 
| 
       10 
8 
     | 
    
         
             
            def eventually(seconds = 15, &block)
         
     | 
    
        data/features/env.rb
    CHANGED
    
    
| 
         @@ -20,6 +20,14 @@ Feature: Amazon Glacier 
     | 
|
| 
       20 
20 
     | 
    
         
             
                When I upload an archive from a 5.5MB large file
         
     | 
| 
       21 
21 
     | 
    
         
             
                Then I should be able to delete the archive
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
      
 23 
     | 
    
         
            +
              # There was an issue where the client would fail attempting to compute
         
     | 
| 
      
 24 
     | 
    
         
            +
              # a checksum of an empty body, this step ensures that the checksum
         
     | 
| 
      
 25 
     | 
    
         
            +
              # computation does not hang.
         
     | 
| 
      
 26 
     | 
    
         
            +
              @upload
         
     | 
| 
      
 27 
     | 
    
         
            +
              Scenario: Attempting to upload an empty archive
         
     | 
| 
      
 28 
     | 
    
         
            +
                When I upload an archive with the contents ""
         
     | 
| 
      
 29 
     | 
    
         
            +
                Then a "InvalidParameterValueException" error should be raised
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
       23 
31 
     | 
    
         
             
              Scenario: Error handling
         
     | 
| 
       24 
32 
     | 
    
         
             
                When I call "list_vaults" on "glacier" with:
         
     | 
| 
       25 
33 
     | 
    
         
             
                """
         
     | 
| 
         @@ -1,9 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            def upload_glacier_archive(contents)
         
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
      
 2 
     | 
    
         
            +
              resp = call_request('glacier', 'upload_archive', {
         
     | 
| 
       3 
3 
     | 
    
         
             
                vault_name: @vault_name,
         
     | 
| 
       4 
     | 
    
         
            -
                 
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              @archive_id =  
     | 
| 
      
 4 
     | 
    
         
            +
                body: contents,
         
     | 
| 
      
 5 
     | 
    
         
            +
              })
         
     | 
| 
      
 6 
     | 
    
         
            +
              @archive_id = resp.data.archive_id if resp.data
         
     | 
| 
       7 
7 
     | 
    
         
             
            end
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            When(/^I upload an archive with the contents "(.*?)"$/) do |contents|
         
     | 
| 
         @@ -18,8 +18,8 @@ When(/^I upload an archive from a (\d+\.\d+)MB large file$/) do |size| 
     | 
|
| 
       18 
18 
     | 
    
         
             
            end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
            Then(/^I should be able to delete the archive$/) do
         
     | 
| 
       21 
     | 
    
         
            -
               
     | 
| 
      
 21 
     | 
    
         
            +
              call_request('glacier', 'delete_archive', {
         
     | 
| 
       22 
22 
     | 
    
         
             
                vault_name: @vault_name,
         
     | 
| 
       23 
     | 
    
         
            -
                 
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 23 
     | 
    
         
            +
                archive_id: @archive_id,
         
     | 
| 
      
 24 
     | 
    
         
            +
              })
         
     | 
| 
       25 
25 
     | 
    
         
             
            end
         
     | 
| 
         @@ -40,9 +40,8 @@ end 
     | 
|
| 
       40 
40 
     | 
    
         | 
| 
       41 
41 
     | 
    
         
             
            Then(/^the bucket should not exist$/) do
         
     | 
| 
       42 
42 
     | 
    
         
             
              eventually do
         
     | 
| 
       43 
     | 
    
         
            -
                 
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                }.to raise_error(Aws::S3::Errors::NoSuchBucket)
         
     | 
| 
      
 43 
     | 
    
         
            +
                resp = @s3.get_bucket_location(bucket: @bucket_name)
         
     | 
| 
      
 44 
     | 
    
         
            +
                expect(resp.error).to be_kind_of(Aws::S3::Errors::NoSuchBucket)
         
     | 
| 
       46 
45 
     | 
    
         
             
              end
         
     | 
| 
       47 
46 
     | 
    
         
             
            end
         
     | 
| 
       48 
47 
     | 
    
         | 
    
        data/lib/aws.rb
    CHANGED
    
    | 
         @@ -3,103 +3,109 @@ module Aws 
     | 
|
| 
       3 
3 
     | 
    
         
             
              # @api private
         
     | 
| 
       4 
4 
     | 
    
         
             
              GEM_ROOT = File.dirname(File.dirname(__FILE__))
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
      
 6 
     | 
    
         
            +
              # @api private
         
     | 
| 
      
 7 
     | 
    
         
            +
              SRC = GEM_ROOT + '/lib/aws'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
       6 
9 
     | 
    
         
             
              @config = {}
         
     | 
| 
       7 
10 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
              autoload :Credentials,  
     | 
| 
       9 
     | 
    
         
            -
              autoload :Errors,  
     | 
| 
       10 
     | 
    
         
            -
              autoload :ErrorHandler,  
     | 
| 
       11 
     | 
    
         
            -
              autoload : 
     | 
| 
       12 
     | 
    
         
            -
              autoload : 
     | 
| 
       13 
     | 
    
         
            -
              autoload : 
     | 
| 
       14 
     | 
    
         
            -
              autoload : 
     | 
| 
       15 
     | 
    
         
            -
              autoload : 
     | 
| 
       16 
     | 
    
         
            -
              autoload : 
     | 
| 
       17 
     | 
    
         
            -
              autoload : 
     | 
| 
      
 11 
     | 
    
         
            +
              autoload :Credentials, "#{SRC}/credentials"
         
     | 
| 
      
 12 
     | 
    
         
            +
              autoload :Errors, "#{SRC}/errors"
         
     | 
| 
      
 13 
     | 
    
         
            +
              autoload :ErrorHandler, "#{SRC}/error_handler"
         
     | 
| 
      
 14 
     | 
    
         
            +
              autoload :InstanceProfileCredentials, "#{SRC}/instance_profile_credentials"
         
     | 
| 
      
 15 
     | 
    
         
            +
              autoload :RequestHandler, "#{SRC}/request_handler"
         
     | 
| 
      
 16 
     | 
    
         
            +
              autoload :ResponseHandler, "#{SRC}/response_handler"
         
     | 
| 
      
 17 
     | 
    
         
            +
              autoload :Service, "#{SRC}/service"
         
     | 
| 
      
 18 
     | 
    
         
            +
              autoload :Structure, "#{SRC}/structure"
         
     | 
| 
      
 19 
     | 
    
         
            +
              autoload :TimestampFormatter, "#{SRC}/timestamp_formatter"
         
     | 
| 
      
 20 
     | 
    
         
            +
              autoload :Util, "#{SRC}/util"
         
     | 
| 
      
 21 
     | 
    
         
            +
              autoload :VERSION, "#{SRC}/version"
         
     | 
| 
       18 
22 
     | 
    
         | 
| 
       19 
23 
     | 
    
         
             
              # @api private
         
     | 
| 
       20 
24 
     | 
    
         
             
              module Api
         
     | 
| 
       21 
     | 
    
         
            -
                autoload :BaseTranslator,  
     | 
| 
       22 
     | 
    
         
            -
                autoload :Documentor,  
     | 
| 
       23 
     | 
    
         
            -
                autoload :DocExample,  
     | 
| 
       24 
     | 
    
         
            -
                autoload :InputShapeTranslator,  
     | 
| 
       25 
     | 
    
         
            -
                autoload :OperationTranslator,  
     | 
| 
       26 
     | 
    
         
            -
                autoload :OutputShapeTranslator,  
     | 
| 
       27 
     | 
    
         
            -
                autoload :ServiceNamer,  
     | 
| 
       28 
     | 
    
         
            -
                autoload :ShapeTranslator,  
     | 
| 
       29 
     | 
    
         
            -
                autoload :Translator,  
     | 
| 
       30 
     | 
    
         
            -
                autoload :Visitor,  
     | 
| 
      
 25 
     | 
    
         
            +
                autoload :BaseTranslator, "#{SRC}/api/base_translator"
         
     | 
| 
      
 26 
     | 
    
         
            +
                autoload :Documentor, "#{SRC}/api/documentor"
         
     | 
| 
      
 27 
     | 
    
         
            +
                autoload :DocExample, "#{SRC}/api/doc_example"
         
     | 
| 
      
 28 
     | 
    
         
            +
                autoload :InputShapeTranslator, "#{SRC}/api/shape_translator"
         
     | 
| 
      
 29 
     | 
    
         
            +
                autoload :OperationTranslator, "#{SRC}/api/operation_translator"
         
     | 
| 
      
 30 
     | 
    
         
            +
                autoload :OutputShapeTranslator, "#{SRC}/api/shape_translator"
         
     | 
| 
      
 31 
     | 
    
         
            +
                autoload :ServiceNamer, "#{SRC}/api/service_namer"
         
     | 
| 
      
 32 
     | 
    
         
            +
                autoload :ShapeTranslator, "#{SRC}/api/shape_translator"
         
     | 
| 
      
 33 
     | 
    
         
            +
                autoload :Translator, "#{SRC}/api/translator"
         
     | 
| 
      
 34 
     | 
    
         
            +
                autoload :Visitor, "#{SRC}/api/visitor"
         
     | 
| 
       31 
35 
     | 
    
         | 
| 
       32 
36 
     | 
    
         
             
                module ServiceTranslators
         
     | 
| 
       33 
     | 
    
         
            -
                  autoload :CloudFront,  
     | 
| 
       34 
     | 
    
         
            -
                  autoload :DynamoDB,  
     | 
| 
       35 
     | 
    
         
            -
                  autoload :Glacier,  
     | 
| 
       36 
     | 
    
         
            -
                  autoload :ImportExport,  
     | 
| 
       37 
     | 
    
         
            -
                  autoload :Route53,  
     | 
| 
       38 
     | 
    
         
            -
                  autoload :S3,  
     | 
| 
       39 
     | 
    
         
            -
                  autoload :SQS,  
     | 
| 
       40 
     | 
    
         
            -
                  autoload :SWF,  
     | 
| 
      
 37 
     | 
    
         
            +
                  autoload :CloudFront, "#{SRC}/api/service_translators/cloud_front"
         
     | 
| 
      
 38 
     | 
    
         
            +
                  autoload :DynamoDB, "#{SRC}/api/service_translators/dynamo_db"
         
     | 
| 
      
 39 
     | 
    
         
            +
                  autoload :Glacier, "#{SRC}/api/service_translators/glacier"
         
     | 
| 
      
 40 
     | 
    
         
            +
                  autoload :ImportExport, "#{SRC}/api/service_translators/import_export"
         
     | 
| 
      
 41 
     | 
    
         
            +
                  autoload :Route53, "#{SRC}/api/service_translators/route53"
         
     | 
| 
      
 42 
     | 
    
         
            +
                  autoload :S3, "#{SRC}/api/service_translators/s3"
         
     | 
| 
      
 43 
     | 
    
         
            +
                  autoload :SQS, "#{SRC}/api/service_translators/sqs"
         
     | 
| 
      
 44 
     | 
    
         
            +
                  autoload :SWF, "#{SRC}/api/service_translators/swf"
         
     | 
| 
       41 
45 
     | 
    
         
             
                end
         
     | 
| 
       42 
46 
     | 
    
         | 
| 
       43 
47 
     | 
    
         
             
              end
         
     | 
| 
       44 
48 
     | 
    
         | 
| 
       45 
49 
     | 
    
         
             
              # @api private
         
     | 
| 
       46 
50 
     | 
    
         
             
              module Json
         
     | 
| 
       47 
     | 
    
         
            -
                autoload :Builder,  
     | 
| 
       48 
     | 
    
         
            -
                autoload :ErrorParser,  
     | 
| 
       49 
     | 
    
         
            -
                autoload :Parser,  
     | 
| 
       50 
     | 
    
         
            -
                autoload :Serializer,  
     | 
| 
      
 51 
     | 
    
         
            +
                autoload :Builder, "#{SRC}/json/builder"
         
     | 
| 
      
 52 
     | 
    
         
            +
                autoload :ErrorParser, "#{SRC}/json/error_parser"
         
     | 
| 
      
 53 
     | 
    
         
            +
                autoload :Parser, "#{SRC}/json/parser"
         
     | 
| 
      
 54 
     | 
    
         
            +
                autoload :Serializer, "#{SRC}/json/serializer"
         
     | 
| 
       51 
55 
     | 
    
         
             
              end
         
     | 
| 
       52 
56 
     | 
    
         | 
| 
       53 
57 
     | 
    
         
             
              module Plugins
         
     | 
| 
       54 
     | 
    
         
            -
                autoload :Credentials,  
     | 
| 
       55 
     | 
    
         
            -
                autoload :DynamoDBExtendedRetries,  
     | 
| 
       56 
     | 
    
         
            -
                autoload : 
     | 
| 
       57 
     | 
    
         
            -
                autoload : 
     | 
| 
       58 
     | 
    
         
            -
                autoload : 
     | 
| 
       59 
     | 
    
         
            -
                autoload : 
     | 
| 
       60 
     | 
    
         
            -
                autoload : 
     | 
| 
       61 
     | 
    
         
            -
                autoload : 
     | 
| 
       62 
     | 
    
         
            -
                autoload : 
     | 
| 
       63 
     | 
    
         
            -
                autoload : 
     | 
| 
       64 
     | 
    
         
            -
                autoload : 
     | 
| 
       65 
     | 
    
         
            -
                autoload : 
     | 
| 
       66 
     | 
    
         
            -
                autoload : 
     | 
| 
       67 
     | 
    
         
            -
                autoload : 
     | 
| 
       68 
     | 
    
         
            -
                autoload : 
     | 
| 
       69 
     | 
    
         
            -
                autoload : 
     | 
| 
       70 
     | 
    
         
            -
                autoload : 
     | 
| 
       71 
     | 
    
         
            -
                autoload : 
     | 
| 
       72 
     | 
    
         
            -
                autoload : 
     | 
| 
       73 
     | 
    
         
            -
                autoload : 
     | 
| 
       74 
     | 
    
         
            -
                autoload : 
     | 
| 
       75 
     | 
    
         
            -
                autoload : 
     | 
| 
       76 
     | 
    
         
            -
                autoload : 
     | 
| 
      
 58 
     | 
    
         
            +
                autoload :Credentials, "#{SRC}/plugins/credentials"
         
     | 
| 
      
 59 
     | 
    
         
            +
                autoload :DynamoDBExtendedRetries, "#{SRC}/plugins/dynamodb_extended_retries"
         
     | 
| 
      
 60 
     | 
    
         
            +
                autoload :GlacierAccountId, "#{SRC}/plugins/glacier_account_id"
         
     | 
| 
      
 61 
     | 
    
         
            +
                autoload :GlacierApiVersion, "#{SRC}/plugins/glacier_api_version"
         
     | 
| 
      
 62 
     | 
    
         
            +
                autoload :GlacierChecksums, "#{SRC}/plugins/glacier_checksums"
         
     | 
| 
      
 63 
     | 
    
         
            +
                autoload :GlobalConfiguration, "#{SRC}/plugins/global_configuration"
         
     | 
| 
      
 64 
     | 
    
         
            +
                autoload :InstanceProfileCredentials, "#{SRC}/plugins/instance_profile_credentials"
         
     | 
| 
      
 65 
     | 
    
         
            +
                autoload :JsonProtocol, "#{SRC}/plugins/json_protocol"
         
     | 
| 
      
 66 
     | 
    
         
            +
                autoload :JsonRpcHeaders, "#{SRC}/plugins/json_rpc_headers"
         
     | 
| 
      
 67 
     | 
    
         
            +
                autoload :QueryProtocol, "#{SRC}/plugins/query_protocol"
         
     | 
| 
      
 68 
     | 
    
         
            +
                autoload :RegionalEndpoint, "#{SRC}/plugins/regional_endpoint"
         
     | 
| 
      
 69 
     | 
    
         
            +
                autoload :RetryErrors, "#{SRC}/plugins/retry_errors"
         
     | 
| 
      
 70 
     | 
    
         
            +
                autoload :S3BucketDns, "#{SRC}/plugins/s3_bucket_dns"
         
     | 
| 
      
 71 
     | 
    
         
            +
                autoload :S3CompleteMultipartUploadFix, "#{SRC}/plugins/s3_complete_multipart_upload_fix"
         
     | 
| 
      
 72 
     | 
    
         
            +
                autoload :S3GetBucketLocationFix, "#{SRC}/plugins/s3_get_bucket_location_fix"
         
     | 
| 
      
 73 
     | 
    
         
            +
                autoload :S3Md5s, "#{SRC}/plugins/s3_md5s"
         
     | 
| 
      
 74 
     | 
    
         
            +
                autoload :S3Redirects, "#{SRC}/plugins/s3_redirects"
         
     | 
| 
      
 75 
     | 
    
         
            +
                autoload :S3Signer, "#{SRC}/plugins/s3_signer"
         
     | 
| 
      
 76 
     | 
    
         
            +
                autoload :SignatureV2, "#{SRC}/plugins/signature_v2"
         
     | 
| 
      
 77 
     | 
    
         
            +
                autoload :SignatureV3, "#{SRC}/plugins/signature_v3"
         
     | 
| 
      
 78 
     | 
    
         
            +
                autoload :SignatureV4, "#{SRC}/plugins/signature_v4"
         
     | 
| 
      
 79 
     | 
    
         
            +
                autoload :SQSQueueUrls, "#{SRC}/plugins/sqs_queue_urls"
         
     | 
| 
      
 80 
     | 
    
         
            +
                autoload :SWFReadTimeouts, "#{SRC}/plugins/swf_read_timeouts"
         
     | 
| 
      
 81 
     | 
    
         
            +
                autoload :UserAgent, "#{SRC}/plugins/user_agent"
         
     | 
| 
      
 82 
     | 
    
         
            +
                autoload :XmlProtocol, "#{SRC}/plugins/xml_protocol"
         
     | 
| 
       77 
83 
     | 
    
         
             
              end
         
     | 
| 
       78 
84 
     | 
    
         | 
| 
       79 
85 
     | 
    
         
             
              # @api private
         
     | 
| 
       80 
86 
     | 
    
         
             
              module Query
         
     | 
| 
       81 
     | 
    
         
            -
                autoload :Builder,  
     | 
| 
       82 
     | 
    
         
            -
                autoload :Param,  
     | 
| 
       83 
     | 
    
         
            -
                autoload :ParamList,  
     | 
| 
       84 
     | 
    
         
            -
                autoload :Serializer,  
     | 
| 
      
 87 
     | 
    
         
            +
                autoload :Builder, "#{SRC}/query/builder"
         
     | 
| 
      
 88 
     | 
    
         
            +
                autoload :Param, "#{SRC}/query/param"
         
     | 
| 
      
 89 
     | 
    
         
            +
                autoload :ParamList, "#{SRC}/query/param_list"
         
     | 
| 
      
 90 
     | 
    
         
            +
                autoload :Serializer, "#{SRC}/query/serializer"
         
     | 
| 
       85 
91 
     | 
    
         
             
              end
         
     | 
| 
       86 
92 
     | 
    
         | 
| 
       87 
93 
     | 
    
         
             
              # @api private
         
     | 
| 
       88 
94 
     | 
    
         
             
              module Signers
         
     | 
| 
       89 
     | 
    
         
            -
                autoload :Base,  
     | 
| 
       90 
     | 
    
         
            -
                autoload :Handler,  
     | 
| 
       91 
     | 
    
         
            -
                autoload :S3,  
     | 
| 
       92 
     | 
    
         
            -
                autoload :V2,  
     | 
| 
       93 
     | 
    
         
            -
                autoload :V3,  
     | 
| 
       94 
     | 
    
         
            -
                autoload :V4,  
     | 
| 
      
 95 
     | 
    
         
            +
                autoload :Base, "#{SRC}/signers/base"
         
     | 
| 
      
 96 
     | 
    
         
            +
                autoload :Handler, "#{SRC}/signers/handler"
         
     | 
| 
      
 97 
     | 
    
         
            +
                autoload :S3, "#{SRC}/signers/s3"
         
     | 
| 
      
 98 
     | 
    
         
            +
                autoload :V2, "#{SRC}/signers/v2"
         
     | 
| 
      
 99 
     | 
    
         
            +
                autoload :V3, "#{SRC}/signers/v3"
         
     | 
| 
      
 100 
     | 
    
         
            +
                autoload :V4, "#{SRC}/signers/v4"
         
     | 
| 
       95 
101 
     | 
    
         
             
              end
         
     | 
| 
       96 
102 
     | 
    
         | 
| 
       97 
103 
     | 
    
         
             
              # @api private
         
     | 
| 
       98 
104 
     | 
    
         
             
              module Xml
         
     | 
| 
       99 
     | 
    
         
            -
                autoload :Builder,  
     | 
| 
       100 
     | 
    
         
            -
                autoload :ErrorParser,   
     | 
| 
       101 
     | 
    
         
            -
                autoload :Parser,  
     | 
| 
       102 
     | 
    
         
            -
                autoload :Serializer,  
     | 
| 
      
 105 
     | 
    
         
            +
                autoload :Builder, "#{SRC}/xml/builder"
         
     | 
| 
      
 106 
     | 
    
         
            +
                autoload :ErrorParser,  "#{SRC}/xml/error_parser"
         
     | 
| 
      
 107 
     | 
    
         
            +
                autoload :Parser, "#{SRC}/xml/parser"
         
     | 
| 
      
 108 
     | 
    
         
            +
                autoload :Serializer, "#{SRC}/xml/serializer"
         
     | 
| 
       103 
109 
     | 
    
         
             
              end
         
     | 
| 
       104 
110 
     | 
    
         | 
| 
       105 
111 
     | 
    
         
             
              class << self
         
     | 
    
        data/lib/aws/api/translator.rb
    CHANGED
    
    | 
         @@ -4,6 +4,18 @@ module Aws 
     | 
|
| 
       4 
4 
     | 
    
         
             
              module Api
         
     | 
| 
       5 
5 
     | 
    
         
             
                class Translator < BaseTranslator
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
      
 7 
     | 
    
         
            +
                  DEFAULT_PLUGINS = %w(
         
     | 
| 
      
 8 
     | 
    
         
            +
                    Seahorse::Client::Plugins::Logging
         
     | 
| 
      
 9 
     | 
    
         
            +
                    Seahorse::Client::Plugins::RestfulBindings
         
     | 
| 
      
 10 
     | 
    
         
            +
                    Seahorse::Client::Plugins::ContentLength
         
     | 
| 
      
 11 
     | 
    
         
            +
                    Aws::Plugins::UserAgent
         
     | 
| 
      
 12 
     | 
    
         
            +
                    Aws::Plugins::RetryErrors
         
     | 
| 
      
 13 
     | 
    
         
            +
                    Aws::Plugins::GlobalConfiguration
         
     | 
| 
      
 14 
     | 
    
         
            +
                    Aws::Plugins::RegionalEndpoint
         
     | 
| 
      
 15 
     | 
    
         
            +
                    Aws::Plugins::InstanceProfileCredentials
         
     | 
| 
      
 16 
     | 
    
         
            +
                    Aws::Plugins::Credentials
         
     | 
| 
      
 17 
     | 
    
         
            +
                  )
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
       7 
19 
     | 
    
         
             
                  def self.translate(src, options = {})
         
     | 
| 
       8 
20 
     | 
    
         
             
                    super(src, options)
         
     | 
| 
       9 
21 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -91,14 +103,7 @@ module Aws 
     | 
|
| 
       91 
103 
     | 
    
         | 
| 
       92 
104 
     | 
    
         
             
                  def set_type(type)
         
     | 
| 
       93 
105 
     | 
    
         
             
                    plugins = @properties['plugins'] ||= []
         
     | 
| 
       94 
     | 
    
         
            -
                    plugins 
     | 
| 
       95 
     | 
    
         
            -
                    plugins << 'Seahorse::Client::Plugins::RestfulBindings'
         
     | 
| 
       96 
     | 
    
         
            -
                    plugins << 'Seahorse::Client::Plugins::ContentLength'
         
     | 
| 
       97 
     | 
    
         
            -
                    plugins << 'Aws::Plugins::UserAgent'
         
     | 
| 
       98 
     | 
    
         
            -
                    plugins << 'Aws::Plugins::RetryErrors'
         
     | 
| 
       99 
     | 
    
         
            -
                    plugins << 'Aws::Plugins::GlobalConfiguration'
         
     | 
| 
       100 
     | 
    
         
            -
                    plugins << 'Aws::Plugins::RegionalEndpoint'
         
     | 
| 
       101 
     | 
    
         
            -
                    plugins << 'Aws::Plugins::Credentials'
         
     | 
| 
      
 106 
     | 
    
         
            +
                    plugins.concat(DEFAULT_PLUGINS)
         
     | 
| 
       102 
107 
     | 
    
         
             
                    plugins.push(*case type
         
     | 
| 
       103 
108 
     | 
    
         
             
                      when 'query' then ['Aws::Plugins::QueryProtocol']
         
     | 
| 
       104 
109 
     | 
    
         
             
                      when 'json' then [
         
     | 
    
        data/lib/aws/credentials.rb
    CHANGED
    
    | 
         @@ -11,24 +11,24 @@ module Aws 
     | 
|
| 
       11 
11 
     | 
    
         
             
                end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
                # @return [String, nil]
         
     | 
| 
       14 
     | 
    
         
            -
                 
     | 
| 
      
 14 
     | 
    
         
            +
                attr_reader :access_key_id
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
                # @return [String, nil]
         
     | 
| 
       17 
     | 
    
         
            -
                 
     | 
| 
      
 17 
     | 
    
         
            +
                attr_reader :secret_access_key
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
                # @return [String, nil]
         
     | 
| 
       20 
     | 
    
         
            -
                 
     | 
| 
      
 20 
     | 
    
         
            +
                attr_reader :session_token
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
22 
     | 
    
         
             
                # @return [Boolean] Returns `true` if the access key id and secret
         
     | 
| 
       23 
23 
     | 
    
         
             
                #   access key are both set.
         
     | 
| 
       24 
24 
     | 
    
         
             
                def set?
         
     | 
| 
       25 
     | 
    
         
            -
                  !!( 
     | 
| 
      
 25 
     | 
    
         
            +
                  !!(access_key_id && secret_access_key)
         
     | 
| 
       26 
26 
     | 
    
         
             
                end
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
                # Removing the secret access key from the default inspect string.
         
     | 
| 
       29 
29 
     | 
    
         
             
                # @api private
         
     | 
| 
       30 
30 
     | 
    
         
             
                def inspect
         
     | 
| 
       31 
     | 
    
         
            -
                  "#<#{self.class.name} access_key_id=#{access_key_id}>"
         
     | 
| 
      
 31 
     | 
    
         
            +
                  "#<#{self.class.name} access_key_id=#{access_key_id.inspect}>"
         
     | 
| 
       32 
32 
     | 
    
         
             
                end
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
              end
         
     | 
| 
         @@ -0,0 +1,113 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'time'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'net/http'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Aws
         
     | 
| 
      
 5 
     | 
    
         
            +
              class InstanceProfileCredentials < Credentials
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                # @api private
         
     | 
| 
      
 8 
     | 
    
         
            +
                class Non200Response < RuntimeError; end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                # These are the errors we trap when attempting to talk to the
         
     | 
| 
      
 11 
     | 
    
         
            +
                # instance metadata service.  Any of these imply the service
         
     | 
| 
      
 12 
     | 
    
         
            +
                # is not present, no responding or some other non-recoverable
         
     | 
| 
      
 13 
     | 
    
         
            +
                # error.
         
     | 
| 
      
 14 
     | 
    
         
            +
                # @api private
         
     | 
| 
      
 15 
     | 
    
         
            +
                FAILURES = [
         
     | 
| 
      
 16 
     | 
    
         
            +
                  Errno::EHOSTUNREACH,
         
     | 
| 
      
 17 
     | 
    
         
            +
                  Errno::ECONNREFUSED,
         
     | 
| 
      
 18 
     | 
    
         
            +
                  SocketError,
         
     | 
| 
      
 19 
     | 
    
         
            +
                  Timeout::Error,
         
     | 
| 
      
 20 
     | 
    
         
            +
                  Non200Response,
         
     | 
| 
      
 21 
     | 
    
         
            +
                ]
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                # @param [Hash] options
         
     | 
| 
      
 24 
     | 
    
         
            +
                # @option options [String] :ip_address ('169.254.169.254')
         
     | 
| 
      
 25 
     | 
    
         
            +
                # @option options [Integer] :port (80)
         
     | 
| 
      
 26 
     | 
    
         
            +
                # @option options [Float] :http_open_timeout (1)
         
     | 
| 
      
 27 
     | 
    
         
            +
                # @option options [Float] :http_read_timeout (1)
         
     | 
| 
      
 28 
     | 
    
         
            +
                # @option options [IO] :http_debug_output (nil) HTTP wire
         
     | 
| 
      
 29 
     | 
    
         
            +
                #   traces are sent to this object.  You can specify something
         
     | 
| 
      
 30 
     | 
    
         
            +
                #   like $stdout.
         
     | 
| 
      
 31 
     | 
    
         
            +
                def initialize options = {}
         
     | 
| 
      
 32 
     | 
    
         
            +
                  @ip_address = options[:ip_address] || '169.254.169.254'
         
     | 
| 
      
 33 
     | 
    
         
            +
                  @port = options[:port] || 80
         
     | 
| 
      
 34 
     | 
    
         
            +
                  @http_open_timeout = options[:http_open_timeout] || 1
         
     | 
| 
      
 35 
     | 
    
         
            +
                  @http_read_timeout = options[:http_read_timeout] || 1
         
     | 
| 
      
 36 
     | 
    
         
            +
                  @http_debug_output = options[:http_debug_output]
         
     | 
| 
      
 37 
     | 
    
         
            +
                  refresh!
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                # @return [String,nil]
         
     | 
| 
      
 41 
     | 
    
         
            +
                def access_key_id
         
     | 
| 
      
 42 
     | 
    
         
            +
                  refresh_if_stale
         
     | 
| 
      
 43 
     | 
    
         
            +
                  @access_key_id
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                # @return [String,nil]
         
     | 
| 
      
 47 
     | 
    
         
            +
                def secret_access_key
         
     | 
| 
      
 48 
     | 
    
         
            +
                  refresh_if_stale
         
     | 
| 
      
 49 
     | 
    
         
            +
                  @secret_access_key
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                # @return [String,nil]
         
     | 
| 
      
 53 
     | 
    
         
            +
                def session_token
         
     | 
| 
      
 54 
     | 
    
         
            +
                  refresh_if_stale
         
     | 
| 
      
 55 
     | 
    
         
            +
                  @session_token
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                # @return [Time,nil]
         
     | 
| 
      
 59 
     | 
    
         
            +
                def expiration
         
     | 
| 
      
 60 
     | 
    
         
            +
                  refresh_if_stale
         
     | 
| 
      
 61 
     | 
    
         
            +
                  @expiration
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                def refresh!
         
     | 
| 
      
 65 
     | 
    
         
            +
                  credentials = MultiJson.load(get_credentials)
         
     | 
| 
      
 66 
     | 
    
         
            +
                  @access_key_id = credentials['AccessKeyId']
         
     | 
| 
      
 67 
     | 
    
         
            +
                  @secret_access_key = credentials['SecretAccessKey']
         
     | 
| 
      
 68 
     | 
    
         
            +
                  @session_token = credentials['Token']
         
     | 
| 
      
 69 
     | 
    
         
            +
                  if expires = credentials['Expiration']
         
     | 
| 
      
 70 
     | 
    
         
            +
                    @expiration = Time.parse(expires)
         
     | 
| 
      
 71 
     | 
    
         
            +
                  else
         
     | 
| 
      
 72 
     | 
    
         
            +
                    @expiration = nil
         
     | 
| 
      
 73 
     | 
    
         
            +
                  end
         
     | 
| 
      
 74 
     | 
    
         
            +
                end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                private
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
                # Refreshes instance metadata credentials if they are within
         
     | 
| 
      
 79 
     | 
    
         
            +
                # 5 minutes of expiration.
         
     | 
| 
      
 80 
     | 
    
         
            +
                def refresh_if_stale
         
     | 
| 
      
 81 
     | 
    
         
            +
                  refresh! if @expiration && @expiration.utc <= Time.now.utc + 5 * 60
         
     | 
| 
      
 82 
     | 
    
         
            +
                end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                def get_credentials
         
     | 
| 
      
 85 
     | 
    
         
            +
                  open_connection do |conn|
         
     | 
| 
      
 86 
     | 
    
         
            +
                    path = '/latest/meta-data/iam/security-credentials/'
         
     | 
| 
      
 87 
     | 
    
         
            +
                    profile_name = http_get(conn, path).lines.first.strip
         
     | 
| 
      
 88 
     | 
    
         
            +
                    http_get(conn, path + profile_name)
         
     | 
| 
      
 89 
     | 
    
         
            +
                  end
         
     | 
| 
      
 90 
     | 
    
         
            +
                rescue *FAILURES => e
         
     | 
| 
      
 91 
     | 
    
         
            +
                  '{}'
         
     | 
| 
      
 92 
     | 
    
         
            +
                end
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
                def open_connection
         
     | 
| 
      
 95 
     | 
    
         
            +
                  http = Net::HTTP.new(@ip_address, @port)
         
     | 
| 
      
 96 
     | 
    
         
            +
                  http.open_timeout = @http_open_timeout
         
     | 
| 
      
 97 
     | 
    
         
            +
                  http.read_timeout = @http_read_timeout
         
     | 
| 
      
 98 
     | 
    
         
            +
                  http.set_debug_output(@http_debug_output) if @http_debug_output
         
     | 
| 
      
 99 
     | 
    
         
            +
                  http.start
         
     | 
| 
      
 100 
     | 
    
         
            +
                  yield(http).tap { http.finish }
         
     | 
| 
      
 101 
     | 
    
         
            +
                end
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
                def http_get(connection, path)
         
     | 
| 
      
 104 
     | 
    
         
            +
                  response = connection.request(Net::HTTP::Get.new(path))
         
     | 
| 
      
 105 
     | 
    
         
            +
                  if response.code.to_i == 200
         
     | 
| 
      
 106 
     | 
    
         
            +
                    response.body
         
     | 
| 
      
 107 
     | 
    
         
            +
                  else
         
     | 
| 
      
 108 
     | 
    
         
            +
                    raise Non200Response
         
     | 
| 
      
 109 
     | 
    
         
            +
                  end
         
     | 
| 
      
 110 
     | 
    
         
            +
                end
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
              end
         
     | 
| 
      
 113 
     | 
    
         
            +
            end
         
     |