aws-sdk-core 2.0.0.rc1
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/.gitignore +7 -0
- data/.simplecov +6 -0
- data/.travis.yml +12 -0
- data/.yardopts +11 -0
- data/Gemfile +26 -0
- data/LICENSE.txt +12 -0
- data/README.md +169 -0
- data/Rakefile +15 -0
- data/apis/AutoScaling-2011-01-01.json +1852 -0
- data/apis/CloudFormation-2010-05-15.json +981 -0
- data/apis/CloudFront-2012-05-05.json +3861 -0
- data/apis/CloudFront-2013-05-12.json +4593 -0
- data/apis/CloudFront-2013-08-26.json +4849 -0
- data/apis/CloudSearch-2011-02-01.json +2080 -0
- data/apis/CloudWatch-2010-08-01.json +1206 -0
- data/apis/DataPipeline-2012-10-29.json +901 -0
- data/apis/DirectConnect-2012-10-25.json +825 -0
- data/apis/DynamoDB-2011-12-05.json +2857 -0
- data/apis/DynamoDB-2012-08-10.json +3127 -0
- data/apis/EC2-2013-06-15.json +13600 -0
- data/apis/EC2-2013-10-01.json +14574 -0
- data/apis/EMR-2009-03-31.json +957 -0
- data/apis/ElastiCache-2012-11-15.json +2921 -0
- data/apis/ElastiCache-2013-06-15.json +3586 -0
- data/apis/ElasticBeanstalk-2010-12-01.json +2225 -0
- data/apis/ElasticLoadBalancing-2012-06-01.json +1215 -0
- data/apis/ElasticTranscoder-2012-09-25.json +3692 -0
- data/apis/Glacier-2012-06-01.json +1058 -0
- data/apis/IAM-2010-05-08.json +2863 -0
- data/apis/ImportExport-2010-06-01.json +328 -0
- data/apis/OpsWorks-2013-02-18.json +3546 -0
- data/apis/RDS-2013-01-10.json +6772 -0
- data/apis/RDS-2013-02-12.json +7151 -0
- data/apis/RDS-2013-05-15.json +7809 -0
- data/apis/Redshift-2012-12-01.json +4180 -0
- data/apis/Route53-2012-12-12.json +1018 -0
- data/apis/S3-2006-03-01.json +3787 -0
- data/apis/SDB-2009-04-15.json +539 -0
- data/apis/SES-2010-12-01.json +678 -0
- data/apis/SNS-2010-03-31.json +870 -0
- data/apis/SQS-2012-11-05.json +798 -0
- data/apis/STS-2011-06-15.json +352 -0
- data/apis/SWF-2012-01-25.json +5451 -0
- data/apis/StorageGateway-2012-06-30.json +1696 -0
- data/apis/Support-2013-04-15.json +794 -0
- data/apis/configuration/endpoints.json +1337 -0
- data/apis/source/autoscaling-2011-01-01.json +3215 -0
- data/apis/source/autoscaling-2011-01-01.paginators.json +52 -0
- data/apis/source/cloudformation-2010-05-15.json +1260 -0
- data/apis/source/cloudformation-2010-05-15.paginators.json +24 -0
- data/apis/source/cloudfront-2012-05-05.json +6588 -0
- data/apis/source/cloudfront-2012-05-05.paginators.json +28 -0
- data/apis/source/cloudfront-2013-05-12.json +7614 -0
- data/apis/source/cloudfront-2013-05-12.paginators.json +28 -0
- data/apis/source/cloudfront-2013-08-26.json +8016 -0
- data/apis/source/cloudfront-2013-08-26.paginators.json +28 -0
- data/apis/source/cloudsearch-2011-02-01.json +3585 -0
- data/apis/source/cloudsearch-2011-02-01.paginators.json +13 -0
- data/apis/source/datapipeline-2012-10-29.json +2144 -0
- data/apis/source/datapipeline-2012-10-29.paginators.json +25 -0
- data/apis/source/directconnect-2012-10-25.json +1271 -0
- data/apis/source/directconnect-2012-10-25.paginators.json +16 -0
- data/apis/source/dynamodb-2011-12-05.json +4380 -0
- data/apis/source/dynamodb-2011-12-05.paginators.json +24 -0
- data/apis/source/dynamodb-2012-08-10.json +4839 -0
- data/apis/source/dynamodb-2012-08-10.paginators.json +24 -0
- data/apis/source/ec2-2013-02-01.json +18820 -0
- data/apis/source/ec2-2013-02-01.paginators.json +115 -0
- data/apis/source/ec2-2013-06-15.json +18820 -0
- data/apis/source/ec2-2013-06-15.paginators.json +115 -0
- data/apis/source/ec2-2013-10-01.json +19885 -0
- data/apis/source/ec2-2013-10-01.paginators.json +115 -0
- data/apis/source/elasticache-2012-11-15.json +4403 -0
- data/apis/source/elasticache-2012-11-15.paginators.json +64 -0
- data/apis/source/elasticache-2013-06-15.json +5421 -0
- data/apis/source/elasticache-2013-06-15.paginators.json +64 -0
- data/apis/source/elasticbeanstalk-2010-12-01.json +3151 -0
- data/apis/source/elasticbeanstalk-2010-12-01.paginators.json +25 -0
- data/apis/source/elasticloadbalancing-2012-06-01.json +2041 -0
- data/apis/source/elasticloadbalancing-2012-06-01.paginators.json +18 -0
- data/apis/source/elasticmapreduce-2009-03-31.json +1478 -0
- data/apis/source/elasticmapreduce-2009-03-31.paginators.json +7 -0
- data/apis/source/elastictranscoder-2012-09-25.json +6148 -0
- data/apis/source/elastictranscoder-2012-09-25.paginators.json +20 -0
- data/apis/source/email-2010-12-01.json +892 -0
- data/apis/source/email-2010-12-01.paginators.json +13 -0
- data/apis/source/glacier-2012-06-01.json +3147 -0
- data/apis/source/glacier-2012-06-01.paginators.json +28 -0
- data/apis/source/iam-2010-05-08.json +5857 -0
- data/apis/source/iam-2010-05-08.paginators.json +116 -0
- data/apis/source/importexport-2010-06-01.json +876 -0
- data/apis/source/importexport-2010-06-01.paginators.json +10 -0
- data/apis/source/monitoring-2010-08-01.json +1910 -0
- data/apis/source/monitoring-2010-08-01.paginators.json +24 -0
- data/apis/source/opsworks-2013-02-18.json +5848 -0
- data/apis/source/opsworks-2013-02-18.paginators.json +46 -0
- data/apis/source/rds-2013-01-10.json +9283 -0
- data/apis/source/rds-2013-01-10.paginators.json +105 -0
- data/apis/source/rds-2013-02-12.json +9777 -0
- data/apis/source/rds-2013-02-12.paginators.json +105 -0
- data/apis/source/rds-2013-05-15.json +10618 -0
- data/apis/source/rds-2013-05-15.paginators.json +105 -0
- data/apis/source/redshift-2012-12-01.json +5742 -0
- data/apis/source/redshift-2012-12-01.paginators.json +74 -0
- data/apis/source/route53-2012-12-12.json +2067 -0
- data/apis/source/route53-2012-12-12.paginators.json +33 -0
- data/apis/source/s3-2006-03-01.json +4261 -0
- data/apis/source/s3-2006-03-01.paginators.json +46 -0
- data/apis/source/sdb-2009-04-15.json +1145 -0
- data/apis/source/sdb-2009-04-15.paginators.json +15 -0
- data/apis/source/sns-2010-03-31.json +2234 -0
- data/apis/source/sns-2010-03-31.paginators.json +19 -0
- data/apis/source/sqs-2012-11-05.json +1162 -0
- data/apis/source/sqs-2012-11-05.paginators.json +7 -0
- data/apis/source/storagegateway-2012-06-30.json +9487 -0
- data/apis/source/storagegateway-2012-06-30.paginators.json +28 -0
- data/apis/source/sts-2011-06-15.json +627 -0
- data/apis/source/support-2013-04-15.json +1261 -0
- data/apis/source/support-2013-04-15.paginators.json +31 -0
- data/apis/source/swf-2012-01-25.json +8744 -0
- data/apis/source/swf-2012-01-25.paginators.json +46 -0
- data/aws-sdk-core.gemspec +21 -0
- data/bin/aws.rb +156 -0
- data/doc-src/images/lastnode.png +0 -0
- data/doc-src/images/node.png +0 -0
- data/doc-src/images/vline.png +0 -0
- data/doc-src/plugins/apis.rb +205 -0
- data/doc-src/templates/default/fulldoc/html/css/common.css +90 -0
- data/doc-src/templates/default/fulldoc/html/js/tabs.js +21 -0
- data/doc-src/templates/default/fulldoc/html/setup.rb +61 -0
- data/doc-src/templates/default/layout/html/footer.erb +29 -0
- data/doc-src/templates/default/layout/html/setup.rb +3 -0
- data/features/autoscaling/client.feature +22 -0
- data/features/autoscaling/setup.rb +6 -0
- data/features/cloudformation/client.feature +18 -0
- data/features/cloudformation/setup.rb +6 -0
- data/features/cloudfront/client.feature +21 -0
- data/features/cloudfront/setup.rb +6 -0
- data/features/cloudsearch/client.feature +18 -0
- data/features/cloudsearch/setup.rb +6 -0
- data/features/cloudwatch/client.feature +21 -0
- data/features/cloudwatch/setup.rb +6 -0
- data/features/common/step_definitions.rb +65 -0
- data/features/datapipeline/client.feature +18 -0
- data/features/datapipeline/setup.rb +6 -0
- data/features/directconnect/client.feature +18 -0
- data/features/directconnect/setup.rb +6 -0
- data/features/dynamodb/client.feature +21 -0
- data/features/dynamodb/setup.rb +8 -0
- data/features/dynamodb/simplified.feature +32 -0
- data/features/dynamodb/step_definitions.rb +3 -0
- data/features/ec2/client.feature +21 -0
- data/features/ec2/setup.rb +6 -0
- data/features/ec2/step_definitions.rb +19 -0
- data/features/elasticache/client.feature +18 -0
- data/features/elasticache/setup.rb +6 -0
- data/features/elasticbeanstalk/client.feature +18 -0
- data/features/elasticbeanstalk/setup.rb +6 -0
- data/features/elasticloadbalancing/client.feature +18 -0
- data/features/elasticloadbalancing/setup.rb +6 -0
- data/features/elastictranscoder/client.feature +18 -0
- data/features/elastictranscoder/setup.rb +6 -0
- data/features/emr/client.feature +18 -0
- data/features/emr/setup.rb +6 -0
- data/features/env.rb +23 -0
- data/features/glacier/client.feature +28 -0
- data/features/glacier/setup.rb +16 -0
- data/features/glacier/step_definitions.rb +25 -0
- data/features/iam/client.feature +18 -0
- data/features/iam/setup.rb +6 -0
- data/features/importexport/client.feature +18 -0
- data/features/importexport/setup.rb +6 -0
- data/features/opsworks/client.feature +18 -0
- data/features/opsworks/setup.rb +6 -0
- data/features/rds/client.feature +18 -0
- data/features/rds/setup.rb +6 -0
- data/features/redshift/client.feature +18 -0
- data/features/redshift/setup.rb +6 -0
- data/features/route53/client.feature +18 -0
- data/features/route53/setup.rb +6 -0
- data/features/s3/buckets.feature +22 -0
- data/features/s3/objects.feature +18 -0
- data/features/s3/setup.rb +17 -0
- data/features/s3/step_definitions.rb +66 -0
- data/features/s3/test.png +0 -0
- data/features/sdb/client.feature +18 -0
- data/features/sdb/setup.rb +6 -0
- data/features/ses/client.feature +18 -0
- data/features/ses/setup.rb +6 -0
- data/features/sns/client.feature +18 -0
- data/features/sns/setup.rb +6 -0
- data/features/sqs/client.feature +23 -0
- data/features/sqs/setup.rb +10 -0
- data/features/sqs/step_definitions.rb +18 -0
- data/features/storagegateway/client.feature +18 -0
- data/features/storagegateway/setup.rb +6 -0
- data/features/sts/client.feature +18 -0
- data/features/sts/setup.rb +6 -0
- data/features/swf/client.feature +21 -0
- data/features/swf/setup.rb +6 -0
- data/integration-test-config.json.sample +3 -0
- data/lib/aws-sdk-core.rb +11 -0
- data/lib/aws.rb +175 -0
- data/lib/aws/api/base_translator.rb +72 -0
- data/lib/aws/api/doc_example.rb +116 -0
- data/lib/aws/api/documentor.rb +140 -0
- data/lib/aws/api/operation_translator.rb +77 -0
- data/lib/aws/api/service_namer.rb +40 -0
- data/lib/aws/api/service_translators/cloud_front.rb +19 -0
- data/lib/aws/api/service_translators/dynamo_db.rb +7 -0
- data/lib/aws/api/service_translators/glacier.rb +37 -0
- data/lib/aws/api/service_translators/import_export.rb +15 -0
- data/lib/aws/api/service_translators/route53.rb +23 -0
- data/lib/aws/api/service_translators/s3.rb +11 -0
- data/lib/aws/api/service_translators/sqs.rb +10 -0
- data/lib/aws/api/service_translators/swf.rb +7 -0
- data/lib/aws/api/shape_translator.rb +96 -0
- data/lib/aws/api/translator.rb +150 -0
- data/lib/aws/api/visitor.rb +32 -0
- data/lib/aws/credentials.rb +35 -0
- data/lib/aws/error_handler.rb +48 -0
- data/lib/aws/errors.rb +83 -0
- data/lib/aws/json/builder.rb +77 -0
- data/lib/aws/json/error_parser.rb +20 -0
- data/lib/aws/json/parser.rb +67 -0
- data/lib/aws/json/serializer.rb +15 -0
- data/lib/aws/plugins/credentials.rb +48 -0
- data/lib/aws/plugins/dynamodb_extended_retries.rb +22 -0
- data/lib/aws/plugins/glacier_api_version.rb +19 -0
- data/lib/aws/plugins/glacier_checksums.rb +100 -0
- data/lib/aws/plugins/global_configuration.rb +79 -0
- data/lib/aws/plugins/json_protocol.rb +30 -0
- data/lib/aws/plugins/json_rpc_headers.rb +34 -0
- data/lib/aws/plugins/query_protocol.rb +11 -0
- data/lib/aws/plugins/regional_endpoint.rb +37 -0
- data/lib/aws/plugins/retry_errors.rb +149 -0
- data/lib/aws/plugins/s3_bucket_dns.rb +78 -0
- data/lib/aws/plugins/s3_complete_multipart_upload_fix.rb +38 -0
- data/lib/aws/plugins/s3_get_bucket_location_fix.rb +21 -0
- data/lib/aws/plugins/s3_md5s.rb +61 -0
- data/lib/aws/plugins/s3_redirects.rb +38 -0
- data/lib/aws/plugins/s3_regional_endpoint.rb +19 -0
- data/lib/aws/plugins/s3_signer.rb +9 -0
- data/lib/aws/plugins/signature_v2.rb +9 -0
- data/lib/aws/plugins/signature_v3.rb +9 -0
- data/lib/aws/plugins/signature_v4.rb +29 -0
- data/lib/aws/plugins/sqs_queue_urls.rb +33 -0
- data/lib/aws/plugins/swf_read_timeouts.rb +23 -0
- data/lib/aws/plugins/user_agent.rb +32 -0
- data/lib/aws/plugins/xml_protocol.rb +11 -0
- data/lib/aws/query/builder.rb +102 -0
- data/lib/aws/query/param.rb +43 -0
- data/lib/aws/query/param_list.rb +91 -0
- data/lib/aws/query/serializer.rb +24 -0
- data/lib/aws/request_handler.rb +39 -0
- data/lib/aws/response_handler.rb +38 -0
- data/lib/aws/service.rb +237 -0
- data/lib/aws/signers/base.rb +29 -0
- data/lib/aws/signers/handler.rb +18 -0
- data/lib/aws/signers/s3.rb +162 -0
- data/lib/aws/signers/v2.rb +48 -0
- data/lib/aws/signers/v3.rb +34 -0
- data/lib/aws/signers/v4.rb +142 -0
- data/lib/aws/structure.rb +38 -0
- data/lib/aws/timestamp_formatter.rb +16 -0
- data/lib/aws/util.rb +38 -0
- data/lib/aws/version.rb +3 -0
- data/lib/aws/xml/builder.rb +134 -0
- data/lib/aws/xml/error_parser.rb +24 -0
- data/lib/aws/xml/parser.rb +147 -0
- data/lib/aws/xml/serializer.rb +16 -0
- data/spec/aws/credentials_spec.rb +39 -0
- data/spec/aws/iam_spec.rb +17 -0
- data/spec/aws/json/builder_spec.rb +183 -0
- data/spec/aws/json/parser_spec.rb +238 -0
- data/spec/aws/operations_spec.rb +145 -0
- data/spec/aws/plugins/credentials_spec.rb +76 -0
- data/spec/aws/plugins/global_configuration_spec.rb +56 -0
- data/spec/aws/plugins/region_endpoint_spec.rb +77 -0
- data/spec/aws/plugins/retry_errors_spec.rb +253 -0
- data/spec/aws/query/builder_spec.rb +361 -0
- data/spec/aws/query/param_list_spec.rb +80 -0
- data/spec/aws/query/param_spec.rb +59 -0
- data/spec/aws/service_spec.rb +247 -0
- data/spec/aws/signers/v4_spec.rb +141 -0
- data/spec/aws/structure_spec.rb +103 -0
- data/spec/aws/xml/builder_spec.rb +404 -0
- data/spec/aws/xml/parser_spec.rb +716 -0
- data/spec/aws_spec.rb +89 -0
- data/spec/fixtures/api/swf.json +100 -0
- data/spec/fixtures/operations/cloudfront/list_distributions.yml +195 -0
- data/spec/fixtures/operations/cloudfront/max_items.yml +12 -0
- data/spec/fixtures/operations/dynamodb/error_parsing.yml +13 -0
- data/spec/fixtures/operations/glacier/error_parsing.yml +10 -0
- data/spec/fixtures/operations/glacier/list_vaults.yml +24 -0
- data/spec/fixtures/operations/iam/result_wrapped_elements.yml +31 -0
- data/spec/fixtures/operations/s3/304_response.yml +12 -0
- data/spec/fixtures/operations/s3/400_response.yml +12 -0
- data/spec/fixtures/operations/s3/403_response.yml +12 -0
- data/spec/fixtures/operations/s3/404_response.yml +12 -0
- data/spec/fixtures/operations/s3/comlete_multipart_upload_error.yml +18 -0
- data/spec/fixtures/operations/s3/create_bucket_with_location_constraint.yml +25 -0
- data/spec/fixtures/operations/s3/create_bucket_without_location_constraint.yml +9 -0
- data/spec/fixtures/operations/s3/delete_objects.yml +54 -0
- data/spec/fixtures/operations/s3/error_parsing.yml +17 -0
- data/spec/fixtures/operations/s3/get_bucket_location.yml +17 -0
- data/spec/fixtures/operations/s3/get_bucket_location_classic.yml +17 -0
- data/spec/fixtures/operations/s3/head_bucket_with_dns_incompatible_name.yml +12 -0
- data/spec/fixtures/operations/s3/head_object.yml +50 -0
- data/spec/fixtures/operations/s3/list_buckets.yml +41 -0
- data/spec/fixtures/operations/s3/md5_checksum_disabled.yml +10 -0
- data/spec/fixtures/operations/s3/md5_checksum_enabled.yml +8 -0
- data/spec/fixtures/operations/swf/list_domains.yml +20 -0
- data/spec/spec_helper.rb +55 -0
- data/tasks/apis.rake +51 -0
- data/tasks/docs.rake +59 -0
- data/tasks/test.rake +39 -0
- data/vendor/seahorse/.gitignore +5 -0
- data/vendor/seahorse/.simplecov +4 -0
- data/vendor/seahorse/.yardopts +10 -0
- data/vendor/seahorse/Gemfile +20 -0
- data/vendor/seahorse/LICENSE.txt +12 -0
- data/vendor/seahorse/README.md +129 -0
- data/vendor/seahorse/Rakefile +7 -0
- data/vendor/seahorse/ca-bundle.crt +3554 -0
- data/vendor/seahorse/lib/seahorse.rb +6 -0
- data/vendor/seahorse/lib/seahorse/client.rb +61 -0
- data/vendor/seahorse/lib/seahorse/client/base.rb +239 -0
- data/vendor/seahorse/lib/seahorse/client/block_io.rb +39 -0
- data/vendor/seahorse/lib/seahorse/client/configuration.rb +197 -0
- data/vendor/seahorse/lib/seahorse/client/handler.rb +26 -0
- data/vendor/seahorse/lib/seahorse/client/handler_builder.rb +49 -0
- data/vendor/seahorse/lib/seahorse/client/handler_list.rb +250 -0
- data/vendor/seahorse/lib/seahorse/client/http/endpoint.rb +95 -0
- data/vendor/seahorse/lib/seahorse/client/http/headers.rb +94 -0
- data/vendor/seahorse/lib/seahorse/client/http/plain_string_io.rb +11 -0
- data/vendor/seahorse/lib/seahorse/client/http/request.rb +78 -0
- data/vendor/seahorse/lib/seahorse/client/http/response.rb +45 -0
- data/vendor/seahorse/lib/seahorse/client/logging/formatter.rb +319 -0
- data/vendor/seahorse/lib/seahorse/client/logging/handler.rb +35 -0
- data/vendor/seahorse/lib/seahorse/client/net_http/connection_pool.rb +339 -0
- data/vendor/seahorse/lib/seahorse/client/net_http/handler.rb +109 -0
- data/vendor/seahorse/lib/seahorse/client/param_converter.rb +202 -0
- data/vendor/seahorse/lib/seahorse/client/param_validator.rb +139 -0
- data/vendor/seahorse/lib/seahorse/client/plugin.rb +80 -0
- data/vendor/seahorse/lib/seahorse/client/plugin_list.rb +142 -0
- data/vendor/seahorse/lib/seahorse/client/plugins/api.rb +11 -0
- data/vendor/seahorse/lib/seahorse/client/plugins/content_length.rb +22 -0
- data/vendor/seahorse/lib/seahorse/client/plugins/endpoint.rb +36 -0
- data/vendor/seahorse/lib/seahorse/client/plugins/json_simple.rb +34 -0
- data/vendor/seahorse/lib/seahorse/client/plugins/logging.rb +37 -0
- data/vendor/seahorse/lib/seahorse/client/plugins/net_http.rb +26 -0
- data/vendor/seahorse/lib/seahorse/client/plugins/operation_methods.rb +48 -0
- data/vendor/seahorse/lib/seahorse/client/plugins/param_conversion.rb +29 -0
- data/vendor/seahorse/lib/seahorse/client/plugins/param_validation.rb +30 -0
- data/vendor/seahorse/lib/seahorse/client/plugins/raise_response_errors.rb +29 -0
- data/vendor/seahorse/lib/seahorse/client/plugins/restful_bindings.rb +205 -0
- data/vendor/seahorse/lib/seahorse/client/request.rb +62 -0
- data/vendor/seahorse/lib/seahorse/client/request_context.rb +68 -0
- data/vendor/seahorse/lib/seahorse/client/response.rb +106 -0
- data/vendor/seahorse/lib/seahorse/client/xml/builder.rb +92 -0
- data/vendor/seahorse/lib/seahorse/model.rb +38 -0
- data/vendor/seahorse/lib/seahorse/model/api.rb +39 -0
- data/vendor/seahorse/lib/seahorse/model/node.rb +102 -0
- data/vendor/seahorse/lib/seahorse/model/operation.rb +32 -0
- data/vendor/seahorse/lib/seahorse/model/operation_input.rb +30 -0
- data/vendor/seahorse/lib/seahorse/model/operations.rb +59 -0
- data/vendor/seahorse/lib/seahorse/model/property.rb +141 -0
- data/vendor/seahorse/lib/seahorse/model/shapes/shape.rb +229 -0
- data/vendor/seahorse/lib/seahorse/model/types.rb +8 -0
- data/vendor/seahorse/lib/seahorse/version.rb +3 -0
- data/vendor/seahorse/seahorse.gemspec +20 -0
- data/vendor/seahorse/spec/fixtures/plugin.rb +4 -0
- data/vendor/seahorse/spec/seahorse/client/base_spec.rb +308 -0
- data/vendor/seahorse/spec/seahorse/client/configuration_spec.rb +118 -0
- data/vendor/seahorse/spec/seahorse/client/handler_builder_spec.rb +159 -0
- data/vendor/seahorse/spec/seahorse/client/handler_list_spec.rb +243 -0
- data/vendor/seahorse/spec/seahorse/client/handler_spec.rb +40 -0
- data/vendor/seahorse/spec/seahorse/client/http/endpoint_spec.rb +168 -0
- data/vendor/seahorse/spec/seahorse/client/http/headers_spec.rb +213 -0
- data/vendor/seahorse/spec/seahorse/client/http/plain_string_io_spec.rb +23 -0
- data/vendor/seahorse/spec/seahorse/client/http/request_spec.rb +142 -0
- data/vendor/seahorse/spec/seahorse/client/http/response_spec.rb +77 -0
- data/vendor/seahorse/spec/seahorse/client/logging/formatter_spec.rb +197 -0
- data/vendor/seahorse/spec/seahorse/client/logging/handler_spec.rb +63 -0
- data/vendor/seahorse/spec/seahorse/client/net_http/connection_pool_spec.rb +10 -0
- data/vendor/seahorse/spec/seahorse/client/net_http/handler_spec.rb +232 -0
- data/vendor/seahorse/spec/seahorse/client/param_converter_spec.rb +318 -0
- data/vendor/seahorse/spec/seahorse/client/param_validator_spec.rb +271 -0
- data/vendor/seahorse/spec/seahorse/client/plugin_list_spec.rb +166 -0
- data/vendor/seahorse/spec/seahorse/client/plugin_spec.rb +118 -0
- data/vendor/seahorse/spec/seahorse/client/plugins/content_length_spec.rb +19 -0
- data/vendor/seahorse/spec/seahorse/client/plugins/endpoint_spec.rb +43 -0
- data/vendor/seahorse/spec/seahorse/client/plugins/logging_spec.rb +46 -0
- data/vendor/seahorse/spec/seahorse/client/plugins/net_http_spec.rb +71 -0
- data/vendor/seahorse/spec/seahorse/client/plugins/operation_methods_spec.rb +74 -0
- data/vendor/seahorse/spec/seahorse/client/plugins/restful_bindings/uri_path_builder_spec.rb +91 -0
- data/vendor/seahorse/spec/seahorse/client/request_context_spec.rb +105 -0
- data/vendor/seahorse/spec/seahorse/client/request_spec.rb +102 -0
- data/vendor/seahorse/spec/seahorse/client/response_spec.rb +171 -0
- data/vendor/seahorse/spec/seahorse/client/xml/builder/xml_doc_spec.rb +142 -0
- data/vendor/seahorse/spec/seahorse/client/xml/builder_spec.rb +10 -0
- data/vendor/seahorse/spec/seahorse/client_spec.rb +13 -0
- data/vendor/seahorse/spec/seahorse/model/api_spec.rb +72 -0
- data/vendor/seahorse/spec/seahorse/model/node_spec.rb +114 -0
- data/vendor/seahorse/spec/seahorse/model/operation_input_spec.rb +53 -0
- data/vendor/seahorse/spec/seahorse/model/operation_spec.rb +48 -0
- data/vendor/seahorse/spec/seahorse/model/operations_spec.rb +64 -0
- data/vendor/seahorse/spec/seahorse/model/property_spec.rb +136 -0
- data/vendor/seahorse/spec/seahorse/model/shapes/shape_spec.rb +105 -0
- data/vendor/seahorse/spec/seahorse/version_spec.rb +11 -0
- data/vendor/seahorse/spec/spec_helper.rb +34 -0
- data/vendor/seahorse/tasks/ca_bundle.rake +23 -0
- data/vendor/seahorse/tasks/docs.rake +11 -0
- data/vendor/seahorse/tasks/test.rake +26 -0
- metadata +614 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Seahorse
|
|
2
|
+
module Client
|
|
3
|
+
class Handler
|
|
4
|
+
|
|
5
|
+
# @param [Handler] handler (nil) The next handler in the stack that
|
|
6
|
+
# should be called from within the {#call} method. This value
|
|
7
|
+
# must only be nil for send handlers.
|
|
8
|
+
def initialize(handler = nil)
|
|
9
|
+
@handler = handler
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# @return [Handler, nil]
|
|
13
|
+
attr_accessor :handler
|
|
14
|
+
|
|
15
|
+
# @param [RequestContext] context
|
|
16
|
+
# @return [Response]
|
|
17
|
+
def call(context)
|
|
18
|
+
@handler.call(context)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def inspect
|
|
22
|
+
"#<#{self.class.name||'UnnamedHandler'} @handler=#{@handler.inspect}>"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module Seahorse
|
|
2
|
+
module Client
|
|
3
|
+
|
|
4
|
+
# This module provides the ability to add handlers to a class or
|
|
5
|
+
# module. The including class or extending module must respond to
|
|
6
|
+
# `#handlers`, returning a {HandlerList}.
|
|
7
|
+
module HandlerBuilder
|
|
8
|
+
|
|
9
|
+
def handle_request(*args, &block)
|
|
10
|
+
handler(*args) do |context|
|
|
11
|
+
block.call(context)
|
|
12
|
+
@handler.call(context)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def handle_response(*args, &block)
|
|
17
|
+
handler(*args) do |context|
|
|
18
|
+
@handler.call(context).on_complete do |response|
|
|
19
|
+
block.call(response)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def handle(*args, &block)
|
|
25
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
|
26
|
+
handler_class = block ? handler_for(*args, &block) : args.first
|
|
27
|
+
handlers.add(handler_class, options)
|
|
28
|
+
end
|
|
29
|
+
alias handler handle
|
|
30
|
+
|
|
31
|
+
# @api private
|
|
32
|
+
def handler_for(name = nil, &block)
|
|
33
|
+
if name
|
|
34
|
+
const_set(name, new_handler(block))
|
|
35
|
+
else
|
|
36
|
+
new_handler(block)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# @api private
|
|
41
|
+
def new_handler(block)
|
|
42
|
+
Class.new(Handler) do
|
|
43
|
+
define_method(:call, &block)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
require 'thread'
|
|
2
|
+
require 'set'
|
|
3
|
+
|
|
4
|
+
module Seahorse
|
|
5
|
+
module Client
|
|
6
|
+
class HandlerList
|
|
7
|
+
|
|
8
|
+
class InvalidStepError < ArgumentError
|
|
9
|
+
def initialize(step)
|
|
10
|
+
msg = "invalid :step `%s', must be one of :validate, :build, "
|
|
11
|
+
msg << ":sign or :send"
|
|
12
|
+
super(msg % step.inspect)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
class InvalidPriorityError < ArgumentError
|
|
17
|
+
def initialize(priority)
|
|
18
|
+
msg = "invalid :priority `%s', must be between 0 and 99"
|
|
19
|
+
super(msg % priority.inspect)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# @api private
|
|
24
|
+
Entry = Struct.new(:klass, :options, :operations, :priority, :inserted) do
|
|
25
|
+
def <=>(other)
|
|
26
|
+
if priority == other.priority
|
|
27
|
+
inserted <=> other.inserted
|
|
28
|
+
else
|
|
29
|
+
priority <=> other.priority
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# @api private
|
|
35
|
+
STEPS = {
|
|
36
|
+
initialize: 300,
|
|
37
|
+
validate: 200,
|
|
38
|
+
build: 100,
|
|
39
|
+
sign: 0,
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
include Enumerable
|
|
43
|
+
|
|
44
|
+
# @api private
|
|
45
|
+
def initialize(options = {})
|
|
46
|
+
@index = options[:index] || 0
|
|
47
|
+
@send = options[:send]
|
|
48
|
+
@handlers = options[:handlers] || []
|
|
49
|
+
@mutex = Mutex.new
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Registers a handler. Handlers are used to build a handler stack.
|
|
53
|
+
# Handlers default to the `:build` step with default priority of 50.
|
|
54
|
+
# The step and priority determine where in the stack a handler
|
|
55
|
+
# will be.
|
|
56
|
+
#
|
|
57
|
+
# ## Handler Stack Ordering
|
|
58
|
+
#
|
|
59
|
+
# A handler stack is built from the inside-out. The stack is
|
|
60
|
+
# seeded with the send handler. Handlers are constructed recursively
|
|
61
|
+
# in reverse step and priority order so that the highest priority
|
|
62
|
+
# handler is on the outside.
|
|
63
|
+
#
|
|
64
|
+
# By constructing the stack from the inside-out, this ensures
|
|
65
|
+
# that the validate handlers will be called first and the sign handlers
|
|
66
|
+
# will be called just before the final and only send handler is called.
|
|
67
|
+
#
|
|
68
|
+
# ## Steps
|
|
69
|
+
#
|
|
70
|
+
# Handlers are ordered first by step. These steps represent the
|
|
71
|
+
# life-cycle of a request. Valid steps are:
|
|
72
|
+
#
|
|
73
|
+
# * `:initialize`
|
|
74
|
+
# * `:validate`
|
|
75
|
+
# * `:build`
|
|
76
|
+
# * `:sign`
|
|
77
|
+
# * `:send`
|
|
78
|
+
#
|
|
79
|
+
# Many handlers can be added to the same step, except for `:send`.
|
|
80
|
+
# There can be only one `:send` handler. Adding an additional
|
|
81
|
+
# `:send` handler replaces the previous one.
|
|
82
|
+
#
|
|
83
|
+
# ## Priorities
|
|
84
|
+
#
|
|
85
|
+
# Handlers within a single step are executed in priority order. The
|
|
86
|
+
# higher the priority, the earlier in the stack the handler will
|
|
87
|
+
# be called.
|
|
88
|
+
#
|
|
89
|
+
# * Handler priority is an integer between 0 and 99, inclusively.
|
|
90
|
+
# * Handler priority defaults to 50.
|
|
91
|
+
# * When multiple handlers are added to the same step with the same
|
|
92
|
+
# priority, the last one added will have the highest priority and
|
|
93
|
+
# the first one added will have the lowest priority.
|
|
94
|
+
#
|
|
95
|
+
# @param [Class<Handler>] handler_class This should be a subclass
|
|
96
|
+
# of {Handler} or any class that construct an object that
|
|
97
|
+
# responds to `#call`.
|
|
98
|
+
#
|
|
99
|
+
# @option options [Symbol] :step (:build) The request life-cycle
|
|
100
|
+
# step the handler should run in. Defaults to `:build`. The
|
|
101
|
+
# list of possible steps, in high-to-low priority order are:
|
|
102
|
+
#
|
|
103
|
+
# * `:validate`
|
|
104
|
+
# * `:build`
|
|
105
|
+
# * `:sign`
|
|
106
|
+
# * `:send`
|
|
107
|
+
#
|
|
108
|
+
# There can only be one send handler. Registering an additional
|
|
109
|
+
# `:send` handler replaces the previous one.
|
|
110
|
+
#
|
|
111
|
+
# @option options [Integer] :priority (50) The priority of this
|
|
112
|
+
# handler within a step. The priority must be between 0 and 99
|
|
113
|
+
# inclusively. It defaults to 50. When two handlers have the
|
|
114
|
+
# same `:step` and `:priority`, the handler registered last has
|
|
115
|
+
# the highest priority.
|
|
116
|
+
#
|
|
117
|
+
# @option options [Array<Symbol,String>] :operations A list of
|
|
118
|
+
# operations names the handler should be applied to. When
|
|
119
|
+
# `:operations` is omitted, the handler is applied to all
|
|
120
|
+
# operations for the client.
|
|
121
|
+
#
|
|
122
|
+
# @raise [InvalidStepError]
|
|
123
|
+
# @raise [InvalidPriorityError]
|
|
124
|
+
# @note There can be only one `:send` handler. Adding an additional
|
|
125
|
+
# send handler replaces the previous.
|
|
126
|
+
#
|
|
127
|
+
# @return [Class<Handler>] Returns the handler class that was added.
|
|
128
|
+
#
|
|
129
|
+
def add(handler_class, options = {})
|
|
130
|
+
@mutex.synchronize do
|
|
131
|
+
if options[:step] == :send
|
|
132
|
+
@send = handler_class
|
|
133
|
+
else
|
|
134
|
+
@handlers << Entry.new(
|
|
135
|
+
handler_class,
|
|
136
|
+
options,
|
|
137
|
+
operations(options),
|
|
138
|
+
priority(options),
|
|
139
|
+
next_index,
|
|
140
|
+
)
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
handler_class
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# Copies handlers from the `source_list` onto the current handler list.
|
|
147
|
+
# @param [HandlerList] source_list
|
|
148
|
+
# @return [void]
|
|
149
|
+
def copy_from(source_list)
|
|
150
|
+
@mutex.synchronize do
|
|
151
|
+
send, handlers = source_list.send(:handlers)
|
|
152
|
+
@send = send if send
|
|
153
|
+
handlers.each do |handler|
|
|
154
|
+
new_handler = handler.dup
|
|
155
|
+
new_handler.inserted = next_index
|
|
156
|
+
@handlers << new_handler
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
# Returns a handler list for the given operation. The returned
|
|
162
|
+
# will have the operation specific handlers merged with the common
|
|
163
|
+
# handlers.
|
|
164
|
+
# @param [String] operation The name of an operation.
|
|
165
|
+
# @return [HandlerList]
|
|
166
|
+
def for(operation)
|
|
167
|
+
@mutex.synchronize do
|
|
168
|
+
HandlerList.new(
|
|
169
|
+
index: @index,
|
|
170
|
+
send: @send,
|
|
171
|
+
handlers: filter(operation.to_s),
|
|
172
|
+
)
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# Yields the handlers in stack order, which is reverse priority.
|
|
177
|
+
def each(&block)
|
|
178
|
+
@mutex.synchronize do
|
|
179
|
+
yield(@send) if @send
|
|
180
|
+
@handlers.sort.each do |handler|
|
|
181
|
+
yield(handler.klass) if handler.operations.nil?
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# Constructs the handlers recursively, building a handler stack.
|
|
187
|
+
# The `:send` handler will be at the top of the stack and the
|
|
188
|
+
# `:validate` handlers will be at the bottom.
|
|
189
|
+
# @return [Handler]
|
|
190
|
+
def to_stack
|
|
191
|
+
inject(nil) do |stack, handler|
|
|
192
|
+
if handler.is_a?(Class)
|
|
193
|
+
handler = handler.new(stack)
|
|
194
|
+
else
|
|
195
|
+
handler.handler = stack
|
|
196
|
+
handler
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
private
|
|
202
|
+
|
|
203
|
+
def operations(options)
|
|
204
|
+
options[:operations] ? Set.new(options[:operations].map(&:to_s)) : nil
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
def filter(operation)
|
|
208
|
+
filtered = []
|
|
209
|
+
@handlers.each do |handler|
|
|
210
|
+
if handler.operations.nil?
|
|
211
|
+
filtered << handler
|
|
212
|
+
elsif handler.operations.include?(operation)
|
|
213
|
+
handler = handler.dup
|
|
214
|
+
handler.operations = nil
|
|
215
|
+
filtered << handler
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
filtered
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
def next_index
|
|
222
|
+
@index += 1
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
# @return [Integer]
|
|
226
|
+
def priority(options)
|
|
227
|
+
step_value(options) + priority_value(options)
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
# @return [Integer]
|
|
231
|
+
def step_value(options)
|
|
232
|
+
step = options[:step] || :build
|
|
233
|
+
raise InvalidStepError, step unless STEPS.key?(step)
|
|
234
|
+
STEPS[step]
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
# @return [Integer]
|
|
238
|
+
def priority_value(options)
|
|
239
|
+
priority = options[:priority] || 50
|
|
240
|
+
raise InvalidPriorityError, priority unless (0..99).include?(priority)
|
|
241
|
+
priority
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
def handlers
|
|
245
|
+
[@send, @handlers]
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
end
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
require 'uri'
|
|
2
|
+
|
|
3
|
+
module Seahorse
|
|
4
|
+
module Client
|
|
5
|
+
module Http
|
|
6
|
+
|
|
7
|
+
# # Constructing an Endpoint
|
|
8
|
+
#
|
|
9
|
+
# You can construct an endpoint from a string like so:
|
|
10
|
+
#
|
|
11
|
+
# puts Endpoint.new('http://foo.com:123')
|
|
12
|
+
# #=> 'http://foo.com'
|
|
13
|
+
#
|
|
14
|
+
# If you omit the protocol, it will default to a HTTPS endpoint:
|
|
15
|
+
#
|
|
16
|
+
# puts Endpoint.new('foo.com')
|
|
17
|
+
# #=> 'https://foo.com'
|
|
18
|
+
#
|
|
19
|
+
# You can default to a HTTP endpoint by passing `:ssl_default` as `false`:
|
|
20
|
+
#
|
|
21
|
+
# puts Endpoint.new('foo.com', ssl_default: false)
|
|
22
|
+
# #=> 'http://foo.com'
|
|
23
|
+
#
|
|
24
|
+
class Endpoint
|
|
25
|
+
|
|
26
|
+
# @param [Endpoint, String] endpoint
|
|
27
|
+
# @option options [Boolean] :ssl_default (true)
|
|
28
|
+
def initialize(endpoint, options = {})
|
|
29
|
+
endpoint = endpoint.to_s
|
|
30
|
+
unless endpoint =~ /^http/
|
|
31
|
+
endpoint = apply_scheme(endpoint, options)
|
|
32
|
+
end
|
|
33
|
+
URI.parse(endpoint).tap do |uri|
|
|
34
|
+
@scheme = uri.scheme
|
|
35
|
+
@host = uri.host
|
|
36
|
+
@port = uri.port
|
|
37
|
+
@user = uri.user
|
|
38
|
+
@password = uri.password
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# @return [String] Returns the endpoint scheme ('https' or 'http').
|
|
43
|
+
attr_accessor :scheme
|
|
44
|
+
|
|
45
|
+
# @return [String] Returns the endpoint host (e.g. 'foo.com')
|
|
46
|
+
attr_accessor :host
|
|
47
|
+
|
|
48
|
+
# @return [Integer] Returns the endpoint port number (e.g. 443).
|
|
49
|
+
attr_accessor :port
|
|
50
|
+
|
|
51
|
+
# @return [String, nil]
|
|
52
|
+
attr_accessor :user
|
|
53
|
+
|
|
54
|
+
# @return [String, nil]
|
|
55
|
+
attr_accessor :password
|
|
56
|
+
|
|
57
|
+
# @return [Boolean]
|
|
58
|
+
def http?
|
|
59
|
+
@scheme == 'http'
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# @return [Boolean]
|
|
63
|
+
def https?
|
|
64
|
+
@scheme == 'https'
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# @return [String]
|
|
68
|
+
# @api private
|
|
69
|
+
def inspect
|
|
70
|
+
URI.parse("#{@scheme}://#{userpass}#{@host}:#{@port}").to_s
|
|
71
|
+
end
|
|
72
|
+
alias to_str inspect
|
|
73
|
+
alias to_s inspect
|
|
74
|
+
|
|
75
|
+
# @return [Boolean]
|
|
76
|
+
# @api private
|
|
77
|
+
def eq(other)
|
|
78
|
+
to_s == other.to_s
|
|
79
|
+
end
|
|
80
|
+
alias == eq
|
|
81
|
+
|
|
82
|
+
private
|
|
83
|
+
|
|
84
|
+
def apply_scheme(endpoint, options)
|
|
85
|
+
"http#{options.fetch(:ssl_default, true) ? 's' : ''}://#{endpoint}"
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def userpass
|
|
89
|
+
[@user, @password].compact.join(':') + '@' if @user
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
module Seahorse
|
|
2
|
+
module Client
|
|
3
|
+
module Http
|
|
4
|
+
class Headers
|
|
5
|
+
|
|
6
|
+
include Enumerable
|
|
7
|
+
|
|
8
|
+
# @api private
|
|
9
|
+
def initialize(headers = {})
|
|
10
|
+
@data = {}
|
|
11
|
+
headers.each_pair do |key, value|
|
|
12
|
+
self[key] = value
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @param [String] key
|
|
17
|
+
# @return [String]
|
|
18
|
+
def [](key)
|
|
19
|
+
@data[key.to_s.downcase]
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# @param [String] key
|
|
23
|
+
# @param [String] value
|
|
24
|
+
def []=(key, value)
|
|
25
|
+
@data[key.to_s.downcase] = value.to_s
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @param [Hash] headers
|
|
29
|
+
# @return [Headers]
|
|
30
|
+
def update(headers)
|
|
31
|
+
headers.each_pair do |k, v|
|
|
32
|
+
self[k] = v
|
|
33
|
+
end
|
|
34
|
+
self
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# @param [String] key
|
|
38
|
+
def delete(key)
|
|
39
|
+
@data.delete(key.to_s.downcase)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# @return [Array<String>]
|
|
43
|
+
def keys
|
|
44
|
+
@data.keys
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# @return [Array<String>]
|
|
48
|
+
def values
|
|
49
|
+
@data.values
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# @return [Array<String>]
|
|
53
|
+
def values_at(*keys)
|
|
54
|
+
@data.values_at(*keys.map{ |key| key.to_s.downcase })
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# @yield [key, value]
|
|
58
|
+
# @yieldparam [String] key
|
|
59
|
+
# @yieldparam [String] value
|
|
60
|
+
# @return [nil]
|
|
61
|
+
def each(&block)
|
|
62
|
+
if block_given?
|
|
63
|
+
@data.each_pair do |key, value|
|
|
64
|
+
yield(key, value)
|
|
65
|
+
end
|
|
66
|
+
nil
|
|
67
|
+
else
|
|
68
|
+
@data.enum_for(:each)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
alias each_pair each
|
|
72
|
+
|
|
73
|
+
# @return [Boolean] Returns `true` if the header is set.
|
|
74
|
+
def key?(key)
|
|
75
|
+
@data.key?(key.to_s.downcase)
|
|
76
|
+
end
|
|
77
|
+
alias has_key? key?
|
|
78
|
+
alias include? key?
|
|
79
|
+
|
|
80
|
+
# @return [Hash]
|
|
81
|
+
def to_hash
|
|
82
|
+
@data.dup
|
|
83
|
+
end
|
|
84
|
+
alias to_h to_hash
|
|
85
|
+
|
|
86
|
+
# @api private
|
|
87
|
+
def inspect
|
|
88
|
+
@data.inspect
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|