Skip to content

Commit dd94e9b

Browse files
author
Matt Muller
committed
Refactor and fix endpoint provider and specs
1 parent 1d5e825 commit dd94e9b

3 files changed

Lines changed: 37 additions & 44 deletions

File tree

gems/smithy/lib/smithy/templates/client/endpoint_provider.erb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ module <%= module_name %>
99
# @return [Smithy::Client::EndpointRules::Endpoint]
1010
# @raise [ArgumentError]
1111
def resolve(parameters)
12-
<%= endpoint_rules_code %>
12+
<% endpoint_rules_code.each do |line| -%>
13+
<%= line %>
14+
<% end -%>
1315
end
1416
end
1517
end

gems/smithy/lib/smithy/templates/client/endpoint_provider_spec.erb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ module <%= module_name %>
5151
<%= p.param %>: <%= p.value %>,
5252
<% end -%>
5353
)
54-
resolved_endpoint = context[:resolved_endpoint]
55-
expect(resolved_endpoint.url).to eq(URI.parse(expected['endpoint']['url']))
54+
resolved_endpoint = response.context[:resolved_endpoint]
55+
expect(resolved_endpoint.url).to eq(expected['endpoint']['url'])
5656
expect(resolved_endpoint.headers).to eq(expected['endpoint']['headers'] || {})
5757
expect(resolved_endpoint.properties).to eq(expected['endpoint']['properties'] || {})
5858
<% end -%>

gems/smithy/lib/smithy/views/client/endpoint_provider.rb

Lines changed: 32 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# frozen_string_literal: true
22

3-
require 'stringio'
4-
53
module Smithy
64
module Views
75
module Client
@@ -24,23 +22,21 @@ def module_name
2422
@plan.module_name
2523
end
2624

27-
# TODO: simplify this by removing levels and just returning line strings
2825
def endpoint_rules_code
29-
res = StringIO.new
26+
lines = []
3027
@endpoint_rules['rules'].each do |rule|
3128
case rule['type']
3229
when 'endpoint'
33-
res << endpoint_rule(rule, 3)
30+
lines.concat(endpoint_rule(rule, 3))
3431
when 'error'
35-
res << error_rule(rule, 3)
32+
lines.concat(error_rule(rule, 3))
3633
when 'tree'
37-
res << tree_rule(rule, 3)
34+
lines.concat(tree_rule(rule, 3))
3835
else
3936
raise "Unknown rule type: #{rule['type']}"
4037
end
4138
end
42-
43-
res.string
39+
lines
4440
end
4541

4642
private
@@ -58,20 +54,19 @@ def endpoint_rule(rule, levels = 3)
5854
end
5955

6056
def endpoint_rule_with_condition(levels, rule)
61-
res = StringIO.new
62-
res << conditions(rule['conditions'], levels)
63-
res << endpoint(rule['endpoint'], levels + 1)
64-
res << indent("end\n", levels)
65-
res.string
57+
lines = []
58+
lines.concat(conditions(rule['conditions'], levels))
59+
lines.concat(endpoint(rule['endpoint'], levels + 1))
60+
lines.push(indent('end', levels))
61+
lines
6662
end
6763

6864
def endpoint(endpoint, levels)
69-
res = StringIO.new
70-
res << "return Smithy::Client::EndpointRules::Endpoint.new(url: #{str(endpoint['url'])}"
71-
res << ", headers: #{templated_hash_to_s(endpoint['headers'])}" if endpoint['headers']
72-
res << ", properties: #{templated_hash_to_s(endpoint['properties'])}" if endpoint['properties']
73-
res << ")\n"
74-
indent(res.string, levels)
65+
line = "return Smithy::Client::EndpointRules::Endpoint.new(url: #{str(endpoint['url'])}"
66+
line << ", headers: #{templated_hash_to_s(endpoint['headers'])}" if endpoint['headers']
67+
line << ", properties: #{templated_hash_to_s(endpoint['properties'])}" if endpoint['properties']
68+
line << ')'
69+
[indent(line, levels)]
7570
end
7671

7772
def templated_hash_to_s(hash)
@@ -106,17 +101,15 @@ def error_rule(rule, levels = 3)
106101
end
107102

108103
def error_rule_with_condition(levels, rule)
109-
res = StringIO.new
110-
res << conditions(rule['conditions'], levels)
111-
res << error(rule['error'], levels + 1)
112-
res << indent("end\n", levels)
113-
res.string
104+
lines = []
105+
lines.concat(conditions(rule['conditions'], levels))
106+
lines.concat(error(rule['error'], levels + 1))
107+
lines.push(indent('end', levels))
108+
lines
114109
end
115110

116111
def error(error, levels)
117-
error_str = "raise ArgumentError, #{str(error)}"
118-
error_str += "\n" unless levels == 3
119-
indent(error_str, levels)
112+
[indent("raise ArgumentError, #{str(error)}", levels)]
120113
end
121114

122115
def tree_rule(rule, levels = 3)
@@ -128,35 +121,33 @@ def tree_rule(rule, levels = 3)
128121
end
129122

130123
def tree_rule_with_condition(levels, rule)
131-
res = StringIO.new
132-
res << conditions(rule['conditions'], levels)
133-
res << tree_rules(rule['rules'], levels + 1)
134-
res << indent("end\n", levels)
135-
res.string
124+
lines = []
125+
lines.concat(conditions(rule['conditions'], levels))
126+
lines.concat(tree_rules(rule['rules'], levels + 1))
127+
lines.push(indent('end', levels))
128+
lines
136129
end
137130

138131
def tree_rules(rules, levels)
139-
res = StringIO.new
132+
lines = []
140133
rules.each do |rule|
141134
case rule['type']
142135
when 'endpoint'
143-
res << endpoint_rule(rule, levels)
136+
lines.concat(endpoint_rule(rule, levels))
144137
when 'error'
145-
res << error_rule(rule, levels)
138+
lines.concat(error_rule(rule, levels))
146139
when 'tree'
147-
res << tree_rule(rule, levels)
140+
lines.concat(tree_rule(rule, levels))
148141
else
149142
raise "Unknown rule type: #{rule['type']}"
150143
end
151144
end
152-
res.string
145+
lines
153146
end
154147

155148
def conditions(conditions, level)
156-
res = StringIO.new
157149
cnd_str = conditions.map { |c| condition(c) }.join(' && ')
158-
res << indent("if #{cnd_str}\n", level)
159-
res.string
150+
[indent("if #{cnd_str}", level)]
160151
end
161152

162153
def condition(condition)

0 commit comments

Comments
 (0)