aws-sdk-core 3.114.0 → 3.180.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (132) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +617 -0
  3. data/VERSION +1 -1
  4. data/lib/aws-defaults/default_configuration.rb +153 -0
  5. data/lib/aws-defaults/defaults_mode_config_resolver.rb +107 -0
  6. data/lib/aws-defaults.rb +3 -0
  7. data/lib/aws-sdk-core/arn.rb +13 -0
  8. data/lib/aws-sdk-core/assume_role_credentials.rb +21 -7
  9. data/lib/aws-sdk-core/assume_role_web_identity_credentials.rb +14 -10
  10. data/lib/aws-sdk-core/binary/encode_handler.rb +12 -1
  11. data/lib/aws-sdk-core/client_stubs.rb +5 -1
  12. data/lib/aws-sdk-core/credential_provider.rb +3 -0
  13. data/lib/aws-sdk-core/credential_provider_chain.rb +10 -6
  14. data/lib/aws-sdk-core/ec2_metadata.rb +27 -7
  15. data/lib/aws-sdk-core/ecs_credentials.rb +121 -53
  16. data/lib/aws-sdk-core/endpoints/condition.rb +41 -0
  17. data/lib/aws-sdk-core/endpoints/endpoint.rb +17 -0
  18. data/lib/aws-sdk-core/endpoints/endpoint_rule.rb +75 -0
  19. data/lib/aws-sdk-core/endpoints/error_rule.rb +42 -0
  20. data/lib/aws-sdk-core/endpoints/function.rb +80 -0
  21. data/lib/aws-sdk-core/endpoints/matchers.rb +127 -0
  22. data/lib/aws-sdk-core/endpoints/reference.rb +31 -0
  23. data/lib/aws-sdk-core/endpoints/rule.rb +25 -0
  24. data/lib/aws-sdk-core/endpoints/rule_set.rb +52 -0
  25. data/lib/aws-sdk-core/endpoints/rules_provider.rb +37 -0
  26. data/lib/aws-sdk-core/endpoints/templater.rb +58 -0
  27. data/lib/aws-sdk-core/endpoints/tree_rule.rb +45 -0
  28. data/lib/aws-sdk-core/endpoints/url.rb +60 -0
  29. data/lib/aws-sdk-core/endpoints.rb +78 -0
  30. data/lib/aws-sdk-core/errors.rb +18 -1
  31. data/lib/aws-sdk-core/ini_parser.rb +7 -0
  32. data/lib/aws-sdk-core/instance_profile_credentials.rb +124 -18
  33. data/lib/aws-sdk-core/json/error_handler.rb +20 -1
  34. data/lib/aws-sdk-core/json/json_engine.rb +10 -8
  35. data/lib/aws-sdk-core/json/oj_engine.rb +33 -6
  36. data/lib/aws-sdk-core/json/parser.rb +8 -0
  37. data/lib/aws-sdk-core/json.rb +8 -26
  38. data/lib/aws-sdk-core/log/formatter.rb +6 -0
  39. data/lib/aws-sdk-core/log/param_filter.rb +9 -1
  40. data/lib/aws-sdk-core/pageable_response.rb +81 -26
  41. data/lib/aws-sdk-core/pager.rb +3 -0
  42. data/lib/aws-sdk-core/param_validator.rb +29 -0
  43. data/lib/aws-sdk-core/plugins/bearer_authorization.rb +67 -0
  44. data/lib/aws-sdk-core/plugins/checksum_algorithm.rb +340 -0
  45. data/lib/aws-sdk-core/plugins/credentials_configuration.rb +27 -1
  46. data/lib/aws-sdk-core/plugins/defaults_mode.rb +40 -0
  47. data/lib/aws-sdk-core/plugins/endpoint_discovery.rb +6 -2
  48. data/lib/aws-sdk-core/plugins/http_checksum.rb +8 -1
  49. data/lib/aws-sdk-core/plugins/jsonvalue_converter.rb +34 -6
  50. data/lib/aws-sdk-core/plugins/protocols/api_gateway.rb +17 -0
  51. data/lib/aws-sdk-core/plugins/protocols/rest_json.rb +16 -1
  52. data/lib/aws-sdk-core/plugins/recursion_detection.rb +38 -0
  53. data/lib/aws-sdk-core/plugins/regional_endpoint.rb +144 -17
  54. data/lib/aws-sdk-core/plugins/request_compression.rb +217 -0
  55. data/lib/aws-sdk-core/plugins/response_paging.rb +1 -1
  56. data/lib/aws-sdk-core/plugins/retries/error_inspector.rb +7 -4
  57. data/lib/aws-sdk-core/plugins/retry_errors.rb +21 -5
  58. data/lib/aws-sdk-core/plugins/sign.rb +201 -0
  59. data/lib/aws-sdk-core/plugins/signature_v2.rb +1 -0
  60. data/lib/aws-sdk-core/plugins/signature_v4.rb +28 -31
  61. data/lib/aws-sdk-core/plugins/stub_responses.rb +5 -1
  62. data/lib/aws-sdk-core/plugins/user_agent.rb +117 -14
  63. data/lib/aws-sdk-core/process_credentials.rb +9 -11
  64. data/lib/aws-sdk-core/refreshing_credentials.rb +41 -16
  65. data/lib/aws-sdk-core/refreshing_token.rb +71 -0
  66. data/lib/aws-sdk-core/rest/handler.rb +1 -1
  67. data/lib/aws-sdk-core/rest/request/body.rb +19 -1
  68. data/lib/aws-sdk-core/rest/request/headers.rb +14 -6
  69. data/lib/aws-sdk-core/rest/response/headers.rb +3 -1
  70. data/lib/aws-sdk-core/shared_config.rb +127 -13
  71. data/lib/aws-sdk-core/shared_credentials.rb +7 -1
  72. data/lib/aws-sdk-core/sso_credentials.rb +92 -52
  73. data/lib/aws-sdk-core/sso_token_provider.rb +135 -0
  74. data/lib/aws-sdk-core/static_token_provider.rb +14 -0
  75. data/lib/aws-sdk-core/structure.rb +16 -5
  76. data/lib/aws-sdk-core/stubbing/protocols/json.rb +1 -1
  77. data/lib/aws-sdk-core/stubbing/stub_data.rb +11 -0
  78. data/lib/aws-sdk-core/token.rb +31 -0
  79. data/lib/aws-sdk-core/token_provider.rb +15 -0
  80. data/lib/aws-sdk-core/token_provider_chain.rb +51 -0
  81. data/lib/aws-sdk-core/waiters/poller.rb +3 -1
  82. data/lib/aws-sdk-core/xml/builder.rb +1 -1
  83. data/lib/aws-sdk-core/xml/error_handler.rb +7 -0
  84. data/lib/aws-sdk-core/xml/parser/engines/oga.rb +2 -0
  85. data/lib/aws-sdk-core/xml/parser/engines/ox.rb +1 -1
  86. data/lib/aws-sdk-core/xml/parser/engines/rexml.rb +0 -8
  87. data/lib/aws-sdk-core/xml/parser/frame.rb +23 -0
  88. data/lib/aws-sdk-core.rb +20 -0
  89. data/lib/aws-sdk-sso/client.rb +97 -15
  90. data/lib/aws-sdk-sso/endpoint_parameters.rb +66 -0
  91. data/lib/aws-sdk-sso/endpoint_provider.rb +51 -0
  92. data/lib/aws-sdk-sso/endpoints.rb +72 -0
  93. data/lib/aws-sdk-sso/plugins/endpoints.rb +76 -0
  94. data/lib/aws-sdk-sso/types.rb +8 -43
  95. data/lib/aws-sdk-sso.rb +5 -1
  96. data/lib/aws-sdk-ssooidc/client.rb +626 -0
  97. data/lib/aws-sdk-ssooidc/client_api.rb +216 -0
  98. data/lib/aws-sdk-ssooidc/customizations.rb +1 -0
  99. data/lib/aws-sdk-ssooidc/endpoint_parameters.rb +66 -0
  100. data/lib/aws-sdk-ssooidc/endpoint_provider.rb +51 -0
  101. data/lib/aws-sdk-ssooidc/endpoints.rb +58 -0
  102. data/lib/aws-sdk-ssooidc/errors.rb +290 -0
  103. data/lib/aws-sdk-ssooidc/plugins/endpoints.rb +74 -0
  104. data/lib/aws-sdk-ssooidc/resource.rb +26 -0
  105. data/lib/aws-sdk-ssooidc/types.rb +502 -0
  106. data/lib/aws-sdk-ssooidc.rb +59 -0
  107. data/lib/aws-sdk-sts/client.rb +535 -472
  108. data/lib/aws-sdk-sts/client_api.rb +10 -0
  109. data/lib/aws-sdk-sts/endpoint_parameters.rb +78 -0
  110. data/lib/aws-sdk-sts/endpoint_provider.rb +112 -0
  111. data/lib/aws-sdk-sts/endpoints.rb +136 -0
  112. data/lib/aws-sdk-sts/plugins/endpoints.rb +84 -0
  113. data/lib/aws-sdk-sts/plugins/sts_regional_endpoints.rb +5 -1
  114. data/lib/aws-sdk-sts/presigner.rb +13 -9
  115. data/lib/aws-sdk-sts/types.rb +248 -313
  116. data/lib/aws-sdk-sts.rb +5 -1
  117. data/lib/seahorse/client/async_base.rb +0 -1
  118. data/lib/seahorse/client/configuration.rb +5 -5
  119. data/lib/seahorse/client/h2/connection.rb +26 -22
  120. data/lib/seahorse/client/h2/handler.rb +4 -5
  121. data/lib/seahorse/client/net_http/connection_pool.rb +7 -0
  122. data/lib/seahorse/client/net_http/handler.rb +15 -7
  123. data/lib/seahorse/client/net_http/patches.rb +13 -84
  124. data/lib/seahorse/client/plugins/content_length.rb +11 -5
  125. data/lib/seahorse/client/plugins/net_http.rb +33 -2
  126. data/lib/seahorse/client/plugins/request_callback.rb +9 -9
  127. data/lib/seahorse/client/response.rb +6 -0
  128. data/lib/seahorse/model/operation.rb +6 -0
  129. data/lib/seahorse/model/shapes.rb +25 -0
  130. data/lib/seahorse/util.rb +4 -0
  131. metadata +64 -12
  132. data/lib/aws-sdk-sso/plugins/content_type.rb +0 -25
@@ -2,16 +2,43 @@
2
2
 
3
3
  module Aws
4
4
  module Json
5
- class OjEngine
5
+ module OjEngine
6
+ # @api private
7
+ LOAD_OPTIONS = { mode: :compat, symbol_keys: false, empty_string: false }.freeze
6
8
 
7
- def self.load(json)
8
- Oj.load(json)
9
- end
9
+ # @api private
10
+ DUMP_OPTIONS = { mode: :compat }.freeze
11
+
12
+ class << self
13
+ def load(json)
14
+ Oj.load(json, LOAD_OPTIONS)
15
+ rescue *PARSE_ERRORS => e
16
+ raise ParseError.new(e)
17
+ end
18
+
19
+ def dump(value)
20
+ Oj.dump(value, DUMP_OPTIONS)
21
+ end
22
+
23
+ private
24
+
25
+ # Oj before 1.4.0 does not define Oj::ParseError and instead raises
26
+ # SyntaxError on failure
27
+ def detect_oj_parse_errors
28
+ require 'oj'
10
29
 
11
- def self.dump(value)
12
- Oj.dump(value)
30
+ if Oj.const_defined?(:ParseError)
31
+ [Oj::ParseError, EncodingError, JSON::ParserError]
32
+ else
33
+ [SyntaxError]
34
+ end
35
+ rescue LoadError
36
+ nil
37
+ end
13
38
  end
14
39
 
40
+ # @api private
41
+ PARSE_ERRORS = detect_oj_parse_errors
15
42
  end
16
43
  end
17
44
  end
@@ -28,8 +28,16 @@ module Aws
28
28
  member_name, member_ref = shape.member_by_location_name(key)
29
29
  if member_ref
30
30
  target[member_name] = parse_ref(member_ref, value)
31
+ elsif shape.union
32
+ target[:unknown] = { 'name' => key, 'value' => value }
31
33
  end
32
34
  end
35
+ if shape.union
36
+ # convert to subclass
37
+ member_subclass = shape.member_subclass(target.member).new
38
+ member_subclass[target.member] = target.value
39
+ target = member_subclass
40
+ end
33
41
  target
34
42
  end
35
43
 
@@ -5,6 +5,8 @@ require_relative 'json/builder'
5
5
  require_relative 'json/error_handler'
6
6
  require_relative 'json/handler'
7
7
  require_relative 'json/parser'
8
+ require_relative 'json/json_engine'
9
+ require_relative 'json/oj_engine'
8
10
 
9
11
  module Aws
10
12
  # @api private
@@ -20,9 +22,7 @@ module Aws
20
22
 
21
23
  class << self
22
24
  def load(json)
23
- ENGINE.load(json, *ENGINE_LOAD_OPTIONS)
24
- rescue *ENGINE_ERRORS => e
25
- raise ParseError, e
25
+ ENGINE.load(json)
26
26
  end
27
27
 
28
28
  def load_file(path)
@@ -30,38 +30,20 @@ module Aws
30
30
  end
31
31
 
32
32
  def dump(value)
33
- ENGINE.dump(value, *ENGINE_DUMP_OPTIONS)
33
+ ENGINE.dump(value)
34
34
  end
35
35
 
36
36
  private
37
37
 
38
- def oj_engine
38
+ def select_engine
39
39
  require 'oj'
40
- [
41
- Oj,
42
- [{ mode: :compat, symbol_keys: false, empty_string: false }],
43
- [{ mode: :compat }],
44
- oj_parse_error
45
- ]
40
+ OjEngine
46
41
  rescue LoadError
47
- false
48
- end
49
-
50
- def json_engine
51
- [JSON, [], [], [JSON::ParserError]]
52
- end
53
-
54
- def oj_parse_error
55
- if Oj.const_defined?('ParseError')
56
- [Oj::ParseError, EncodingError, JSON::ParserError]
57
- else
58
- [SyntaxError]
59
- end
42
+ JSONEngine
60
43
  end
61
44
  end
62
45
 
63
46
  # @api private
64
- ENGINE, ENGINE_LOAD_OPTIONS, ENGINE_DUMP_OPTIONS, ENGINE_ERRORS =
65
- oj_engine || json_engine
47
+ ENGINE = select_engine
66
48
  end
67
49
  end
@@ -26,6 +26,8 @@ module Aws
26
26
  #
27
27
  # You can put any of these placeholders into you pattern.
28
28
  #
29
+ # * `:region` - The region configured for the client.
30
+ #
29
31
  # * `:client_class` - The name of the client class.
30
32
  #
31
33
  # * `:operation` - The name of the client request method.
@@ -116,6 +118,10 @@ module Aws
116
118
 
117
119
  private
118
120
 
121
+ def _region(response)
122
+ response.context.config.region
123
+ end
124
+
119
125
  def _client_class(response)
120
126
  response.context.client.class.name
121
127
  end
@@ -26,7 +26,8 @@ module Aws
26
26
 
27
27
  def filter(values, type)
28
28
  case values
29
- when Struct, Hash then filter_hash(values, type)
29
+ when Struct then filter_struct(values, type)
30
+ when Hash then filter_hash(values, type)
30
31
  when Array then filter_array(values, type)
31
32
  else values
32
33
  end
@@ -34,6 +35,13 @@ module Aws
34
35
 
35
36
  private
36
37
 
38
+ def filter_struct(values, type)
39
+ if values.class.include? Aws::Structure::Union
40
+ values = { values.member => values.value }
41
+ end
42
+ filter_hash(values, type)
43
+ end
44
+
37
45
  def filter_hash(values, type)
38
46
  if type.const_defined?('SENSITIVE')
39
47
  filters = type::SENSITIVE + @additional_filters
@@ -48,11 +48,11 @@ module Aws
48
48
  #
49
49
  module PageableResponse
50
50
 
51
- def self.extended(base)
52
- base.extend Enumerable
53
- base.extend UnsafeEnumerableMethods
54
- base.instance_variable_set("@last_page", nil)
55
- base.instance_variable_set("@more_results", nil)
51
+ def self.apply(base)
52
+ base.extend Extension
53
+ base.instance_variable_set(:@last_page, nil)
54
+ base.instance_variable_set(:@more_results, nil)
55
+ base
56
56
  end
57
57
 
58
58
  # @return [Paging::Pager]
@@ -62,39 +62,26 @@ module Aws
62
62
  # when this method returns `false` will raise an error.
63
63
  # @return [Boolean]
64
64
  def last_page?
65
- if @last_page.nil?
66
- @last_page = !@pager.truncated?(self)
67
- end
68
- @last_page
65
+ # Actual implementation is in PageableResponse::Extension
69
66
  end
70
67
 
71
68
  # Returns `true` if there are more results. Calling {#next_page} will
72
69
  # return the next response.
73
70
  # @return [Boolean]
74
71
  def next_page?
75
- !last_page?
72
+ # Actual implementation is in PageableResponse::Extension
76
73
  end
77
74
 
78
75
  # @return [Seahorse::Client::Response]
79
76
  def next_page(params = {})
80
- if last_page?
81
- raise LastPageError.new(self)
82
- else
83
- next_response(params)
84
- end
77
+ # Actual implementation is in PageableResponse::Extension
85
78
  end
86
79
 
87
80
  # Yields the current and each following response to the given block.
88
81
  # @yieldparam [Response] response
89
82
  # @return [Enumerable,nil] Returns a new Enumerable if no block is given.
90
83
  def each(&block)
91
- return enum_for(:each_page) unless block_given?
92
- response = self
93
- yield(response)
94
- until response.last_page?
95
- response = response.next_page
96
- yield(response)
97
- end
84
+ # Actual implementation is in PageableResponse::Extension
98
85
  end
99
86
  alias each_page each
100
87
 
@@ -105,9 +92,7 @@ module Aws
105
92
  # @return [Seahorse::Client::Response] Returns the next page of
106
93
  # results.
107
94
  def next_response(params)
108
- params = next_page_params(params)
109
- request = context.client.build_request(context.operation_name, params)
110
- request.send_request
95
+ # Actual implementation is in PageableResponse::Extension
111
96
  end
112
97
 
113
98
  # @param [Hash] params A hash of additional request params to
@@ -115,7 +100,7 @@ module Aws
115
100
  # @return [Hash] Returns the hash of request parameters for the
116
101
  # next page, merging any given params.
117
102
  def next_page_params(params)
118
- context[:original_params].merge(@pager.next_tokens(self).merge(params))
103
+ # Actual implementation is in PageableResponse::Extension
119
104
  end
120
105
 
121
106
  # Raised when calling {PageableResponse#next_page} on a pager that
@@ -161,6 +146,76 @@ module Aws
161
146
  data.to_h
162
147
  end
163
148
 
149
+ def as_json(_options = {})
150
+ data.to_h(data, as_json: true)
151
+ end
152
+
153
+ def to_json(options = {})
154
+ as_json.to_json(options)
155
+ end
156
+ end
157
+
158
+ # The actual decorator module implementation. It is in a distinct module
159
+ # so that it can be used to extend objects without busting Ruby's constant cache.
160
+ # object.extend(mod) bust the constant cache only if `mod` contains constants of its own.
161
+ # @api private
162
+ module Extension
163
+
164
+ include Enumerable
165
+ include UnsafeEnumerableMethods
166
+
167
+ attr_accessor :pager
168
+
169
+ def last_page?
170
+ if @last_page.nil?
171
+ @last_page = !@pager.truncated?(self)
172
+ end
173
+ @last_page
174
+ end
175
+
176
+ def next_page?
177
+ !last_page?
178
+ end
179
+
180
+ def next_page(params = {})
181
+ if last_page?
182
+ raise LastPageError.new(self)
183
+ else
184
+ next_response(params)
185
+ end
186
+ end
187
+
188
+ def each(&block)
189
+ return enum_for(:each_page) unless block_given?
190
+ response = self
191
+ yield(response)
192
+ until response.last_page?
193
+ response = response.next_page
194
+ yield(response)
195
+ end
196
+ end
197
+ alias each_page each
198
+
199
+ private
200
+
201
+ def next_response(params)
202
+ params = next_page_params(params)
203
+ request = context.client.build_request(context.operation_name, params)
204
+ Aws::Plugins::UserAgent.feature('paginator') do
205
+ request.send_request
206
+ end
207
+ end
208
+
209
+ def next_page_params(params)
210
+ # Remove all previous tokens from original params
211
+ # Sometimes a token can be nil and merge would not include it.
212
+ tokens = @pager.tokens.values.map(&:to_sym)
213
+
214
+ params_without_tokens = context[:original_params].reject { |k, _v| tokens.include?(k) }
215
+ params_without_tokens.merge!(@pager.next_tokens(self).merge(params))
216
+ params_without_tokens
217
+ end
218
+
164
219
  end
165
220
  end
166
221
  end
@@ -18,6 +18,9 @@ module Aws
18
18
  # @return [Symbol, nil]
19
19
  attr_reader :limit_key
20
20
 
21
+ # @return [Hash, nil]
22
+ attr_reader :tokens
23
+
21
24
  # @param [Seahorse::Client::Response] response
22
25
  # @return [Hash]
23
26
  def next_tokens(response)
@@ -70,6 +70,14 @@ module Aws
70
70
  end
71
71
  end
72
72
 
73
+ if @validate_required && shape.union
74
+ if values.length > 1
75
+ errors << "multiple values provided to union at #{context} - must contain exactly one of the supported types: #{shape.member_names.join(', ')}"
76
+ elsif values.length == 0
77
+ errors << "No values provided to union at #{context} - must contain exactly one of the supported types: #{shape.member_names.join(', ')}"
78
+ end
79
+ end
80
+
73
81
  # validate non-nil members
74
82
  values.each_pair do |name, value|
75
83
  unless value.nil?
@@ -117,11 +125,32 @@ module Aws
117
125
  end
118
126
  end
119
127
 
128
+ def document(ref, value, errors, context)
129
+ document_types = [Hash, Array, Numeric, String, TrueClass, FalseClass, NilClass]
130
+ unless document_types.any? { |t| value.is_a?(t) }
131
+ errors << expected_got(context, "one of #{document_types.join(', ')}", value)
132
+ end
133
+
134
+ # recursively validate types for aggregated types
135
+ case value
136
+ when Hash
137
+ value.each do |k, v|
138
+ document(ref, v, errors, context + "[#{k}]")
139
+ end
140
+ when Array
141
+ value.each do |v|
142
+ document(ref, v, errors, context)
143
+ end
144
+ end
145
+
146
+ end
147
+
120
148
  def shape(ref, value, errors, context)
121
149
  case ref.shape
122
150
  when StructureShape then structure(ref, value, errors, context)
123
151
  when ListShape then list(ref, value, errors, context)
124
152
  when MapShape then map(ref, value, errors, context)
153
+ when DocumentShape then document(ref, value, errors, context)
125
154
  when StringShape
126
155
  unless value.is_a?(String)
127
156
  errors << expected_got(context, "a String", value)
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aws
4
+ # @api private
5
+ module Plugins
6
+ # @api private
7
+ class BearerAuthorization < Seahorse::Client::Plugin
8
+
9
+ option(:token_provider,
10
+ required: false,
11
+ doc_type: 'Aws::TokenProvider',
12
+ docstring: <<-DOCS
13
+ A Bearer Token Provider. This can be an instance of any one of the
14
+ following classes:
15
+
16
+ * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing
17
+ tokens.
18
+
19
+ * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an
20
+ access token generated from `aws login`.
21
+
22
+ When `:token_provider` is not configured directly, the `Aws::TokenProviderChain`
23
+ will be used to search for tokens configured for your profile in shared configuration files.
24
+ DOCS
25
+ ) do |config|
26
+ if config.stub_responses
27
+ StaticTokenProvider.new('token')
28
+ else
29
+ TokenProviderChain.new(config).resolve
30
+ end
31
+ end
32
+
33
+
34
+ def add_handlers(handlers, cfg)
35
+ bearer_operations =
36
+ if cfg.api.metadata['signatureVersion'] == 'bearer'
37
+ # select operations where authtype is either not set or is bearer
38
+ cfg.api.operation_names.select do |o|
39
+ !cfg.api.operation(o)['authtype'] || cfg.api.operation(o)['authtype'] == 'bearer'
40
+ end
41
+ else # service is not bearer auth
42
+ # select only operations where authtype is explicitly bearer
43
+ cfg.api.operation_names.select do |o|
44
+ cfg.api.operation(o)['authtype'] == 'bearer'
45
+ end
46
+ end
47
+ handlers.add(Handler, step: :sign, operations: bearer_operations)
48
+ end
49
+
50
+ class Handler < Seahorse::Client::Handler
51
+ def call(context)
52
+ if context.http_request.endpoint.scheme != 'https'
53
+ raise ArgumentError, 'Unable to use bearer authorization on non https endpoint.'
54
+ end
55
+
56
+ token_provider = context.config.token_provider
57
+ if token_provider && token_provider.set?
58
+ context.http_request.headers['Authorization'] = "Bearer #{token_provider.token.token}"
59
+ else
60
+ raise Errors::MissingBearerTokenError
61
+ end
62
+ @handler.call(context)
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end