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,75 +0,0 @@
|
|
|
1
|
-
module Aws
|
|
2
|
-
module Api
|
|
3
|
-
class Customizer
|
|
4
|
-
|
|
5
|
-
# @api private
|
|
6
|
-
def initialize(client_class)
|
|
7
|
-
@client_class = client_class
|
|
8
|
-
@api = client_class.api
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
# @return [Class<Seahorse::Client::Base>]
|
|
12
|
-
attr_reader :client_class
|
|
13
|
-
|
|
14
|
-
# @return [Seahorse::Model::Api]
|
|
15
|
-
attr_reader :api
|
|
16
|
-
|
|
17
|
-
# @api private
|
|
18
|
-
def apply(&customizations)
|
|
19
|
-
instance_eval(&customizations)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
# @param [String, Class<Seahorse::Client::Plugin>] plugin
|
|
23
|
-
def add_plugin(plugin)
|
|
24
|
-
@client_class.add_plugin(plugin)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# @param [String, Class<Seahorse::Client::Plugin>] plugin
|
|
28
|
-
def remove_plugin(plugin)
|
|
29
|
-
@client_class.remove_plugin(plugin)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def metadata(key, value)
|
|
33
|
-
@client_class.api.definition['metadata'][key] = value
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def add_shape(shape_name, definition)
|
|
37
|
-
@client_class.api.definition['shapes'][shape_name] = definition
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def reshape(shape_name, modifications)
|
|
41
|
-
shape = @client_class.api.definition['shapes'][shape_name]
|
|
42
|
-
shape = deep_merge(shape, modifications)
|
|
43
|
-
@client_class.api.definition['shapes'][shape_name] = shape
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def reshape_members(member_regex, modifications)
|
|
47
|
-
if member_regex.is_a?(String)
|
|
48
|
-
member_regex = /^#{member_regex}$/
|
|
49
|
-
end
|
|
50
|
-
@client_class.api.definition['shapes'].each_value do |shape|
|
|
51
|
-
if shape['members']
|
|
52
|
-
shape['members'].each do |member_name, member_ref|
|
|
53
|
-
if member_name.match(member_regex)
|
|
54
|
-
shape['members'][member_name] = deep_merge(member_ref, modifications)
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def each_operation(&block)
|
|
62
|
-
@client_class.api.definition['operations'].each(&block)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
private
|
|
66
|
-
|
|
67
|
-
def deep_merge(first_hash, other_hash)
|
|
68
|
-
first_hash.merge(other_hash) do |key, old, new|
|
|
69
|
-
Hash === old && Hash === new ? deep_merge(old, new) : new
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
module Aws
|
|
2
|
-
module Api
|
|
3
|
-
# @api private
|
|
4
|
-
# This module loads the API documentation for the given API.
|
|
5
|
-
module Docstrings
|
|
6
|
-
|
|
7
|
-
def self.apply(client_class, path)
|
|
8
|
-
api = client_class.api.definition
|
|
9
|
-
docs = File.open(path, 'r', encoding: 'UTF-8') { |f| f.read }
|
|
10
|
-
docs = MultiJson.load(docs)
|
|
11
|
-
|
|
12
|
-
api['documentation'] = docs['service']
|
|
13
|
-
|
|
14
|
-
docs['operations'].each do |operation, doc|
|
|
15
|
-
api['operations'][operation]['documentation'] = doc
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
docs['shapes'].each do |shape_name, shape|
|
|
19
|
-
api['shapes'][shape_name]['documentation'] = shape['base']
|
|
20
|
-
shape['refs'].each do |ref,doc|
|
|
21
|
-
if doc.nil?
|
|
22
|
-
doc = shape['base']
|
|
23
|
-
end
|
|
24
|
-
target_shape_name, member = ref.split('$')
|
|
25
|
-
target_shape = api['shapes'][target_shape_name]
|
|
26
|
-
case target_shape['type']
|
|
27
|
-
when 'structure' then target_shape['members'][member]['documentation'] = doc
|
|
28
|
-
when 'list' then target_shape[member]['documentation'] = doc
|
|
29
|
-
when 'map' then target_shape[member]['documentation'] = doc
|
|
30
|
-
else raise 'not handled'
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
client_class.set_api(Seahorse::Model::Api.new(api))
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
require 'erb'
|
|
2
|
-
|
|
3
|
-
module Aws
|
|
4
|
-
module Api
|
|
5
|
-
class Documenter
|
|
6
|
-
|
|
7
|
-
def initialize(svc_module, docs_path)
|
|
8
|
-
@svc_module = svc_module
|
|
9
|
-
@svc_name = svc_module.name.split('::').last
|
|
10
|
-
@client_class = svc_module.const_get(:Client)
|
|
11
|
-
Aws::Api::Docstrings.apply(@client_class, docs_path)
|
|
12
|
-
@api = @client_class.api
|
|
13
|
-
@full_name = @api.metadata('serviceFullName')
|
|
14
|
-
@error_names = @api.operations.map {|_,o| o.errors.map(&:name) }
|
|
15
|
-
@error_names = @error_names.flatten.uniq.sort
|
|
16
|
-
@namespace = YARD::Registry['Aws']
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def apply
|
|
20
|
-
document_service
|
|
21
|
-
document_client
|
|
22
|
-
document_errors
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
private
|
|
26
|
-
|
|
27
|
-
def document_service
|
|
28
|
-
yard_mod = YARD::CodeObjects::ModuleObject.new(@namespace, @svc_name)
|
|
29
|
-
yard_mod.docstring = service_docstring
|
|
30
|
-
yard_mod.docstring.add_tag(YARD::Tags::Tag.new(:service, @svc_name))
|
|
31
|
-
@namespace = yard_mod
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def service_docstring
|
|
35
|
-
path = "doc-src/services/#{@svc_name}/service.md"
|
|
36
|
-
path = 'doc-src/services/default/service.md' unless File.exists?(path)
|
|
37
|
-
template = read(path)
|
|
38
|
-
svc_name = @svc_name
|
|
39
|
-
api = @api
|
|
40
|
-
full_name = @full_name
|
|
41
|
-
ERB.new(template).result(binding)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def document_errors
|
|
45
|
-
yard_mod = YARD::CodeObjects::ModuleObject.new(@namespace, 'Errors')
|
|
46
|
-
yard_mod.docstring = errors_docstring
|
|
47
|
-
|
|
48
|
-
base_error = YARD::CodeObjects::ClassObject.new(yard_mod, 'ServiceError')
|
|
49
|
-
base_error.docstring = "Base class for all Aws::#{@svc_name} errors."
|
|
50
|
-
base_error.superclass = YARD::Registry['Aws::Errors::ServiceError']
|
|
51
|
-
|
|
52
|
-
@error_names.each do |error_name|
|
|
53
|
-
error_klass = YARD::CodeObjects::ClassObject.new(yard_mod, error_name)
|
|
54
|
-
error_klass.superclass = base_error
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def errors_docstring
|
|
59
|
-
path = "doc-src/services/#{@svc_name}/errors.md"
|
|
60
|
-
path = 'doc-src/services/default/errors.md' unless File.exists?(path)
|
|
61
|
-
template = read(path)
|
|
62
|
-
svc_name = @svc_name
|
|
63
|
-
api = @api
|
|
64
|
-
full_name = @full_name
|
|
65
|
-
known_errors = @error_names
|
|
66
|
-
ERB.new(template).result(binding)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def document_client
|
|
70
|
-
yard_class = YARD::CodeObjects::ClassObject.new(@namespace, 'Client')
|
|
71
|
-
yard_class.superclass = YARD::Registry['Seahorse::Client::Base']
|
|
72
|
-
yard_class.docstring = client_docstring
|
|
73
|
-
document_client_constructor(yard_class)
|
|
74
|
-
document_client_operations(yard_class)
|
|
75
|
-
document_client_waiters(yard_class)
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def client_docstring
|
|
79
|
-
path = "doc-src/services/#{@svc_name}/client.md"
|
|
80
|
-
path = 'doc-src/services/default/client.md' unless File.exists?(path)
|
|
81
|
-
render(path)
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def render(path)
|
|
85
|
-
svc_name = @svc_name
|
|
86
|
-
api = @api
|
|
87
|
-
full_name = @full_name
|
|
88
|
-
ERB.new(File.read(path)).result(binding)
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
def document_client_constructor(namespace)
|
|
92
|
-
constructor = YARD::CodeObjects::MethodObject.new(namespace, :initialize)
|
|
93
|
-
constructor.group = 'Constructor'
|
|
94
|
-
constructor.scope = :instance
|
|
95
|
-
constructor.parameters << ['options', '{}']
|
|
96
|
-
constructor.docstring = client_constructor_docstring
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
def client_constructor_docstring
|
|
100
|
-
<<-DOCS.strip
|
|
101
|
-
Constructs an API client.
|
|
102
|
-
#{client_constructor_options}
|
|
103
|
-
@return [#{@client_class.name}] Returns an API client.
|
|
104
|
-
DOCS
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def client_constructor_options
|
|
108
|
-
options = {}
|
|
109
|
-
@client_class.plugins.each do |plugin|
|
|
110
|
-
if p = YARD::Registry[plugin.name]
|
|
111
|
-
p.tags.each do |tag|
|
|
112
|
-
if tag.tag_name == 'seahorse_client_option'
|
|
113
|
-
option_name = tag.text.match(/.+(:\w+)/)[1]
|
|
114
|
-
option_text = "@option options " + tag.text.split("\n").join("\n ")
|
|
115
|
-
options[option_name] = option_text +
|
|
116
|
-
" See {#{plugin.name}} for more details."
|
|
117
|
-
end
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
options.sort_by { |k,v| k }.map(&:last).join("\n")
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
def document_client_operations(namespace)
|
|
125
|
-
@api.operations.each do |method_name, operation|
|
|
126
|
-
document_client_operation(namespace, method_name, operation)
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
def document_client_operation(namespace, method_name, operation)
|
|
131
|
-
m = YARD::CodeObjects::MethodObject.new(namespace, method_name)
|
|
132
|
-
m.group = 'Service Operations'
|
|
133
|
-
m.scope = :instance
|
|
134
|
-
m.parameters << ['params', '{}']
|
|
135
|
-
m.docstring = operation_docstring(method_name, operation)
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
def operation_docstring(method_name, operation)
|
|
139
|
-
|
|
140
|
-
documentor = OperationDocumenter.new(
|
|
141
|
-
svc_var_name: @svc_name.downcase,
|
|
142
|
-
method_name: method_name,
|
|
143
|
-
operation: operation)
|
|
144
|
-
|
|
145
|
-
tabs = Tabulator.new.tap do |t|
|
|
146
|
-
t.tab(method_name, 'Formatting Example') do
|
|
147
|
-
"<pre><code>#{documentor.example}</code></pre>"
|
|
148
|
-
end
|
|
149
|
-
t.tab(method_name, 'Request Parameters') do
|
|
150
|
-
documentor.input
|
|
151
|
-
end
|
|
152
|
-
t.tab(method_name, 'Response Structure') do
|
|
153
|
-
documentor.output
|
|
154
|
-
end
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
errors = (operation.errors || []).map { |shape| shape.name }
|
|
158
|
-
errors = errors.map { |e| "@raise [Errors::#{e}]" }.join("\n")
|
|
159
|
-
|
|
160
|
-
docstring = <<-DOCSTRING.strip
|
|
161
|
-
<p>Calls the #{operation.name} operation.<p>
|
|
162
|
-
#{documentor.api_ref(operation)}
|
|
163
|
-
#{tabs}
|
|
164
|
-
@param [Hash] params ({})
|
|
165
|
-
@return [PageableResponse]
|
|
166
|
-
#{errors}
|
|
167
|
-
DOCSTRING
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
def document_client_waiters(yard_class)
|
|
171
|
-
m = YARD::CodeObjects::MethodObject.new(yard_class, :wait_until)
|
|
172
|
-
m.scope = :instance
|
|
173
|
-
m.parameters << ['waiter_name', nil]
|
|
174
|
-
m.parameters << ['params', '{}']
|
|
175
|
-
m.docstring = YARD::Registry['Aws::ClientWaiters#wait_until'].docstring
|
|
176
|
-
|
|
177
|
-
waiters = @client_class.waiters.waiter_names.sort.inject('') do |w,name|
|
|
178
|
-
waiter = @client_class.waiters.waiter(name)
|
|
179
|
-
operation = waiter.poller.operation_name
|
|
180
|
-
w << "<tr><td><tt>:#{name}</tt></td><td>{##{operation}}</td><td>#{waiter.delay}</td><td>#{waiter.max_attempts}</td></tr>"
|
|
181
|
-
end
|
|
182
|
-
docstring = <<-DOCSTRING
|
|
183
|
-
Returns the list of supported waiters. The following table lists the supported
|
|
184
|
-
waiters and the client method they call:
|
|
185
|
-
<table>
|
|
186
|
-
<thead>
|
|
187
|
-
<tr><th>Waiter Name</th><th>Client Method</th><th>Delay</th><th>Max Attempts</th></tr>
|
|
188
|
-
</thead>
|
|
189
|
-
<tbody>
|
|
190
|
-
#{waiters}
|
|
191
|
-
</tbody>
|
|
192
|
-
</table>
|
|
193
|
-
@return [Array<Symbol>] the list of supported waiters.
|
|
194
|
-
DOCSTRING
|
|
195
|
-
m = YARD::CodeObjects::MethodObject.new(yard_class, :waiter_names)
|
|
196
|
-
m.scope = :instance
|
|
197
|
-
m.docstring = docstring
|
|
198
|
-
end
|
|
199
|
-
|
|
200
|
-
class Tabulator
|
|
201
|
-
|
|
202
|
-
def initialize
|
|
203
|
-
@tabs = []
|
|
204
|
-
@tab_contents = []
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
def tab(method_name, tab_name, &block)
|
|
208
|
-
tab_class = tab_name.downcase.gsub(/[^a-z]+/i, '-')
|
|
209
|
-
tab_id = "#{method_name.to_s.gsub(/_/, '-')}-#{tab_class}"
|
|
210
|
-
class_names = ['tab-contents', tab_class]
|
|
211
|
-
@tabs << [tab_id, tab_name]
|
|
212
|
-
@tab_contents << "<div class=\"#{class_names.join(' ')}\" id=\"#{tab_id}\">"
|
|
213
|
-
@tab_contents << yield
|
|
214
|
-
@tab_contents << '</div>'
|
|
215
|
-
end
|
|
216
|
-
|
|
217
|
-
def to_html
|
|
218
|
-
lines = []
|
|
219
|
-
lines << '<div class="tab-box">'
|
|
220
|
-
lines << '<ul class="tabs">'
|
|
221
|
-
@tabs.each do |tab_id, tab_name|
|
|
222
|
-
lines << "<li data-tab-id=\"#{tab_id}\">#{tab_name}</li>"
|
|
223
|
-
end
|
|
224
|
-
lines << '</ul>'
|
|
225
|
-
lines.concat(@tab_contents)
|
|
226
|
-
lines << '</div>'
|
|
227
|
-
lines.join
|
|
228
|
-
end
|
|
229
|
-
alias inspect to_html
|
|
230
|
-
alias to_str to_html
|
|
231
|
-
alias to_s to_html
|
|
232
|
-
|
|
233
|
-
end
|
|
234
|
-
|
|
235
|
-
def read(path)
|
|
236
|
-
File.open(path, 'r', encoding: 'UTF-8') { |f| f.read }
|
|
237
|
-
end
|
|
238
|
-
|
|
239
|
-
end
|
|
240
|
-
end
|
|
241
|
-
end
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
module Aws
|
|
2
|
-
module Api
|
|
3
|
-
class OperationDocumenter
|
|
4
|
-
|
|
5
|
-
def initialize(options)
|
|
6
|
-
@operation = options[:operation]
|
|
7
|
-
@example = OperationExample.new(options)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def input
|
|
11
|
-
params(nil) do
|
|
12
|
-
if @operation.input
|
|
13
|
-
lines = []
|
|
14
|
-
if @operation.output
|
|
15
|
-
lines << '<div class="param"><div class="entry"><span class="key">:response_target</span> => String, Pathname, File</div>Optional path to a file or file object where the HTTP response body should be written.</div>'
|
|
16
|
-
end
|
|
17
|
-
lines + structure(@operation.input, [])
|
|
18
|
-
else
|
|
19
|
-
[]
|
|
20
|
-
end
|
|
21
|
-
end.join
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def output
|
|
25
|
-
params(nil) do
|
|
26
|
-
if @operation.output
|
|
27
|
-
structure(@operation.output, [])
|
|
28
|
-
else
|
|
29
|
-
[]
|
|
30
|
-
end
|
|
31
|
-
end.join
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def example
|
|
35
|
-
@example
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def clean(docs)
|
|
39
|
-
docs = docs.gsub(/<!--.*?-->/m, '')
|
|
40
|
-
docs = docs.gsub(/<examples?>.+?<\/examples?>/m, '')
|
|
41
|
-
docs = docs.gsub(/<\/?note>/m, '')
|
|
42
|
-
docs = docs.gsub(/\{(\S+)\}/, '`{\1}`')
|
|
43
|
-
docs = docs.gsub(/\s+/, ' ').strip
|
|
44
|
-
docs
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def api_ref(shape)
|
|
48
|
-
docs = shape.nil? ? '' : shape.documentation
|
|
49
|
-
if docs && !docs.empty?
|
|
50
|
-
"<div class=\"api-ref\">#{clean(docs)}</div>"
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
private
|
|
55
|
-
|
|
56
|
-
def params(shape, &block)
|
|
57
|
-
if shape && shape.name == 'AttributeValue'
|
|
58
|
-
['<p>An attribute value may be one of:<ul><li>`Hash`</li><li>`Array`</li><li>`String`</li><li>`Numeric`</li><li>`true` | `false`</li><li>`nil`</li><li>`IO`</li><li>`Set<String,Numeric,IO>`</li></ul></p>']
|
|
59
|
-
else
|
|
60
|
-
['<div class="params">', api_ref(shape)] + yield + ['</div>']
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def param(shape, key_name, value_type, required, visited, &block)
|
|
65
|
-
lines = []
|
|
66
|
-
lines << '<div class="param">'
|
|
67
|
-
lines << entry(shape, key_name, value_type, required, visited)
|
|
68
|
-
|
|
69
|
-
if visited.include?(shape)
|
|
70
|
-
lines << "AttributeValue, recursive"
|
|
71
|
-
else
|
|
72
|
-
visited = visited + [shape]
|
|
73
|
-
yield(lines) if block_given?
|
|
74
|
-
lines += nested_params(shape, visited)
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
lines << '</div>'
|
|
78
|
-
lines
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def nested_params(shape, visited)
|
|
82
|
-
if leaf?(shape)
|
|
83
|
-
nested(shape, visited)
|
|
84
|
-
else
|
|
85
|
-
params(shape) { nested(shape, visited) }
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def nested(shape, visited)
|
|
90
|
-
case shape
|
|
91
|
-
when Seahorse::Model::Shapes::Structure then structure(shape, visited)
|
|
92
|
-
when Seahorse::Model::Shapes::Map then map(shape, visited)
|
|
93
|
-
when Seahorse::Model::Shapes::List then list(shape, visited)
|
|
94
|
-
else [api_ref(shape)]
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
def structure(shape, visited)
|
|
99
|
-
shape.members.inject([]) do |lines, (member_name, member_shape)|
|
|
100
|
-
lines += param(member_shape, member_name, shape_type(member_shape), shape.required.include?(member_name), visited)
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
def map(shape, visited)
|
|
105
|
-
param(shape.value, key_name(shape), value_type(shape), false, visited)
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def list(shape, visited)
|
|
109
|
-
case shape.member
|
|
110
|
-
when Seahorse::Model::Shapes::Structure then structure(shape.member, visited)
|
|
111
|
-
when Seahorse::Model::Shapes::Map then map(shape.member, visited)
|
|
112
|
-
when Seahorse::Model::Shapes::List then raise NotImplementedError
|
|
113
|
-
else [api_ref(shape)]
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
def entry(shape, key_name, value_type, required, visited)
|
|
118
|
-
classes = ['key']
|
|
119
|
-
classes << 'required' if required
|
|
120
|
-
line = '<div class="entry">'
|
|
121
|
-
line << "<span class=\"#{classes.join(' ')}\">#{key_name.inspect}</span>"
|
|
122
|
-
line << " => #{value_type}"
|
|
123
|
-
line << '</div>'
|
|
124
|
-
line
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
def shape_type(shape)
|
|
128
|
-
case shape
|
|
129
|
-
when Seahorse::Model::Shapes::Structure then 'Hash'
|
|
130
|
-
when Seahorse::Model::Shapes::Map then 'Hash'
|
|
131
|
-
when Seahorse::Model::Shapes::List then "Array<#{value_type(shape)}>"
|
|
132
|
-
when Seahorse::Model::Shapes::String then 'String'
|
|
133
|
-
when Seahorse::Model::Shapes::Timestamp then 'Time'
|
|
134
|
-
when Seahorse::Model::Shapes::Integer then 'Integer'
|
|
135
|
-
when Seahorse::Model::Shapes::Float then 'Number'
|
|
136
|
-
when Seahorse::Model::Shapes::Boolean then 'Boolean'
|
|
137
|
-
when Seahorse::Model::Shapes::Blob then 'String,IO'
|
|
138
|
-
else raise "unhandled type #{shape.type}"
|
|
139
|
-
end
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
def key_type(shape)
|
|
143
|
-
shape_type(shape.key)
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
def value_type(shape)
|
|
147
|
-
case shape
|
|
148
|
-
when Seahorse::Model::Shapes::List then shape_type(shape.member)
|
|
149
|
-
when Seahorse::Model::Shapes::Map then shape_type(shape.value)
|
|
150
|
-
else raise 'stop'
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
def key_name(shape)
|
|
155
|
-
shape.key.metadata('shape')
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
def value_name(shape)
|
|
159
|
-
shape.members.metadata('shape')
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
def leaf?(shape)
|
|
163
|
-
case shape
|
|
164
|
-
when Seahorse::Model::Shapes::Structure then false
|
|
165
|
-
when Seahorse::Model::Shapes::Map then false
|
|
166
|
-
when Seahorse::Model::Shapes::List then leaf?(shape.member)
|
|
167
|
-
else true
|
|
168
|
-
end
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
end
|
|
172
|
-
end
|
|
173
|
-
end
|