aws-sdk-core 2.0.0.rc14 → 2.0.0.rc15
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/README.md +32 -3
- data/apis/AutoScaling.api.json +1943 -0
- data/apis/{autoscaling-2011-01-01.paginators.json → AutoScaling.paginators.json} +0 -0
- data/apis/CloudFormation.api.json +785 -0
- data/apis/{cloudformation-2010-05-15.paginators.json → CloudFormation.paginators.json} +0 -0
- data/apis/CloudFront.api.json +2581 -0
- data/apis/{cloudfront-2014-05-31.paginators.json → CloudFront.paginators.json} +0 -0
- data/apis/{cloudfront-2014-01-31.waiters.json → CloudFront.waiters.json} +0 -0
- data/apis/CloudSearch.api.json +1955 -0
- data/apis/{cloudsearch-2013-01-01.paginators.json → CloudSearch.paginators.json} +0 -0
- data/apis/CloudSearchDomain.api.json +349 -0
- data/apis/CloudTrail.api.json +559 -0
- data/apis/{cloudtrail-2013-11-01.paginators.json → CloudTrail.paginators.json} +0 -0
- data/apis/CloudWatch.api.json +917 -0
- data/apis/{monitoring-2010-08-01.paginators.json → CloudWatch.paginators.json} +0 -0
- data/apis/CloudWatchLogs.api.json +816 -0
- data/apis/{logs-2014-03-28.paginators.json → CloudWatchLogs.paginators.json} +0 -0
- data/apis/CognitoIdentity.api.json +631 -0
- data/apis/CognitoSync.api.json +721 -0
- data/apis/DataPipeline.api.json +940 -0
- data/apis/{datapipeline-2012-10-29.paginators.json → DataPipeline.paginators.json} +0 -0
- data/apis/DirectConnect.api.json +833 -0
- data/apis/{directconnect-2012-10-25.paginators.json → DirectConnect.paginators.json} +0 -0
- data/apis/DynamoDB.api.json +1210 -0
- data/apis/{dynamodb-2011-12-05.paginators.json → DynamoDB.paginators.json} +0 -0
- data/apis/{dynamodb-2012-08-10.waiters.json → DynamoDB.waiters.json} +0 -0
- data/apis/EC2.api.json +9914 -0
- data/apis/{ec2-2014-06-15.paginators.json → EC2.paginators.json} +0 -0
- data/apis/{ec2-2014-06-15.resources.json → EC2.resources.json} +0 -0
- data/apis/{ec2-2014-06-15.waiters.json → EC2.waiters.json} +0 -0
- data/apis/EMR.api.json +1339 -0
- data/apis/{elasticmapreduce-2009-03-31.paginators.json → EMR.paginators.json} +0 -0
- data/apis/ElastiCache.api.json +3410 -0
- data/apis/{elasticache-2014-03-24.paginators.json → ElastiCache.paginators.json} +0 -0
- data/apis/ElasticBeanstalk.api.json +1540 -0
- data/apis/{elasticbeanstalk-2010-12-01.paginators.json → ElasticBeanstalk.paginators.json} +0 -0
- data/apis/ElasticLoadBalancing.api.json +2131 -0
- data/apis/{elasticloadbalancing-2012-06-01.paginators.json → ElasticLoadBalancing.paginators.json} +0 -0
- data/apis/ElasticTranscoder.api.json +1647 -0
- data/apis/{elastictranscoder-2012-09-25.paginators.json → ElasticTranscoder.paginators.json} +0 -0
- data/apis/Glacier.api.json +1456 -0
- data/apis/{glacier-2012-06-01.paginators.json → Glacier.paginators.json} +0 -0
- data/apis/{glacier-2012-06-01.resources.json → Glacier.resources.json} +0 -0
- data/apis/{glacier-2012-06-01.waiters.json → Glacier.waiters.json} +0 -0
- data/apis/IAM.api.json +4033 -0
- data/apis/{iam-2010-05-08.paginators.json → IAM.paginators.json} +0 -0
- data/apis/{iam-2010-05-08.resources.json → IAM.resources.json} +0 -0
- data/apis/ImportExport.api.json +515 -0
- data/apis/{importexport-2010-06-01.paginators.json → ImportExport.paginators.json} +0 -0
- data/apis/Kinesis.api.json +548 -0
- data/apis/{kinesis-2013-12-02.paginators.json → Kinesis.paginators.json} +0 -0
- data/apis/OpsWorks.api.json +2524 -0
- data/apis/{opsworks-2013-02-18.paginators.json → OpsWorks.paginators.json} +0 -0
- data/apis/RDS.api.json +4473 -0
- data/apis/{rds-2013-02-12.paginators.json → RDS.paginators.json} +0 -0
- data/apis/{rds-2013-09-09.waiters.json → RDS.waiters.json} +0 -0
- data/apis/Redshift.api.json +4482 -0
- data/apis/{redshift-2012-12-01.paginators.json → Redshift.paginators.json} +0 -0
- data/apis/{redshift-2012-12-01.waiters.json → Redshift.waiters.json} +0 -0
- data/apis/Route53.api.json +1935 -0
- data/apis/{route53-2013-04-01.paginators.json → Route53.paginators.json} +0 -0
- data/apis/Route53Domains.api.json +1129 -0
- data/apis/{s3-2006-03-01.api.json → S3.api.json} +336 -942
- data/apis/{s3-2006-03-01.paginators.json → S3.paginators.json} +1 -1
- data/apis/{s3-2006-03-01.resources.json → S3.resources.json} +0 -0
- data/apis/{s3-2006-03-01.waiters.json → S3.waiters.json} +0 -0
- data/apis/SES.api.json +644 -0
- data/apis/{email-2010-12-01.paginators.json → SES.paginators.json} +0 -0
- data/apis/{email-2010-12-01.waiters.json → SES.waiters.json} +0 -0
- data/apis/SNS.api.json +1760 -0
- data/apis/{sns-2010-03-31.paginators.json → SNS.paginators.json} +0 -0
- data/apis/{sns-2010-03-31.resources.json → SNS.resources.json} +0 -0
- data/apis/SQS.api.json +1113 -0
- data/apis/{sqs-2012-11-05.paginators.json → SQS.paginators.json} +0 -0
- data/apis/{sqs-2012-11-05.resources.json → SQS.resources.json} +0 -0
- data/apis/STS.api.json +594 -0
- data/apis/SWF.api.json +2656 -0
- data/apis/{swf-2012-01-25.paginators.json → SWF.paginators.json} +0 -0
- data/apis/SimpleDB.api.json +954 -0
- data/apis/{sdb-2009-04-15.paginators.json → SimpleDB.paginators.json} +0 -0
- data/apis/StorageGateway.api.json +2311 -0
- data/apis/{storagegateway-2013-06-30.paginators.json → StorageGateway.paginators.json} +0 -0
- data/apis/Support.api.json +869 -0
- data/apis/{support-2013-04-15.paginators.json → Support.paginators.json} +0 -0
- data/lib/aws.rb +96 -53
- data/lib/aws/api/documenter.rb +238 -0
- data/lib/aws/api/{documentor.rb → operation_documenter.rb} +9 -5
- data/lib/aws/api/{doc_example.rb → operation_example.rb} +8 -7
- data/lib/aws/api/service_customizations.rb +3 -1
- data/lib/aws/client.rb +38 -0
- data/lib/aws/credential_provider_chain.rb +1 -0
- data/lib/aws/dynamodb/attribute_value.rb +87 -0
- data/lib/aws/empty_structure.rb +4 -3
- data/lib/aws/endpoint_provider.rb +1 -0
- data/lib/aws/errors.rb +2 -0
- data/lib/aws/instance_profile_credentials.rb +1 -1
- data/lib/aws/plugins/csd_conditional_signing.rb +32 -0
- data/lib/aws/plugins/dynamodb_simple_attributes.rb +179 -0
- data/lib/aws/plugins/global_configuration.rb +13 -3
- data/lib/aws/plugins/protocols/json_rpc.rb +9 -7
- data/lib/aws/plugins/regional_endpoint.rb +1 -1
- data/lib/aws/plugins/request_signer.rb +13 -6
- data/lib/aws/plugins/response_paging.rb +1 -2
- data/lib/aws/plugins/s3_url_encoded_keys.rb +92 -0
- data/lib/aws/plugins/user_agent.rb +1 -2
- data/lib/aws/signers/v4.rb +1 -1
- data/lib/aws/structure.rb +49 -2
- data/lib/aws/version.rb +1 -1
- data/lib/aws/xml/builder.rb +1 -0
- data/lib/seahorse.rb +2 -1
- data/lib/seahorse/client/handler_list.rb +10 -3
- data/lib/seahorse/client/http/request.rb +0 -8
- data/lib/seahorse/client/xml/builder.rb +0 -1
- data/lib/seahorse/model/shape_map.rb +1 -0
- data/lib/seahorse/model/shapes.rb +5 -0
- metadata +93 -107
- data/apis/autoscaling-2011-01-01.api.json +0 -3063
- data/apis/cloudformation-2010-05-15.api.json +0 -1306
- data/apis/cloudfront-2014-01-31.api.json +0 -3478
- data/apis/cloudfront-2014-01-31.paginators.json +0 -32
- data/apis/cloudfront-2014-05-31.api.json +0 -3540
- data/apis/cloudfront-2014-05-31.waiters.json +0 -29
- data/apis/cloudsearch-2011-02-01.api.json +0 -2093
- data/apis/cloudsearch-2011-02-01.paginators.json +0 -13
- data/apis/cloudsearch-2013-01-01.api.json +0 -2655
- data/apis/cloudsearchdomain-2013-01-01.api.json +0 -508
- data/apis/cloudtrail-2013-11-01.api.json +0 -773
- data/apis/cognito-identity-2014-06-30.api.json +0 -884
- data/apis/cognito-sync-2014-06-30.api.json +0 -1029
- data/apis/datapipeline-2012-10-29.api.json +0 -1432
- data/apis/directconnect-2012-10-25.api.json +0 -1174
- data/apis/dynamodb-2011-12-05.api.json +0 -1208
- data/apis/dynamodb-2011-12-05.waiters.json +0 -27
- data/apis/dynamodb-2012-08-10.api.json +0 -1857
- data/apis/dynamodb-2012-08-10.paginators.json +0 -26
- data/apis/ec2-2014-06-15.api.json +0 -11670
- data/apis/elasticache-2014-03-24.api.json +0 -4789
- data/apis/elasticache-2014-07-15.api.json +0 -4826
- data/apis/elasticache-2014-07-15.paginators.json +0 -76
- data/apis/elasticbeanstalk-2010-12-01.api.json +0 -2442
- data/apis/elasticloadbalancing-2012-06-01.api.json +0 -2605
- data/apis/elasticmapreduce-2009-03-31.api.json +0 -2282
- data/apis/elastictranscoder-2012-09-25.api.json +0 -2478
- data/apis/email-2010-12-01.api.json +0 -954
- data/apis/glacier-2012-06-01.api.json +0 -2012
- data/apis/iam-2010-05-08.api.json +0 -5322
- data/apis/importexport-2010-06-01.api.json +0 -687
- data/apis/kinesis-2013-12-02.api.json +0 -769
- data/apis/logs-2014-03-28.api.json +0 -942
- data/apis/manifest.json +0 -259
- data/apis/monitoring-2010-08-01.api.json +0 -1338
- data/apis/opsworks-2013-02-18.api.json +0 -4348
- data/apis/rds-2013-01-10.api.json +0 -6074
- data/apis/rds-2013-01-10.paginators.json +0 -97
- data/apis/rds-2013-02-12.api.json +0 -6392
- data/apis/rds-2013-09-09.api.json +0 -6564
- data/apis/rds-2013-09-09.paginators.json +0 -110
- data/apis/redshift-2012-12-01.api.json +0 -6318
- data/apis/route53-2013-04-01.api.json +0 -2493
- data/apis/route53domains-2014-05-15.api.json +0 -1622
- data/apis/sdb-2009-04-15.api.json +0 -1178
- data/apis/sns-2010-03-31.api.json +0 -2275
- data/apis/sqs-2012-11-05.api.json +0 -1438
- data/apis/storagegateway-2013-06-30.api.json +0 -3153
- data/apis/sts-2011-06-15.api.json +0 -786
- data/apis/support-2013-04-15.api.json +0 -1379
- data/apis/swf-2012-01-25.api.json +0 -4463
- data/lib/aws/api/manifest.rb +0 -29
- data/lib/aws/api/manifest_builder.rb +0 -57
- data/lib/aws/api/minifier.rb +0 -42
- data/lib/aws/response_handler.rb +0 -38
- data/lib/aws/service_builder.rb +0 -56
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
module Aws
|
|
2
2
|
module Api
|
|
3
|
-
class
|
|
3
|
+
class OperationDocumenter
|
|
4
4
|
|
|
5
|
-
def initialize(
|
|
6
|
-
@operation = operation
|
|
7
|
-
@example =
|
|
5
|
+
def initialize(options)
|
|
6
|
+
@operation = options[:operation]
|
|
7
|
+
@example = OperationExample.new(options)
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def input
|
|
@@ -50,7 +50,11 @@ module Aws
|
|
|
50
50
|
private
|
|
51
51
|
|
|
52
52
|
def params(shape, &block)
|
|
53
|
-
|
|
53
|
+
if shape && shape.name == 'AttributeValue'
|
|
54
|
+
['<p>An attribute value may be one of:<ul><li>`String`</li><li>`Numeric`</li><li>`IO`</li><li>`Set<String,Numeric,IO>`</li></ul></p>']
|
|
55
|
+
else
|
|
56
|
+
['<div class="params">', api_ref(shape)] + yield + ['</div>']
|
|
57
|
+
end
|
|
54
58
|
end
|
|
55
59
|
|
|
56
60
|
def param(shape, key_name, value_type, required, visited, &block)
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
module Aws
|
|
2
2
|
module Api
|
|
3
|
-
class
|
|
3
|
+
class OperationExample
|
|
4
4
|
|
|
5
5
|
include Seahorse::Model::Shapes
|
|
6
6
|
|
|
7
|
-
def initialize(
|
|
8
|
-
@obj_name =
|
|
9
|
-
@method_name = method_name
|
|
10
|
-
@operation = operation
|
|
7
|
+
def initialize(options)
|
|
8
|
+
@obj_name = options[:svc_var_name]
|
|
9
|
+
@method_name = options[:method_name]
|
|
10
|
+
@operation = options[:operation]
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def to_str
|
|
@@ -46,7 +46,6 @@ module Aws
|
|
|
46
46
|
def multiline_map(shape, i, visited)
|
|
47
47
|
lines = ["{"]
|
|
48
48
|
lines << "#{i} #{key_name(shape)} => #{member(shape.value, i + ' ', visited)},"
|
|
49
|
-
#lines << "#{i} # repeated ..."
|
|
50
49
|
lines << "#{i}}"
|
|
51
50
|
lines.join("\n")
|
|
52
51
|
end
|
|
@@ -62,7 +61,6 @@ module Aws
|
|
|
62
61
|
def multiline_list(shape, i, visited)
|
|
63
62
|
lines = ["["]
|
|
64
63
|
lines << "#{i} #{member(shape.member, i + ' ', visited)},"
|
|
65
|
-
#lines << "#{i} # repeated ... "
|
|
66
64
|
lines << "#{i}]"
|
|
67
65
|
lines.join("\n")
|
|
68
66
|
end
|
|
@@ -73,6 +71,9 @@ module Aws
|
|
|
73
71
|
recursive << "#{i} # recursive #{shape.name} ..."
|
|
74
72
|
recursive << "#{i}}"
|
|
75
73
|
return recursive.join("\n")
|
|
74
|
+
elsif shape.name == 'AttributeValue'
|
|
75
|
+
msg='"value", #<String,Numeric,IO,Set>'
|
|
76
|
+
return msg
|
|
76
77
|
else
|
|
77
78
|
visited = visited + [shape.name]
|
|
78
79
|
end
|
|
@@ -78,12 +78,13 @@ module Aws
|
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
customize 'cloudsearchdomain' do
|
|
81
|
-
remove_plugin 'Aws::Plugins::RequestSigner'
|
|
82
81
|
remove_plugin 'Aws::Plugins::RegionalEndpoint'
|
|
82
|
+
add_plugin 'Aws::Plugins::CSDConditionalSigning'
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
customize 'dynamodb' do
|
|
86
86
|
add_plugin 'Aws::Plugins::DynamoDBExtendedRetries'
|
|
87
|
+
add_plugin 'Aws::Plugins::DynamoDBSimpleAttributes'
|
|
87
88
|
end
|
|
88
89
|
|
|
89
90
|
customize 'ec2' do
|
|
@@ -123,6 +124,7 @@ module Aws
|
|
|
123
124
|
add_plugin 'Aws::Plugins::S3Md5s'
|
|
124
125
|
add_plugin 'Aws::Plugins::S3Redirects'
|
|
125
126
|
add_plugin 'Aws::Plugins::S3SseCpk'
|
|
127
|
+
add_plugin 'Aws::Plugins::S3UrlEncodedKeys'
|
|
126
128
|
end
|
|
127
129
|
|
|
128
130
|
customize 'sqs' do
|
data/lib/aws/client.rb
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Aws
|
|
2
|
+
|
|
3
|
+
# Base class for all {Aws} service clients.
|
|
4
|
+
class Client < Seahorse::Client::Base
|
|
5
|
+
class << self
|
|
6
|
+
|
|
7
|
+
# @return [Symbol]
|
|
8
|
+
# @api private
|
|
9
|
+
attr_accessor :identifier
|
|
10
|
+
|
|
11
|
+
# @return [Paging::Provider]
|
|
12
|
+
# @api private
|
|
13
|
+
attr_accessor :paginators
|
|
14
|
+
|
|
15
|
+
# @api private
|
|
16
|
+
def define(svc_name, options)
|
|
17
|
+
client_class = Class.new(self)
|
|
18
|
+
client_class.identifier = svc_name.downcase.to_sym
|
|
19
|
+
client_class.set_api(load_api(options[:api]))
|
|
20
|
+
Api::ServiceCustomizations.apply(client_class)
|
|
21
|
+
client_class
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
def load_api(api)
|
|
27
|
+
case api
|
|
28
|
+
when Seahorse::Model::Api then api
|
|
29
|
+
when Hash then Seahorse::Model::Api.new(api)
|
|
30
|
+
when String then Seahorse::Model::Api.new(Aws.load_json(api))
|
|
31
|
+
else
|
|
32
|
+
raise ArgumentError, "expected :api to be an Api, Hash or String"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
require 'bigdecimal'
|
|
2
|
+
require 'stringio'
|
|
3
|
+
require 'set'
|
|
4
|
+
|
|
5
|
+
module Aws
|
|
6
|
+
module DynamoDB
|
|
7
|
+
# @api private
|
|
8
|
+
class AttributeValue
|
|
9
|
+
|
|
10
|
+
def initialize
|
|
11
|
+
@marshaler = Marshaler.new
|
|
12
|
+
@unmarshaler = Unmarshaler.new
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def marshal(value)
|
|
16
|
+
@marshaler.format(value)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def unmarshal(value)
|
|
20
|
+
@unmarshaler.format(value)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
class Marshaler
|
|
24
|
+
|
|
25
|
+
def format(obj)
|
|
26
|
+
case obj
|
|
27
|
+
when String then { s: obj }
|
|
28
|
+
when Numeric then { n: obj.to_s }
|
|
29
|
+
when StringIO, IO then { b: obj.read }
|
|
30
|
+
when Set then format_set(obj)
|
|
31
|
+
else
|
|
32
|
+
msg = "unsupported type, expected Set, String, Numeric, or "
|
|
33
|
+
msg << "IO object, got #{obj.class.name}"
|
|
34
|
+
raise ArgumentError, msg
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
def format_set(set)
|
|
41
|
+
case set.first
|
|
42
|
+
when String then { ss: set.map(&:to_s) }
|
|
43
|
+
when Numeric then { ns: set.map(&:to_s) }
|
|
44
|
+
when StringIO, IO then { bs: set.map(&:read) }
|
|
45
|
+
else
|
|
46
|
+
msg = "set types only support String, Numeric, or IO objects"
|
|
47
|
+
raise ArgumentError, msg
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
class Unmarshaler
|
|
54
|
+
|
|
55
|
+
def format(obj)
|
|
56
|
+
type, value = extract_type_and_value(obj)
|
|
57
|
+
case type
|
|
58
|
+
when :s then value
|
|
59
|
+
when :n then BigDecimal.new(value)
|
|
60
|
+
when :b then StringIO.new(value)
|
|
61
|
+
when :ss then Set.new(value)
|
|
62
|
+
when :ns then Set.new(value.map { |n| BigDecimal.new(n) })
|
|
63
|
+
when :bs then Set.new(value.map { |b| StringIO.new(b) })
|
|
64
|
+
else
|
|
65
|
+
raise ArgumentError, "unhandled type #{type.inspect}"
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
private
|
|
70
|
+
|
|
71
|
+
def extract_type_and_value(obj)
|
|
72
|
+
case obj
|
|
73
|
+
when Hash then obj.to_a.first
|
|
74
|
+
when Struct
|
|
75
|
+
obj.members.each do |key|
|
|
76
|
+
value = obj[key]
|
|
77
|
+
return [key, value] unless value.nil?
|
|
78
|
+
end
|
|
79
|
+
else
|
|
80
|
+
raise ArgumentError, "unhandled type #{obj.inspect}"
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
data/lib/aws/empty_structure.rb
CHANGED
|
@@ -6,14 +6,14 @@ module Aws
|
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
def ==(other)
|
|
9
|
-
other.is_a?(
|
|
9
|
+
other.is_a?(EmptyStructure)
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def [](member_name)
|
|
13
13
|
raise NameError, "no member '#{member_name}' in struct"
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
def []=(member_name)
|
|
16
|
+
def []=(member_name, value)
|
|
17
17
|
raise NameError, "no member '#{member_name}' in struct"
|
|
18
18
|
end
|
|
19
19
|
|
|
@@ -30,7 +30,7 @@ module Aws
|
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def eql?(other)
|
|
33
|
-
other.is_a?(
|
|
33
|
+
other.is_a?(EmptyStructure)
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
# @api private
|
|
@@ -52,6 +52,7 @@ module Aws
|
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def select(&block)
|
|
55
|
+
[]
|
|
55
56
|
end
|
|
56
57
|
|
|
57
58
|
def size
|
data/lib/aws/errors.rb
CHANGED
|
@@ -96,7 +96,7 @@ module Aws
|
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
def open_connection
|
|
99
|
-
http = Net::HTTP.new(@ip_address, @port)
|
|
99
|
+
http = Net::HTTP.new(@ip_address, @port, nil)
|
|
100
100
|
http.open_timeout = @http_open_timeout
|
|
101
101
|
http.read_timeout = @http_read_timeout
|
|
102
102
|
http.set_debug_output(@http_debug_output) if @http_debug_output
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Aws
|
|
2
|
+
module Plugins
|
|
3
|
+
|
|
4
|
+
# Makes it possible to conditional sign {Aws::CloudSearchDomain::Client}
|
|
5
|
+
# requests. When credentials are configured, requests are signed.
|
|
6
|
+
# When they are omitted, the request is sent anonymously.
|
|
7
|
+
#
|
|
8
|
+
# @seahorse.client.option [String] :sigv4_region Only needed when sending
|
|
9
|
+
# authenticated/signed requests to a Cloud Search domain and the
|
|
10
|
+
# endpoint does not contain the region name.
|
|
11
|
+
#
|
|
12
|
+
class CSDConditionalSigning < Seahorse::Client::Plugin
|
|
13
|
+
|
|
14
|
+
option(:sigv4_region) do |cfg|
|
|
15
|
+
# extract the region name from the cloud search domain endpoint
|
|
16
|
+
if cfg.endpoint
|
|
17
|
+
cfg.endpoint.to_s.split('.')[1]
|
|
18
|
+
else
|
|
19
|
+
raise ArgumentError, 'missing required option :endpoint'
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def after_initialize(client)
|
|
24
|
+
# disable request singing when credentials are not set
|
|
25
|
+
if client.config.credentials.nil? or !client.config.credentials.set?
|
|
26
|
+
client.config.signature_version = nil
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
module Aws
|
|
2
|
+
module Plugins
|
|
3
|
+
|
|
4
|
+
# Simplifies working with Amazon DynamoDB attribute values.
|
|
5
|
+
# Translates attribute values for requests and responses to sensible
|
|
6
|
+
# Ruby natives.
|
|
7
|
+
#
|
|
8
|
+
# This plugin is enabled by default for all {DynamoDB::Client}
|
|
9
|
+
# objects. You can disable this plugin by passing
|
|
10
|
+
# `simple_attributes: false` to the client constructor:
|
|
11
|
+
#
|
|
12
|
+
# ddb = Aws::DynamoDB::Client.new(simple_attributes: false)
|
|
13
|
+
#
|
|
14
|
+
# ## Input Examples
|
|
15
|
+
#
|
|
16
|
+
# With this plugin **enabled**, `simple_attributes: true`:
|
|
17
|
+
#
|
|
18
|
+
# dynamodb.put_item(
|
|
19
|
+
# table_name: 'aws-sdk',
|
|
20
|
+
# item: {
|
|
21
|
+
# id: 'uuid',
|
|
22
|
+
# age: 35,
|
|
23
|
+
# tags: Set.new(%w(simple attributes)),
|
|
24
|
+
# data: StringIO.new('data')
|
|
25
|
+
# }
|
|
26
|
+
# )
|
|
27
|
+
#
|
|
28
|
+
# With this plugin **disabled**, `simple_attributes: false`:
|
|
29
|
+
#
|
|
30
|
+
# # note that all types are prefixed in a hash and that
|
|
31
|
+
# # numeric types must be serialized as strings
|
|
32
|
+
# dynamodb.put_item(
|
|
33
|
+
# table_name: 'aws-sdk',
|
|
34
|
+
# item: {
|
|
35
|
+
# 'id' => { s: 'uuid' },
|
|
36
|
+
# 'age' => { n: '35' },
|
|
37
|
+
# 'tags' => { ss: ['simple', 'attributes'] },
|
|
38
|
+
# 'data' => { b: 'data' },
|
|
39
|
+
# }
|
|
40
|
+
# )
|
|
41
|
+
#
|
|
42
|
+
# ## Output Examples
|
|
43
|
+
#
|
|
44
|
+
# With this plugin **enabled**, `simple_attributes: true`:
|
|
45
|
+
#
|
|
46
|
+
# resp = dynamodb.get(table_name: 'aws-sdk', key: { id: 'uuid' })
|
|
47
|
+
# resp.item
|
|
48
|
+
# {
|
|
49
|
+
# id: 'uuid',
|
|
50
|
+
# age: 35,
|
|
51
|
+
# tags: Set.new(%w(simple attributes)),
|
|
52
|
+
# data: StringIO.new('data')
|
|
53
|
+
# }
|
|
54
|
+
#
|
|
55
|
+
# With this plugin **disabled**, `simple_attributes: false`:
|
|
56
|
+
#
|
|
57
|
+
# # note that the request `:key` had to be type prefixed
|
|
58
|
+
# resp = dynamodb.get(table_name: 'aws-sdk', key: { 'id' => { s: 'uuid' }})
|
|
59
|
+
# resp.item
|
|
60
|
+
# # {
|
|
61
|
+
# # "id"=> <struct s='uuid', n=nil, b=nil, ss=nil, ns=nil, bs=nil>,
|
|
62
|
+
# # "age"=> <struct s=nil, n="35", b=nil, ss=nil, ns=nil, bs=nil>,
|
|
63
|
+
# # "tags"=> <struct s=nil, n=nil, b=nil, ss=['simple', 'attributes'], ns=nil, bs=nil>,
|
|
64
|
+
# # "data"=> <struct s=nil, n=nil, b="data", ss=nil, ns=nil, bs=nil>,
|
|
65
|
+
# # }
|
|
66
|
+
#
|
|
67
|
+
# @seahorse.client.option [Boolean] :simple_attributes (true)
|
|
68
|
+
# Enables working with DynamoDB attribute values using simple
|
|
69
|
+
# Ruby natives.
|
|
70
|
+
#
|
|
71
|
+
# Disabling this option requires that all attribute values have
|
|
72
|
+
# their types specified, e.g. `{ s: 'abc' }` instead of simply
|
|
73
|
+
# `'abc'`.
|
|
74
|
+
#
|
|
75
|
+
class DynamoDBSimpleAttributes < Seahorse::Client::Plugin
|
|
76
|
+
|
|
77
|
+
option(:simple_attributes) { |config| !config.simple_json }
|
|
78
|
+
|
|
79
|
+
def add_handlers(handlers, config)
|
|
80
|
+
if config.simple_attributes
|
|
81
|
+
handlers.add(Handler, step: :initialize)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
class Handler < Seahorse::Client::Handler
|
|
86
|
+
|
|
87
|
+
def call(context)
|
|
88
|
+
context.params = translate_input(context)
|
|
89
|
+
@handler.call(context).on(200) do |response|
|
|
90
|
+
response.data = translate_output(response)
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
private
|
|
95
|
+
|
|
96
|
+
def translate_input(context)
|
|
97
|
+
if shape = context.operation.input
|
|
98
|
+
ValueTranslator.new(shape, :marshal).apply(context.params)
|
|
99
|
+
else
|
|
100
|
+
context.params
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def translate_output(response)
|
|
105
|
+
if shape = response.context.operation.output
|
|
106
|
+
ValueTranslator.new(shape, :unmarshal).apply(response.data)
|
|
107
|
+
else
|
|
108
|
+
response.data
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# @api private
|
|
115
|
+
class ValueTranslator
|
|
116
|
+
|
|
117
|
+
# @param [Seahorse::Model::Shapes::Shape] shape
|
|
118
|
+
# @param [Symbol<:marshal,:unmarshal>] mode
|
|
119
|
+
def initialize(shape, mode)
|
|
120
|
+
@shape = shape
|
|
121
|
+
@mode = mode
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def apply(values)
|
|
125
|
+
structure(@shape, values) if @shape
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
private
|
|
129
|
+
|
|
130
|
+
def structure(shape, values)
|
|
131
|
+
if values.is_a?(Struct)
|
|
132
|
+
values.members.each do |key|
|
|
133
|
+
values[key] = translate(shape.member(key), values[key])
|
|
134
|
+
end
|
|
135
|
+
values
|
|
136
|
+
elsif values.is_a?(Hash)
|
|
137
|
+
values.each.with_object({}) do |(key, value), hash|
|
|
138
|
+
hash[key] = translate(shape.member(key), value)
|
|
139
|
+
end
|
|
140
|
+
else
|
|
141
|
+
values
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def list(shape, values)
|
|
146
|
+
return values unless values.is_a?(Array)
|
|
147
|
+
values.inject([]) do |list, value|
|
|
148
|
+
list << translate(shape.member, value)
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def map(shape, values)
|
|
153
|
+
return values unless values.is_a?(Hash)
|
|
154
|
+
values.each.with_object({}) do |(key, value), hash|
|
|
155
|
+
hash[key] = translate(shape.value, value)
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def translate(shape, value)
|
|
160
|
+
if shape.name == 'AttributeValue'
|
|
161
|
+
DynamoDB::AttributeValue.new.send(@mode, value)
|
|
162
|
+
else
|
|
163
|
+
translate_complex(shape, value)
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def translate_complex(shape, value)
|
|
168
|
+
case shape
|
|
169
|
+
when Seahorse::Model::Shapes::Structure then structure(shape, value)
|
|
170
|
+
when Seahorse::Model::Shapes::List then list(shape, value)
|
|
171
|
+
when Seahorse::Model::Shapes::Map then map(shape, value)
|
|
172
|
+
else value
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
end
|