aws-sdk-code-generator 0.2.1.pre → 0.2.2.pre

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a65077a940c697e439cae503d4683f5aec9dd5aee7a154b63f380543786d524c
4
- data.tar.gz: 197c2c803eb600eb4d68f3b36a4ed0acec2effa7f3de11ec2dc610b610fd7765
3
+ metadata.gz: e4fa27373a270b0e11b172d68ccc2c1c5b7926f986a1fb630be00b0a591a956a
4
+ data.tar.gz: 78f1365cdb7d7b78bdb6b2269e8ce18a42907eff158f7dae9b20c7fcaf6b6a88
5
5
  SHA512:
6
- metadata.gz: 0403d7112475a44303431fbb706b7aa7fbf2d5422cfb8ba3d9f240e13e85ea638f358e19d9678d16ea8b6f87745728a55fdf20193c86e504c3828c0f6476fb1f
7
- data.tar.gz: e0623c91975e000b312db4d0106280b9655a0c1985e8684249dfd41171aeba38fe218ae88574e012b1d8a4879bfe03df3aa0515567fb05fe116c7567bb04e604
6
+ metadata.gz: 94e82e811fa8689c93762b0c590f2d12f3c0dbda5d040d932d7caeb5396096cf8b2109394bb992f0325b137993534cadd0905515f7265e74b25b9de81efb9f51
7
+ data.tar.gz: b7f27268bbc20faa1c6a6439019ca9ec57e905f509ff4b95904eb0e6b13f0bf6e87f6eca0b81b1235d60f5d961fc0bbd5fd2c97ed7076cda9c7bc8b595966c1a
@@ -47,12 +47,17 @@ module AwsSdkCodeGenerator
47
47
  end
48
48
  end
49
49
 
50
- def ruby_input_type(shape_ref, api, options = {})
50
+ def ruby_input_type(shape_ref, api, operation = nil, options = {})
51
51
  nested = options.fetch(:nested, false)
52
52
  _, shape = resolve(shape_ref, api)
53
53
  case shape['type']
54
54
  when 'byte' then 'Integer<byte>'
55
- when 'blob' then 'String, IO'
55
+ when 'blob'
56
+ if streaming_input?(shape, operation)
57
+ 'String, IO'
58
+ else
59
+ 'String, StringIO, File'
60
+ end
56
61
  when 'boolean' then 'Boolean'
57
62
  when 'character' then 'String<character>'
58
63
  when 'double' then 'Float'
@@ -62,14 +67,14 @@ module AwsSdkCodeGenerator
62
67
  if nested
63
68
  "Array"
64
69
  else
65
- "Array<#{ruby_input_type(shape['member'], api, nested: true)}>"
70
+ "Array<#{ruby_input_type(shape['member'], api, operation, nested: true)}>"
66
71
  end
67
72
  when 'long' then 'Integer'
68
73
  when 'map'
69
74
  if nested
70
75
  "Hash"
71
76
  else
72
- "Hash<String,#{ruby_input_type(shape['value'], api, nested: true)}>"
77
+ "Hash<String,#{ruby_input_type(shape['value'], api, operation, nested: true)}>"
73
78
  end
74
79
  when 'string' then 'String'
75
80
  when 'structure' then "Types::#{shape_ref['shape']}"
@@ -113,6 +118,12 @@ module AwsSdkCodeGenerator
113
118
  ref['eventstream'] || shape['eventstream']
114
119
  end
115
120
 
121
+ # @return [Boolean]
122
+ def streaming_input?(shape, operation)
123
+ shape['streaming'] && operation &&
124
+ operation['authtype'] == "v4-unsigned-body"
125
+ end
126
+
116
127
  def plural?(resource)
117
128
  plural = false
118
129
  (resource['identifiers'] || []).each do |i|
@@ -124,7 +135,6 @@ module AwsSdkCodeGenerator
124
135
  plural = true if resource['data'] && resource['data'].include?('[]')
125
136
  plural
126
137
  end
127
-
128
138
  end
129
139
  end
130
140
  end
@@ -102,7 +102,7 @@ module AwsSdkCodeGenerator
102
102
  end
103
103
  YardOptionTag.new(
104
104
  name: Underscore.underscore(member_name),
105
- ruby_type: Api.ruby_input_type(member_ref, api),
105
+ ruby_type: Api.ruby_input_type(member_ref, api, operation),
106
106
  required: shape.fetch('required', []).include?(member_name),
107
107
  docstring: Docstring.html_to_markdown(docstring),
108
108
  option_hash_name: 'params',
@@ -41,64 +41,6 @@ module AwsSdkCodeGenerator
41
41
  end
42
42
  end
43
43
 
44
- # @option options [Boolean] :nested (false)
45
- def ruby_input_type(shape_ref, options = {})
46
- nested = options.fetch(:nested, false)
47
- shape = @api['shapes'][shape_ref['shape']]
48
- case shape['type']
49
- when 'byte' then 'Integer<byte>'
50
- when 'blob' then 'String, IO'
51
- when 'boolean' then 'Boolean'
52
- when 'character' then 'String<character>'
53
- when 'double' then 'Float'
54
- when 'float' then 'Float'
55
- when 'integer' then 'Integer'
56
- when 'list'
57
- if nested
58
- "Array"
59
- else
60
- "Array<#{ruby_input_type(shape['member'], nested:true)}>"
61
- end
62
- when 'long' then 'Integer'
63
- when 'map'
64
- if nested
65
- "Hash"
66
- else
67
- "Hash<String,#{ruby_input_type(shape['value'], nested:true)}>"
68
- end
69
- when 'string' then 'String'
70
- when 'structure' then "Types::#{shape_ref['shape']}"
71
- when 'timestamp' then 'Time,DateTime,Date,Integer,String'
72
- else
73
- raise "unhandled type #{shape.type}.inspect"
74
- end
75
- end
76
-
77
- def ruby_type(shape_ref)
78
- shape = @api['shapes'][shape_ref['shape']]
79
- case shape['type']
80
- when 'blob' then streaming?(shape_ref, shape) ? 'IO' : 'String'
81
- when 'boolean' then 'Boolean'
82
- when 'byte' then 'Integer<byte>'
83
- when 'character' then 'String<character>'
84
- when 'double' then 'Float'
85
- when 'float' then 'Float'
86
- when 'integer' then 'Integer'
87
- when 'list' then "Array<#{ruby_type(shape['member'])}>"
88
- when 'long' then 'Integer'
89
- when 'map' then "Hash<String,#{ruby_type(shape['value'])}>"
90
- when 'string' then 'String'
91
- when 'structure' then "Types::#{shape_ref['shape']}"
92
- when 'timestamp' then 'Time'
93
- else
94
- raise "unhandled type #{shape['type'].inspect}"
95
- end
96
- end
97
-
98
- def streaming?(ref, shape)
99
- ref['streaming'] || shape['streaming']
100
- end
101
-
102
44
  # @option options [Integer] :line_width (70)
103
45
  def documentation(ref_or_shape, options = {})
104
46
  line_width = options.fetch(:line_width, 70)
@@ -27,7 +27,7 @@ module AwsSdkCodeGenerator
27
27
  plugins.delete(plugin_name)
28
28
  end
29
29
  plugins.map do |class_name, path|
30
- path = "./#{path}" unless path[0] == '/'
30
+ path = File.absolute_path(path)
31
31
  Kernel.require(path)
32
32
 
33
33
  Plugin.new(
@@ -15,6 +15,7 @@ module AwsSdkCodeGenerator
15
15
  # This will only be called if this is defined
16
16
  smoke_json = service.smoke_tests
17
17
  @client_region = smoke_json["defaultRegion"]
18
+ @client_endpoint = smoke_json["defaultEndpoint"]
18
19
  @smoke_tests = smoke_json["testCases"].map do |test|
19
20
  h = {
20
21
  operation: underscore(test["operationName"]),
@@ -37,7 +38,7 @@ module AwsSdkCodeGenerator
37
38
  end
38
39
  end
39
40
 
40
- attr_reader :service, :client_region, :smoke_tests
41
+ attr_reader :service, :client_region, :client_endpoint, :smoke_tests
41
42
 
42
43
  # @return [String|nil]
43
44
  def generated_src_warning
@@ -11,10 +11,12 @@ module AwsSdkCodeGenerator
11
11
  service = options.fetch(:service)
12
12
  @var_name = service.identifier
13
13
  @module_name = service.module_name
14
+ if service.smoke_tests
15
+ @client_endpoint = service.smoke_tests['defaultEndpoint']
16
+ end
14
17
  end
15
18
 
16
- attr_reader :var_name
17
- attr_reader :module_name
19
+ attr_reader :var_name, :module_name, :client_endpoint
18
20
 
19
21
  end
20
22
  end
@@ -4,7 +4,12 @@
4
4
  Feature: Smoke tests for {{service}}
5
5
 
6
6
  Background:
7
+ {{#client_endpoint}}
8
+ Given I create a client with endpoint '{{client_endpoint}}'
9
+ {{/client_endpoint}}
10
+ {{^client_endpoint}}
7
11
  Given I create a client in region '{{client_region}}'
12
+ {{/client_endpoint}}
8
13
  {{#smoke_tests}}
9
14
 
10
15
  {{smoke_test_tags}}
@@ -8,6 +8,10 @@ Given(/I create a client in region '(.*?)'/) do |region|
8
8
  @regional_client = {{module_name}}::Client.new(region: region)
9
9
  end
10
10
 
11
+ Given(/I create a client with endpoint '(.*?)'/) do |endpoint|
12
+ @regional_client = {{module_name}}::Client.new(endpoint: endpoint)
13
+ end
14
+
11
15
  When(/I call the operation '(.*?)' with params:/) do |operation, params|
12
16
  opts = JSON.parse(params, symbolize_names: true)
13
17
  begin
@@ -1,5 +1,10 @@
1
1
  Before("@{{var_name}}") do
2
+ {{#client_endpoint}}
3
+ @service = {{module_name}}::Resource.new(endpoint: '{{client_endpoint}}')
4
+ {{/client_endpoint}}
5
+ {{^client_endpoint}}
2
6
  @service = {{module_name}}::Resource.new
7
+ {{/client_endpoint}}
3
8
  @client = @service.client
4
9
  end
5
10
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-code-generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1.pre
4
+ version: 0.2.2.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-24 00:00:00.000000000 Z
11
+ date: 2020-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kramdown