aws-sdk-core 2.0.48 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/apis/autoscaling/2011-01-01/api-2.json +636 -33
- data/apis/cloudhsm/2014-05-30/api-2.json +3 -6
- data/apis/ec2/2014-10-01/api-2.json +10267 -0
- data/apis/ec2/2014-10-01/paginators-1.json +125 -0
- data/apis/ec2/2014-10-01/resources-1.json +2289 -0
- data/apis/ec2/2014-10-01/waiters-2.json +453 -0
- data/apis/ec2/2015-03-01/api-2.json +11245 -0
- data/apis/ec2/2015-03-01/paginators-1.json +125 -0
- data/apis/ec2/2015-03-01/resources-1.json +2479 -0
- data/apis/ec2/2015-03-01/waiters-2.json +458 -0
- data/apis/ec2/2015-04-15/api-2.json +182 -2
- data/apis/ecs/2014-11-13/api-2.json +316 -7
- data/apis/ecs/2014-11-13/paginators-1.json +40 -0
- data/apis/ecs/2014-11-13/waiters-2.json +93 -0
- data/apis/redshift/2012-12-01/waiters-2.json +19 -0
- data/apis/s3/2006-03-01/api-2.json +1 -2
- data/apis/sqs/2012-11-05/api-2.json +5 -6
- data/ca-bundle.crt +3554 -0
- data/lib/aws-sdk-core.rb +127 -44
- data/lib/aws-sdk-core/api/builder.rb +95 -0
- data/lib/aws-sdk-core/api/customizations.rb +152 -0
- data/lib/aws-sdk-core/api/docs/builder.rb +220 -0
- data/lib/aws-sdk-core/api/docs/client_type_documenter.rb +109 -0
- data/lib/aws-sdk-core/api/docs/docstring_provider.rb +66 -0
- data/lib/aws-sdk-core/api/docs/operation_documenter.rb +107 -0
- data/lib/aws-sdk-core/api/docs/param_formatter.rb +163 -0
- data/lib/aws-sdk-core/api/docs/request_syntax_example.rb +22 -0
- data/lib/aws-sdk-core/api/docs/response_structure_example.rb +91 -0
- data/lib/aws-sdk-core/api/docs/utils.rb +133 -0
- data/lib/aws-sdk-core/api/shape_map.rb +140 -0
- data/lib/aws-sdk-core/assume_role_credentials.rb +9 -6
- data/lib/aws-sdk-core/client.rb +9 -6
- data/lib/aws-sdk-core/client_stubs.rb +127 -133
- data/lib/aws-sdk-core/client_waiters.rb +1 -1
- data/lib/aws-sdk-core/credential_provider.rb +44 -0
- data/lib/aws-sdk-core/credential_provider_chain.rb +3 -2
- data/lib/aws-sdk-core/credentials.rb +5 -0
- data/lib/aws-sdk-core/deprecations.rb +69 -0
- data/lib/aws-sdk-core/dynamodb.rb +12 -0
- data/lib/aws-sdk-core/eager_loader.rb +31 -0
- data/lib/aws-sdk-core/ecs.rb +2 -0
- data/lib/aws-sdk-core/empty_structure.rb +1 -82
- data/lib/aws-sdk-core/endpoint_provider.rb +1 -1
- data/lib/aws-sdk-core/instance_profile_credentials.rb +9 -10
- data/lib/aws-sdk-core/json.rb +56 -0
- data/lib/aws-sdk-core/json/builder.rb +33 -34
- data/lib/aws-sdk-core/json/error_handler.rb +2 -2
- data/lib/aws-sdk-core/json/handler.rb +67 -0
- data/lib/aws-sdk-core/json/json_engine.rb +15 -0
- data/lib/aws-sdk-core/json/oj_engine.rb +15 -0
- data/lib/aws-sdk-core/json/parser.rb +30 -38
- data/lib/aws-sdk-core/pageable_response.rb +9 -12
- data/lib/aws-sdk-core/pager.rb +69 -0
- data/lib/aws-sdk-core/param_converter.rb +203 -0
- data/lib/aws-sdk-core/param_validator.rb +148 -0
- data/lib/aws-sdk-core/plugins/dynamodb_simple_attributes.rb +21 -18
- data/lib/aws-sdk-core/plugins/glacier_account_id.rb +9 -1
- data/lib/aws-sdk-core/plugins/glacier_checksums.rb +2 -3
- data/lib/aws-sdk-core/plugins/param_converter.rb +27 -0
- data/lib/aws-sdk-core/plugins/param_validator.rb +28 -0
- data/lib/aws-sdk-core/plugins/protocols/json_rpc.rb +3 -7
- data/lib/aws-sdk-core/plugins/protocols/rest_json.rb +1 -2
- data/lib/aws-sdk-core/plugins/protocols/rest_xml.rb +1 -1
- data/lib/aws-sdk-core/plugins/regional_endpoint.rb +1 -1
- data/lib/aws-sdk-core/plugins/request_signer.rb +5 -5
- data/lib/aws-sdk-core/plugins/response_paging.rb +20 -11
- data/lib/aws-sdk-core/plugins/s3_get_bucket_location_fix.rb +1 -1
- data/lib/aws-sdk-core/plugins/s3_request_signer.rb +1 -2
- data/lib/aws-sdk-core/plugins/stub_responses.rb +25 -27
- data/lib/aws-sdk-core/query/ec2_param_builder.rb +29 -34
- data/lib/aws-sdk-core/query/handler.rb +32 -18
- data/lib/aws-sdk-core/query/param_builder.rb +45 -53
- data/lib/aws-sdk-core/refreshing_credentials.rb +3 -15
- data/lib/aws-sdk-core/rest/handler.rb +22 -0
- data/lib/aws-sdk-core/rest/request/body.rb +58 -0
- data/lib/aws-sdk-core/rest/request/builder.rb +50 -0
- data/lib/aws-sdk-core/rest/request/endpoint.rb +70 -0
- data/lib/aws-sdk-core/rest/request/headers.rb +48 -0
- data/lib/aws-sdk-core/rest/response/body.rb +43 -0
- data/lib/aws-sdk-core/rest/response/headers.rb +60 -0
- data/lib/aws-sdk-core/rest/response/parser.rb +47 -0
- data/lib/aws-sdk-core/rest/response/status_code.rb +24 -0
- data/lib/aws-sdk-core/shared_credentials.rb +11 -6
- data/lib/aws-sdk-core/signers/base.rb +1 -1
- data/lib/aws-sdk-core/signers/s3.rb +2 -3
- data/lib/aws-sdk-core/signers/v2.rb +7 -4
- data/lib/aws-sdk-core/signers/v4.rb +11 -22
- data/lib/aws-sdk-core/structure.rb +26 -145
- data/lib/aws-sdk-core/stubbing/data_applicator.rb +46 -0
- data/lib/aws-sdk-core/stubbing/empty_stub.rb +53 -0
- data/lib/aws-sdk-core/stubbing/protocols/ec2.rb +49 -0
- data/lib/aws-sdk-core/stubbing/protocols/json.rb +40 -0
- data/lib/aws-sdk-core/stubbing/protocols/query.rb +40 -0
- data/lib/aws-sdk-core/stubbing/protocols/rest.rb +67 -0
- data/lib/aws-sdk-core/stubbing/protocols/rest_json.rb +25 -0
- data/lib/aws-sdk-core/stubbing/protocols/rest_xml.rb +38 -0
- data/lib/aws-sdk-core/stubbing/stub_data.rb +34 -0
- data/lib/aws-sdk-core/version.rb +1 -1
- data/lib/aws-sdk-core/xml/builder.rb +58 -52
- data/lib/aws-sdk-core/xml/default_map.rb +10 -0
- data/lib/aws-sdk-core/xml/doc_builder.rb +86 -0
- data/lib/aws-sdk-core/xml/error_handler.rb +7 -2
- data/lib/aws-sdk-core/xml/parser.rb +4 -4
- data/lib/aws-sdk-core/xml/parser/frame.rb +75 -70
- data/lib/aws-sdk-core/xml/parser/stack.rb +4 -4
- data/lib/seahorse.rb +0 -11
- data/lib/seahorse/client/base.rb +3 -12
- data/lib/seahorse/client/http/request.rb +9 -5
- data/lib/seahorse/client/plugins/endpoint.rb +5 -56
- data/lib/seahorse/client/plugins/restful_bindings.rb +38 -31
- data/lib/seahorse/client/request_context.rb +2 -2
- data/lib/seahorse/client/response.rb +6 -5
- data/lib/seahorse/model/api.rb +18 -61
- data/lib/seahorse/model/operation.rb +24 -54
- data/lib/seahorse/model/shapes.rb +120 -364
- data/lib/seahorse/util.rb +2 -6
- metadata +56 -109
- data/apis/autoscaling/2011-01-01/docs-2.json +0 -1246
- data/apis/cloudformation/2010-05-15/docs-2.json +0 -725
- data/apis/cloudfront/2014-11-06/docs-2.json +0 -1125
- data/apis/cloudhsm/2014-05-30/docs-2.json +0 -472
- data/apis/cloudsearch/2013-01-01/docs-2.json +0 -865
- data/apis/cloudsearchdomain/2013-01-01/docs-2.json +0 -311
- data/apis/cloudtrail/2013-11-01/docs-2.json +0 -328
- data/apis/codedeploy/2014-10-06/docs-2.json +0 -1261
- data/apis/cognito-identity/2014-06-30/docs-2.json +0 -506
- data/apis/cognito-sync/2014-06-30/docs-2.json +0 -582
- data/apis/config/2014-10-17/docs-2.json +0 -513
- data/apis/config/2014-11-12/docs-2.json +0 -514
- data/apis/datapipeline/2012-10-29/docs-2.json +0 -607
- data/apis/directconnect/2012-10-25/docs-2.json +0 -494
- data/apis/ds/2015-04-16/docs-2.json +0 -753
- data/apis/dynamodb/2011-12-05/api-2.json +0 -949
- data/apis/dynamodb/2011-12-05/docs-2.json +0 -606
- data/apis/dynamodb/2011-12-05/paginators-1.json +0 -26
- data/apis/dynamodb/2011-12-05/waiters-2.json +0 -35
- data/apis/dynamodb/2012-08-10/docs-2.json +0 -977
- data/apis/ec2/2015-04-15/docs-2.json +0 -5368
- data/apis/ecs/2014-11-13/docs-2.json +0 -791
- data/apis/elasticache/2015-02-02/docs-2.json +0 -1390
- data/apis/elasticbeanstalk/2010-12-01/docs-2.json +0 -1114
- data/apis/elasticfilesystem/2015-02-01/docs-2.json +0 -414
- data/apis/elasticloadbalancing/2012-06-01/docs-2.json +0 -1078
- data/apis/elasticmapreduce/2009-03-31/docs-2.json +0 -969
- data/apis/elastictranscoder/2012-09-25/docs-2.json +0 -1152
- data/apis/email/2010-12-01/docs-2.json +0 -441
- data/apis/glacier/2012-06-01/docs-2.json +0 -575
- data/apis/iam/2010-05-08/docs-2.json +0 -2138
- data/apis/importexport/2010-06-01/docs-2.json +0 -432
- data/apis/kinesis/2013-12-02/docs-2.json +0 -424
- data/apis/kms/2014-11-01/docs-2.json +0 -628
- data/apis/lambda/2014-11-11/docs-2.json +0 -303
- data/apis/lambda/2015-03-31/docs-2.json +0 -490
- data/apis/logs/2014-03-28/docs-2.json +0 -599
- data/apis/machinelearning/2014-12-12/docs-2.json +0 -1034
- data/apis/monitoring/2010-08-01/docs-2.json +0 -514
- data/apis/opsworks/2013-02-18/docs-2.json +0 -1592
- data/apis/rds/2014-10-31/docs-2.json +0 -2074
- data/apis/redshift/2012-12-01/docs-2.json +0 -1890
- data/apis/route53/2013-04-01/docs-2.json +0 -1159
- data/apis/route53domains/2014-05-15/docs-2.json +0 -620
- data/apis/s3/2006-03-01/docs-2.json +0 -2213
- data/apis/sdb/2009-04-15/docs-2.json +0 -339
- data/apis/sns/2010-03-31/docs-2.json +0 -564
- data/apis/sqs/2012-11-05/docs-2.json +0 -503
- data/apis/ssm/2014-11-06/docs-2.json +0 -440
- data/apis/storagegateway/2013-06-30/docs-2.json +0 -1331
- data/apis/sts/2011-06-15/docs-2.json +0 -351
- data/apis/support/2013-04-15/docs-2.json +0 -680
- data/apis/swf/2012-01-25/docs-2.json +0 -1569
- data/apis/workspaces/2015-04-08/docs-2.json +0 -457
- data/lib/aws-sdk-core/api/customizer.rb +0 -75
- data/lib/aws-sdk-core/api/docstrings.rb +0 -38
- data/lib/aws-sdk-core/api/documenter.rb +0 -241
- data/lib/aws-sdk-core/api/operation_documenter.rb +0 -173
- data/lib/aws-sdk-core/api/operation_example.rb +0 -133
- data/lib/aws-sdk-core/api/service_customizations.rb +0 -140
- data/lib/aws-sdk-core/client_paging.rb +0 -31
- data/lib/aws-sdk-core/json/rest_handler.rb +0 -20
- data/lib/aws-sdk-core/json/rpc_body_handler.rb +0 -38
- data/lib/aws-sdk-core/json/rpc_headers_handler.rb +0 -34
- data/lib/aws-sdk-core/json/simple_body_handler.rb +0 -34
- data/lib/aws-sdk-core/paging/null_pager.rb +0 -20
- data/lib/aws-sdk-core/paging/null_provider.rb +0 -13
- data/lib/aws-sdk-core/paging/pager.rb +0 -70
- data/lib/aws-sdk-core/paging/provider.rb +0 -22
- data/lib/aws-sdk-core/rest_body_handler.rb +0 -111
- data/lib/aws-sdk-core/signers/handler.rb +0 -18
- data/lib/aws-sdk-core/xml/rest_handler.rb +0 -20
- data/lib/seahorse/client/param_converter.rb +0 -207
- data/lib/seahorse/client/param_validator.rb +0 -139
- data/lib/seahorse/client/plugins/json_simple.rb +0 -33
- data/lib/seahorse/client/plugins/param_conversion.rb +0 -29
- data/lib/seahorse/client/plugins/param_validation.rb +0 -30
- data/lib/seahorse/client/xml/builder.rb +0 -91
- data/lib/seahorse/model/shape_map.rb +0 -47
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
module Seahorse
|
|
2
|
-
module Client
|
|
3
|
-
class ParamValidator
|
|
4
|
-
|
|
5
|
-
# @param [Model::Shapes::Shape] shape
|
|
6
|
-
# @param [Hash] params
|
|
7
|
-
# @return [void]
|
|
8
|
-
def self.validate!(shape, params)
|
|
9
|
-
new(shape).validate!(params)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
# @param [Model::Shapes::Shape] shape
|
|
13
|
-
# @option options [Boolean] :validate_required (true)
|
|
14
|
-
def initialize(shape, options = {})
|
|
15
|
-
@shape = shape || Seahorse::Model::Shapes::Structure.new
|
|
16
|
-
@validate_required = options[:validate_required] != false
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
# @param [Hash] params
|
|
20
|
-
# @return [void]
|
|
21
|
-
def validate!(params)
|
|
22
|
-
errors = []
|
|
23
|
-
shape(@shape, params, errors, context = 'params')
|
|
24
|
-
raise ArgumentError, error_messages(errors) unless errors.empty?
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
private
|
|
28
|
-
|
|
29
|
-
def structure(structure, values, errors, context)
|
|
30
|
-
# ensure the value is hash like
|
|
31
|
-
return unless hash?(values, errors, context)
|
|
32
|
-
|
|
33
|
-
# ensure required members are present
|
|
34
|
-
if @validate_required
|
|
35
|
-
structure.required.each do |member_name|
|
|
36
|
-
if values[member_name].nil?
|
|
37
|
-
param = "#{context}[#{member_name.inspect}]"
|
|
38
|
-
errors << "missing required parameter #{param}"
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# validate non-nil members
|
|
44
|
-
values.each do |name, value|
|
|
45
|
-
unless value.nil?
|
|
46
|
-
if structure.member?(name)
|
|
47
|
-
member_shape = structure.member(name)
|
|
48
|
-
shape(member_shape, value, errors, context + "[#{name.inspect}]")
|
|
49
|
-
else
|
|
50
|
-
errors << "unexpected value at #{context}[#{name.inspect}]"
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def list(list, values, errors, context)
|
|
57
|
-
# ensure the value is an array
|
|
58
|
-
unless values.is_a?(Array)
|
|
59
|
-
errors << "expected #{context} to be an array"
|
|
60
|
-
return
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# validate members
|
|
64
|
-
values.each.with_index do |value, index|
|
|
65
|
-
shape(list.member, value, errors, context + "[#{index}]")
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def map(map, values, errors, context)
|
|
70
|
-
return unless hash?(values, errors, context)
|
|
71
|
-
values.each do |key, value|
|
|
72
|
-
shape(map.key, key, errors, "#{context} #{key.inspect} key")
|
|
73
|
-
shape(map.value, value, errors, context + "[#{key.inspect}]")
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def shape(shape, value, errors, context)
|
|
78
|
-
case shape
|
|
79
|
-
when Model::Shapes::Structure
|
|
80
|
-
structure(shape, value, errors, context)
|
|
81
|
-
when Model::Shapes::List
|
|
82
|
-
list(shape, value, errors, context)
|
|
83
|
-
when Model::Shapes::Map
|
|
84
|
-
map(shape, value, errors, context)
|
|
85
|
-
when Model::Shapes::String
|
|
86
|
-
unless value.is_a?(String)
|
|
87
|
-
errors << "expected #{context} to be a string"
|
|
88
|
-
end
|
|
89
|
-
when Model::Shapes::Integer
|
|
90
|
-
unless value.is_a?(Integer)
|
|
91
|
-
errors << "expected #{context} to be an integer"
|
|
92
|
-
end
|
|
93
|
-
when Model::Shapes::Float
|
|
94
|
-
unless value.is_a?(Float)
|
|
95
|
-
errors << "expected #{context} to be a float"
|
|
96
|
-
end
|
|
97
|
-
when Model::Shapes::Timestamp
|
|
98
|
-
unless value.is_a?(Time)
|
|
99
|
-
errors << "expected #{context} to be a Time object"
|
|
100
|
-
end
|
|
101
|
-
when Model::Shapes::Boolean
|
|
102
|
-
unless [true, false].include?(value)
|
|
103
|
-
errors << "expected #{context} to be true or false"
|
|
104
|
-
end
|
|
105
|
-
when Model::Shapes::Blob
|
|
106
|
-
unless io_like?(value) or value.is_a?(String)
|
|
107
|
-
errors << "expected #{context} to be a string or IO object"
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
def hash?(value, errors, context)
|
|
113
|
-
if value.is_a?(Hash)
|
|
114
|
-
true
|
|
115
|
-
else
|
|
116
|
-
errors << "expected #{context} to be a hash"
|
|
117
|
-
false
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
def io_like?(value)
|
|
122
|
-
value.respond_to?(:read) &&
|
|
123
|
-
value.respond_to?(:rewind) &&
|
|
124
|
-
value.respond_to?(:size)
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
def error_messages(errors)
|
|
128
|
-
if errors.size == 1
|
|
129
|
-
errors.first
|
|
130
|
-
else
|
|
131
|
-
prefix = "\n - "
|
|
132
|
-
"parameter validator found #{errors.size} errors:" +
|
|
133
|
-
prefix + errors.join(prefix)
|
|
134
|
-
end
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
module Seahorse
|
|
2
|
-
module Client
|
|
3
|
-
module Plugins
|
|
4
|
-
|
|
5
|
-
# This plugin performs two trivial translations:
|
|
6
|
-
#
|
|
7
|
-
# * The request parameters are serialized as JSON for the request body
|
|
8
|
-
# * The response body is deserialized as JSON for the response data
|
|
9
|
-
#
|
|
10
|
-
# No attempt is made to extract errors from the HTTP response body.
|
|
11
|
-
# Parsing the response only happens for a successful response.
|
|
12
|
-
#
|
|
13
|
-
class JsonSimple < Plugin
|
|
14
|
-
|
|
15
|
-
# @api private
|
|
16
|
-
class Handler < Client::Handler
|
|
17
|
-
|
|
18
|
-
def call(context)
|
|
19
|
-
context.http_request.body = MultiJson.dump(context.params)
|
|
20
|
-
@handler.call(context).on_success do |response|
|
|
21
|
-
response.error = nil
|
|
22
|
-
response.data = MultiJson.load(context.http_response.body_contents)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
handler(Handler)
|
|
29
|
-
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
module Seahorse
|
|
2
|
-
module Client
|
|
3
|
-
module Plugins
|
|
4
|
-
|
|
5
|
-
# @seahorse.client.option [Boolean] :convert_params (true)
|
|
6
|
-
# When `true`, an attempt is made to coerce request parameters
|
|
7
|
-
# into the required types.
|
|
8
|
-
class ParamConversion < Plugin
|
|
9
|
-
|
|
10
|
-
option(:convert_params, true)
|
|
11
|
-
|
|
12
|
-
def add_handlers(handlers, config)
|
|
13
|
-
handlers.add(Handler, step: :initialize) if config.convert_params
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
class Handler < Client::Handler
|
|
17
|
-
|
|
18
|
-
def call(context)
|
|
19
|
-
if input = context.operation.input
|
|
20
|
-
context.params = ParamConverter.convert(input, context.params)
|
|
21
|
-
end
|
|
22
|
-
@handler.call(context)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
module Seahorse
|
|
2
|
-
module Client
|
|
3
|
-
module Plugins
|
|
4
|
-
|
|
5
|
-
# @seahorse.client.option [Boolean] :validate_params (true)
|
|
6
|
-
# When `true`, request parameters are validated before
|
|
7
|
-
# sending the request.
|
|
8
|
-
class ParamValidation < Plugin
|
|
9
|
-
|
|
10
|
-
option(:validate_params, true)
|
|
11
|
-
|
|
12
|
-
def add_handlers(handlers, config)
|
|
13
|
-
if config.validate_params
|
|
14
|
-
handlers.add(Handler, step: :validate, priority: 50)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
class Handler < Client::Handler
|
|
19
|
-
|
|
20
|
-
def call(context)
|
|
21
|
-
ParamValidator.validate!(context.operation.input, context.params)
|
|
22
|
-
@handler.call(context)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
module Seahorse
|
|
2
|
-
module Client
|
|
3
|
-
module Xml
|
|
4
|
-
class Builder
|
|
5
|
-
|
|
6
|
-
class XmlDoc
|
|
7
|
-
|
|
8
|
-
# @option options [#<<] :target ('')
|
|
9
|
-
# @option options [String] :pad ('')
|
|
10
|
-
# @option options [String] :indent ('')
|
|
11
|
-
def initialize(options = {})
|
|
12
|
-
@target = options[:target] || ''
|
|
13
|
-
@indent = options[:indent] || ''
|
|
14
|
-
@pad = options[:pad] || ''
|
|
15
|
-
@end_of_line = @indent == '' ? '' : "\n"
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
attr_reader :target
|
|
19
|
-
|
|
20
|
-
# @overload node(name, attributes = {})
|
|
21
|
-
# Adds a self closing element without any content.
|
|
22
|
-
#
|
|
23
|
-
# @overload node(name, value, attributes = {})
|
|
24
|
-
# Adds an element that opens and closes on the same line with
|
|
25
|
-
# simple text content.
|
|
26
|
-
#
|
|
27
|
-
# @overload node(name, attributes = {}, &block)
|
|
28
|
-
# Adds a wrapping element. Calling {#node} from inside
|
|
29
|
-
# the yielded block creates nested elements.
|
|
30
|
-
#
|
|
31
|
-
# @return [void]
|
|
32
|
-
#
|
|
33
|
-
def node(name, *args, &block)
|
|
34
|
-
attrs = args.last.is_a?(Hash) ? args.pop : {}
|
|
35
|
-
if block_given?
|
|
36
|
-
@target << open_el(name, attrs)
|
|
37
|
-
@target << @end_of_line
|
|
38
|
-
increase_pad { yield }
|
|
39
|
-
@target << @pad
|
|
40
|
-
@target << close_el(name)
|
|
41
|
-
elsif args.empty?
|
|
42
|
-
@target << empty_element(name, attrs)
|
|
43
|
-
else
|
|
44
|
-
@target << inline_element(name, args.first, attrs)
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
private
|
|
49
|
-
|
|
50
|
-
def empty_element(name, attrs)
|
|
51
|
-
"#{@pad}<#{name}#{attributes(attrs)}/>#{@end_of_line}"
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def inline_element(name, value, attrs)
|
|
55
|
-
"#{open_el(name, attrs)}#{escape(value)}#{close_el(name)}"
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def open_el(name, attrs)
|
|
59
|
-
"#{@pad}<#{name}#{attributes(attrs)}>"
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def close_el(name)
|
|
63
|
-
"</#{name}>#{@end_of_line}"
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def escape(string)
|
|
67
|
-
string.to_s
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def attributes(attr)
|
|
71
|
-
if attr.empty?
|
|
72
|
-
''
|
|
73
|
-
else
|
|
74
|
-
' ' + attr.map do |key, value|
|
|
75
|
-
"#{key}=\"#{escape(value).gsub('"', '"')}\""
|
|
76
|
-
end.join(' ')
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def increase_pad(&block)
|
|
81
|
-
pre_increase = @pad
|
|
82
|
-
@pad = @pad + @indent
|
|
83
|
-
yield
|
|
84
|
-
@pad = pre_increase
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
end
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
module Seahorse
|
|
2
|
-
module Model
|
|
3
|
-
# @api private
|
|
4
|
-
class ShapeMap
|
|
5
|
-
|
|
6
|
-
# @param [Hash<String,Hash>] shape_defs ({}) A hash of shape definitions.
|
|
7
|
-
# Hash keys should be shape names. Hash values should be shape
|
|
8
|
-
# definitions.
|
|
9
|
-
def initialize(shape_defs = {})
|
|
10
|
-
@definitions = shape_defs
|
|
11
|
-
@shapes = {}
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
# @return [Hash]
|
|
15
|
-
attr_reader :definitions
|
|
16
|
-
|
|
17
|
-
# @param [Hash] shape_ref
|
|
18
|
-
# @option shape_ref [required, String] 'shape'
|
|
19
|
-
# @return [Shapes::Shape]
|
|
20
|
-
# @raise [ArgumentError] Raised when the given shape ref can not be
|
|
21
|
-
# resolved.
|
|
22
|
-
def shape(shape_ref)
|
|
23
|
-
@shapes[shape_ref] ||= build_shape(shape_ref)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# @return [Array<String>]
|
|
27
|
-
def shape_names
|
|
28
|
-
@definitions.keys
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
private
|
|
32
|
-
|
|
33
|
-
def build_shape(shape_ref)
|
|
34
|
-
Shapes::Shape.new(resolve(shape_ref), shape_map: self)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def resolve(shape_ref)
|
|
38
|
-
if definition = @definitions[shape_ref['shape']]
|
|
39
|
-
definition.merge(shape_ref)
|
|
40
|
-
else
|
|
41
|
-
raise ArgumentError, "shape not found for #{shape_ref.inspect}"
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|