aws-sdk-core 3.100.0 → 3.104.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (190) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/aws-sdk-core.rb +2 -0
  4. data/lib/aws-sdk-core/arn.rb +2 -0
  5. data/lib/aws-sdk-core/arn_parser.rb +2 -0
  6. data/lib/aws-sdk-core/assume_role_credentials.rb +2 -0
  7. data/lib/aws-sdk-core/assume_role_web_identity_credentials.rb +2 -0
  8. data/lib/aws-sdk-core/async_client_stubs.rb +2 -0
  9. data/lib/aws-sdk-core/binary.rb +2 -0
  10. data/lib/aws-sdk-core/binary/decode_handler.rb +2 -0
  11. data/lib/aws-sdk-core/binary/encode_handler.rb +2 -0
  12. data/lib/aws-sdk-core/binary/event_builder.rb +2 -0
  13. data/lib/aws-sdk-core/binary/event_parser.rb +2 -0
  14. data/lib/aws-sdk-core/binary/event_stream_decoder.rb +2 -0
  15. data/lib/aws-sdk-core/binary/event_stream_encoder.rb +2 -0
  16. data/lib/aws-sdk-core/client_side_monitoring/publisher.rb +2 -0
  17. data/lib/aws-sdk-core/client_side_monitoring/request_metrics.rb +2 -0
  18. data/lib/aws-sdk-core/client_stubs.rb +2 -0
  19. data/lib/aws-sdk-core/credential_provider.rb +2 -0
  20. data/lib/aws-sdk-core/credential_provider_chain.rb +2 -0
  21. data/lib/aws-sdk-core/credentials.rb +2 -0
  22. data/lib/aws-sdk-core/deprecations.rb +2 -0
  23. data/lib/aws-sdk-core/eager_loader.rb +2 -0
  24. data/lib/aws-sdk-core/ecs_credentials.rb +2 -0
  25. data/lib/aws-sdk-core/endpoint_cache.rb +2 -0
  26. data/lib/aws-sdk-core/errors.rb +2 -0
  27. data/lib/aws-sdk-core/event_emitter.rb +2 -0
  28. data/lib/aws-sdk-core/ini_parser.rb +2 -0
  29. data/lib/aws-sdk-core/instance_profile_credentials.rb +2 -0
  30. data/lib/aws-sdk-core/json.rb +2 -0
  31. data/lib/aws-sdk-core/json/builder.rb +2 -0
  32. data/lib/aws-sdk-core/json/error_handler.rb +2 -0
  33. data/lib/aws-sdk-core/json/handler.rb +2 -0
  34. data/lib/aws-sdk-core/json/json_engine.rb +2 -0
  35. data/lib/aws-sdk-core/json/oj_engine.rb +2 -0
  36. data/lib/aws-sdk-core/json/parser.rb +2 -0
  37. data/lib/aws-sdk-core/log/formatter.rb +8 -2
  38. data/lib/aws-sdk-core/log/handler.rb +2 -0
  39. data/lib/aws-sdk-core/log/param_filter.rb +29 -12
  40. data/lib/aws-sdk-core/log/param_formatter.rb +2 -0
  41. data/lib/aws-sdk-core/pageable_response.rb +10 -6
  42. data/lib/aws-sdk-core/pager.rb +2 -0
  43. data/lib/aws-sdk-core/param_converter.rb +2 -0
  44. data/lib/aws-sdk-core/param_validator.rb +2 -0
  45. data/lib/aws-sdk-core/plugins/api_key.rb +5 -1
  46. data/lib/aws-sdk-core/plugins/apig_authorizer_token.rb +2 -0
  47. data/lib/aws-sdk-core/plugins/apig_credentials_configuration.rb +2 -0
  48. data/lib/aws-sdk-core/plugins/apig_user_agent.rb +2 -0
  49. data/lib/aws-sdk-core/plugins/client_metrics_plugin.rb +2 -0
  50. data/lib/aws-sdk-core/plugins/client_metrics_send_plugin.rb +2 -0
  51. data/lib/aws-sdk-core/plugins/credentials_configuration.rb +2 -0
  52. data/lib/aws-sdk-core/plugins/endpoint_discovery.rb +2 -0
  53. data/lib/aws-sdk-core/plugins/endpoint_pattern.rb +2 -0
  54. data/lib/aws-sdk-core/plugins/event_stream_configuration.rb +2 -0
  55. data/lib/aws-sdk-core/plugins/global_configuration.rb +2 -0
  56. data/lib/aws-sdk-core/plugins/helpful_socket_errors.rb +2 -0
  57. data/lib/aws-sdk-core/plugins/http_checksum.rb +2 -0
  58. data/lib/aws-sdk-core/plugins/idempotency_token.rb +2 -0
  59. data/lib/aws-sdk-core/plugins/invocation_id.rb +2 -0
  60. data/lib/aws-sdk-core/plugins/jsonvalue_converter.rb +2 -0
  61. data/lib/aws-sdk-core/plugins/logging.rb +2 -0
  62. data/lib/aws-sdk-core/plugins/param_converter.rb +2 -0
  63. data/lib/aws-sdk-core/plugins/param_validator.rb +2 -0
  64. data/lib/aws-sdk-core/plugins/protocols/api_gateway.rb +2 -0
  65. data/lib/aws-sdk-core/plugins/protocols/ec2.rb +2 -0
  66. data/lib/aws-sdk-core/plugins/protocols/json_rpc.rb +2 -0
  67. data/lib/aws-sdk-core/plugins/protocols/query.rb +2 -0
  68. data/lib/aws-sdk-core/plugins/protocols/rest_json.rb +2 -0
  69. data/lib/aws-sdk-core/plugins/protocols/rest_xml.rb +2 -0
  70. data/lib/aws-sdk-core/plugins/regional_endpoint.rb +2 -0
  71. data/lib/aws-sdk-core/plugins/response_paging.rb +2 -0
  72. data/lib/aws-sdk-core/plugins/retries/client_rate_limiter.rb +2 -0
  73. data/lib/aws-sdk-core/plugins/retries/clock_skew.rb +2 -0
  74. data/lib/aws-sdk-core/plugins/retries/error_inspector.rb +2 -0
  75. data/lib/aws-sdk-core/plugins/retries/retry_quota.rb +2 -0
  76. data/lib/aws-sdk-core/plugins/retry_errors.rb +2 -0
  77. data/lib/aws-sdk-core/plugins/signature_v2.rb +2 -0
  78. data/lib/aws-sdk-core/plugins/signature_v4.rb +2 -0
  79. data/lib/aws-sdk-core/plugins/stub_responses.rb +4 -0
  80. data/lib/aws-sdk-core/plugins/transfer_encoding.rb +2 -0
  81. data/lib/aws-sdk-core/plugins/user_agent.rb +2 -0
  82. data/lib/aws-sdk-core/process_credentials.rb +3 -2
  83. data/lib/aws-sdk-core/query.rb +2 -0
  84. data/lib/aws-sdk-core/query/ec2_param_builder.rb +2 -0
  85. data/lib/aws-sdk-core/query/handler.rb +2 -0
  86. data/lib/aws-sdk-core/query/param.rb +2 -0
  87. data/lib/aws-sdk-core/query/param_builder.rb +2 -0
  88. data/lib/aws-sdk-core/query/param_list.rb +2 -0
  89. data/lib/aws-sdk-core/refreshing_credentials.rb +2 -0
  90. data/lib/aws-sdk-core/resources/collection.rb +2 -0
  91. data/lib/aws-sdk-core/rest.rb +2 -0
  92. data/lib/aws-sdk-core/rest/handler.rb +2 -0
  93. data/lib/aws-sdk-core/rest/request/body.rb +2 -0
  94. data/lib/aws-sdk-core/rest/request/builder.rb +2 -0
  95. data/lib/aws-sdk-core/rest/request/endpoint.rb +2 -0
  96. data/lib/aws-sdk-core/rest/request/headers.rb +2 -0
  97. data/lib/aws-sdk-core/rest/request/querystring_builder.rb +2 -0
  98. data/lib/aws-sdk-core/rest/response/body.rb +2 -0
  99. data/lib/aws-sdk-core/rest/response/headers.rb +2 -0
  100. data/lib/aws-sdk-core/rest/response/parser.rb +2 -0
  101. data/lib/aws-sdk-core/rest/response/status_code.rb +2 -0
  102. data/lib/aws-sdk-core/shared_config.rb +2 -0
  103. data/lib/aws-sdk-core/shared_credentials.rb +2 -0
  104. data/lib/aws-sdk-core/structure.rb +3 -1
  105. data/lib/aws-sdk-core/stubbing/data_applicator.rb +2 -0
  106. data/lib/aws-sdk-core/stubbing/empty_stub.rb +2 -0
  107. data/lib/aws-sdk-core/stubbing/protocols/api_gateway.rb +2 -0
  108. data/lib/aws-sdk-core/stubbing/protocols/ec2.rb +2 -0
  109. data/lib/aws-sdk-core/stubbing/protocols/json.rb +2 -0
  110. data/lib/aws-sdk-core/stubbing/protocols/query.rb +2 -0
  111. data/lib/aws-sdk-core/stubbing/protocols/rest.rb +2 -0
  112. data/lib/aws-sdk-core/stubbing/protocols/rest_json.rb +2 -0
  113. data/lib/aws-sdk-core/stubbing/protocols/rest_xml.rb +2 -0
  114. data/lib/aws-sdk-core/stubbing/stub_data.rb +2 -0
  115. data/lib/aws-sdk-core/stubbing/xml_error.rb +2 -0
  116. data/lib/aws-sdk-core/type_builder.rb +2 -0
  117. data/lib/aws-sdk-core/util.rb +2 -0
  118. data/lib/aws-sdk-core/waiters.rb +2 -0
  119. data/lib/aws-sdk-core/waiters/errors.rb +2 -0
  120. data/lib/aws-sdk-core/waiters/poller.rb +2 -0
  121. data/lib/aws-sdk-core/waiters/waiter.rb +2 -0
  122. data/lib/aws-sdk-core/xml.rb +2 -0
  123. data/lib/aws-sdk-core/xml/builder.rb +2 -0
  124. data/lib/aws-sdk-core/xml/default_list.rb +2 -0
  125. data/lib/aws-sdk-core/xml/default_map.rb +2 -0
  126. data/lib/aws-sdk-core/xml/doc_builder.rb +2 -0
  127. data/lib/aws-sdk-core/xml/error_handler.rb +2 -0
  128. data/lib/aws-sdk-core/xml/parser.rb +2 -0
  129. data/lib/aws-sdk-core/xml/parser/engines/libxml.rb +2 -0
  130. data/lib/aws-sdk-core/xml/parser/engines/nokogiri.rb +2 -0
  131. data/lib/aws-sdk-core/xml/parser/engines/oga.rb +2 -0
  132. data/lib/aws-sdk-core/xml/parser/engines/ox.rb +2 -0
  133. data/lib/aws-sdk-core/xml/parser/engines/rexml.rb +2 -0
  134. data/lib/aws-sdk-core/xml/parser/frame.rb +2 -0
  135. data/lib/aws-sdk-core/xml/parser/parsing_error.rb +2 -0
  136. data/lib/aws-sdk-core/xml/parser/stack.rb +2 -0
  137. data/lib/aws-sdk-sts.rb +3 -1
  138. data/lib/aws-sdk-sts/client.rb +3 -1
  139. data/lib/aws-sdk-sts/client_api.rb +2 -0
  140. data/lib/aws-sdk-sts/customizations.rb +2 -0
  141. data/lib/aws-sdk-sts/errors.rb +2 -0
  142. data/lib/aws-sdk-sts/plugins/sts_regional_endpoints.rb +2 -0
  143. data/lib/aws-sdk-sts/presigner.rb +2 -0
  144. data/lib/aws-sdk-sts/resource.rb +2 -0
  145. data/lib/aws-sdk-sts/types.rb +30 -0
  146. data/lib/seahorse.rb +3 -0
  147. data/lib/seahorse/client/async_base.rb +2 -0
  148. data/lib/seahorse/client/async_response.rb +2 -0
  149. data/lib/seahorse/client/base.rb +3 -0
  150. data/lib/seahorse/client/block_io.rb +5 -2
  151. data/lib/seahorse/client/configuration.rb +2 -0
  152. data/lib/seahorse/client/events.rb +2 -0
  153. data/lib/seahorse/client/h2/connection.rb +2 -0
  154. data/lib/seahorse/client/h2/handler.rb +2 -0
  155. data/lib/seahorse/client/handler.rb +2 -0
  156. data/lib/seahorse/client/handler_builder.rb +2 -0
  157. data/lib/seahorse/client/handler_list.rb +2 -0
  158. data/lib/seahorse/client/handler_list_entry.rb +2 -0
  159. data/lib/seahorse/client/http/async_response.rb +2 -0
  160. data/lib/seahorse/client/http/headers.rb +2 -0
  161. data/lib/seahorse/client/http/request.rb +2 -0
  162. data/lib/seahorse/client/http/response.rb +3 -1
  163. data/lib/seahorse/client/logging/formatter.rb +2 -0
  164. data/lib/seahorse/client/logging/handler.rb +2 -0
  165. data/lib/seahorse/client/managed_file.rb +2 -0
  166. data/lib/seahorse/client/net_http/connection_pool.rb +2 -0
  167. data/lib/seahorse/client/net_http/handler.rb +2 -0
  168. data/lib/seahorse/client/net_http/patches.rb +2 -0
  169. data/lib/seahorse/client/networking_error.rb +2 -0
  170. data/lib/seahorse/client/plugin.rb +2 -0
  171. data/lib/seahorse/client/plugin_list.rb +2 -0
  172. data/lib/seahorse/client/plugins/content_length.rb +2 -0
  173. data/lib/seahorse/client/plugins/endpoint.rb +2 -0
  174. data/lib/seahorse/client/plugins/h2.rb +2 -0
  175. data/lib/seahorse/client/plugins/logging.rb +2 -0
  176. data/lib/seahorse/client/plugins/net_http.rb +2 -0
  177. data/lib/seahorse/client/plugins/operation_methods.rb +2 -0
  178. data/lib/seahorse/client/plugins/raise_response_errors.rb +2 -0
  179. data/lib/seahorse/client/plugins/request_callback.rb +110 -0
  180. data/lib/seahorse/client/plugins/response_target.rb +8 -7
  181. data/lib/seahorse/client/request.rb +2 -0
  182. data/lib/seahorse/client/request_context.rb +2 -0
  183. data/lib/seahorse/client/response.rb +2 -0
  184. data/lib/seahorse/model/api.rb +2 -0
  185. data/lib/seahorse/model/authorizer.rb +2 -0
  186. data/lib/seahorse/model/operation.rb +2 -0
  187. data/lib/seahorse/model/shapes.rb +2 -0
  188. data/lib/seahorse/util.rb +2 -0
  189. data/lib/seahorse/version.rb +2 -0
  190. metadata +3 -2
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'seahorse/util'
2
4
 
3
5
  # client
@@ -48,6 +50,7 @@ require_relative 'seahorse/client/plugins/net_http'
48
50
  require_relative 'seahorse/client/plugins/h2'
49
51
  require_relative 'seahorse/client/plugins/raise_response_errors'
50
52
  require_relative 'seahorse/client/plugins/response_target'
53
+ require_relative 'seahorse/client/plugins/request_callback'
51
54
 
52
55
  # model
53
56
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  class AsyncBase < Seahorse::Client::Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  class AsyncResponse
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'thread'
2
4
 
3
5
  module Seahorse
@@ -12,6 +14,7 @@ module Seahorse
12
14
  Plugins::NetHttp,
13
15
  Plugins::RaiseResponseErrors,
14
16
  Plugins::ResponseTarget,
17
+ Plugins::RequestCallback
15
18
  ])
16
19
 
17
20
  # @api private
@@ -1,8 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  class BlockIO
4
6
 
5
- def initialize(&block)
7
+ def initialize(headers = nil, &block)
8
+ @headers = headers
6
9
  @block = block
7
10
  @size = 0
8
11
  end
@@ -10,7 +13,7 @@ module Seahorse
10
13
  # @param [String] chunk
11
14
  # @return [Integer]
12
15
  def write(chunk)
13
- @block.call(chunk)
16
+ @block.call(chunk, @headers)
14
17
  ensure
15
18
  chunk.bytesize.tap { |chunk_size| @size += chunk_size }
16
19
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'set'
2
4
 
3
5
  module Seahorse
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  module EventEmitter
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  if RUBY_VERSION >= '2.1'
2
4
  begin
3
5
  require 'http/2'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  if RUBY_VERSION >= '2.1'
2
4
  begin
3
5
  require 'http/2'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  class Handler
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'thread'
2
4
  require 'set'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  module Http
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  module Http
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'stringio'
2
4
  require 'uri'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  module Http
@@ -71,7 +73,7 @@ module Seahorse
71
73
 
72
74
  # Completes the http response.
73
75
  #
74
- # @example Completing the response in a singal call
76
+ # @example Completing the response in a single call
75
77
  #
76
78
  # http_response.signal_done(
77
79
  # status_code: 200,
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'pathname'
2
4
 
3
5
  module Seahorse
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  # @deprecated Use Aws::Logging instead.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  # This utility class is used to track files opened by Seahorse.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cgi'
2
4
  require 'net/http'
3
5
  require 'net/https'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'net/https'
2
4
  require 'openssl'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'net/http'
2
4
 
3
5
  module Seahorse
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  class NetworkingError < StandardError
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  class Plugin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'set'
2
4
  require 'thread'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  module Plugins
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  module Plugins
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'seahorse/client/h2/handler'
2
4
 
3
5
  module Seahorse
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  module Plugins
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'seahorse/client/net_http/handler'
2
4
 
3
5
  module Seahorse
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  module Plugins
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  module Plugins
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pathname'
4
+ require 'forwardable'
5
+
6
+ module Seahorse
7
+ module Client
8
+ module Plugins
9
+
10
+ # @api private
11
+ class ReadCallbackIO
12
+ extend Forwardable
13
+ def_delegators :@io, :size
14
+
15
+ def initialize(io, on_read = nil)
16
+ @io = io
17
+ @on_read = on_read if on_read.is_a? Proc
18
+ @bytes_read = 0
19
+
20
+ # Some IO objects support readpartial - IO.copy_stream used by the
21
+ # request will call readpartial if available, so define a wrapper
22
+ # for it if the underlying IO supports it.
23
+ if @io.respond_to?(:readpartial)
24
+ def self.readpartial(*args)
25
+ @io.readpartial(*args).tap do |chunk|
26
+ handle_chunk(chunk)
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ attr_reader :io
33
+
34
+ def read(*args)
35
+ @io.read(*args).tap do |chunk|
36
+ handle_chunk(chunk)
37
+ end
38
+ end
39
+
40
+ private
41
+
42
+ def handle_chunk(chunk)
43
+ @bytes_read += chunk.bytesize if chunk && chunk.respond_to?(:bytesize)
44
+ total_size = @io.respond_to?(:size) ? @io.size : nil
45
+ @on_read.call(chunk, @bytes_read, total_size) if @on_read
46
+ end
47
+ end
48
+
49
+ # @api private
50
+ class RequestCallback < Plugin
51
+
52
+ option(
53
+ :on_chunk_sent,
54
+ default: nil,
55
+ doc_type: 'Proc',
56
+ docstring: <<-DOCS)
57
+ When a Proc object is provided, it will be used as callback when each chunk
58
+ of the request body is sent. It provides three arguments: the chunk,
59
+ the number of bytes read from the body, and the total number of
60
+ bytes in the body.
61
+ DOCS
62
+
63
+ # @api private
64
+ class OptionHandler < Client::Handler
65
+ def call(context)
66
+ if context.params.is_a?(Hash)
67
+ on_chunk_sent = context.params.delete(:on_chunk_sent)
68
+ end
69
+ on_chunk_sent = context.config.on_chunk_sent if on_chunk_sent.nil?
70
+ context[:on_chunk_sent] = on_chunk_sent if on_chunk_sent
71
+ @handler.call(context)
72
+ end
73
+ end
74
+
75
+ # @api private
76
+ class ReadCallbackHandler < Client::Handler
77
+ def call(context)
78
+ if (callback = context[:on_chunk_sent])
79
+ context.http_request.body = ReadCallbackIO.new(
80
+ context.http_request.body,
81
+ callback
82
+ )
83
+ add_event_listeners(context)
84
+ end
85
+ @handler.call(context)
86
+ end
87
+
88
+ def add_event_listeners(context)
89
+ # unwrap the request body as soon as we start receiving a response
90
+ context.http_response.on_headers do
91
+ body = context.http_request.body
92
+ if body.is_a? ReadCallbackIO
93
+ context.http_request.body = body.io
94
+ end
95
+ end
96
+ end
97
+ end
98
+
99
+ # OptionHandler is needed to remove :on_chunk_sent
100
+ # from the params before build
101
+ handler(OptionHandler, step: :initialize)
102
+
103
+ # ReadCallbackHandlerneeds to go late in the call stack
104
+ # other plugins including Sigv4 and content_md5 read the request body
105
+ # and rewind it
106
+ handler(ReadCallbackHandler, step: :sign, priority: 0)
107
+ end
108
+ end
109
+ end
110
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'pathname'
2
4
 
3
5
  module Seahorse
@@ -15,10 +17,9 @@ module Seahorse
15
17
 
16
18
  def call(context)
17
19
  if context.params.is_a?(Hash) && context.params[:response_target]
18
- target = context.params.delete(:response_target)
19
- else
20
- target = context[:response_target]
20
+ context[:response_target] = context.params.delete(:response_target)
21
21
  end
22
+ target = context[:response_target]
22
23
  add_event_listeners(context, target) if target
23
24
  @handler.call(context)
24
25
  end
@@ -33,13 +34,13 @@ module Seahorse
33
34
  # an existing ManagedFile or BlockIO and those
34
35
  # should be reused.
35
36
  if context.http_response.body.is_a? StringIO
36
- context.http_response.body = handler.send(:io, target)
37
+ context.http_response.body = io(target, context.http_response.headers)
37
38
  end
38
39
  end
39
40
 
40
41
  context.http_response.on_success(200..299) do
41
42
  body = context.http_response.body
42
- if ManagedFile === body && body.open?
43
+ if body.is_a?(ManagedFile) && body.open?
43
44
  body.close
44
45
  end
45
46
  end
@@ -61,9 +62,9 @@ module Seahorse
61
62
  end
62
63
  end
63
64
 
64
- def io(target)
65
+ def io(target, headers)
65
66
  case target
66
- when Proc then BlockIO.new(&target)
67
+ when Proc then BlockIO.new(headers, &target)
67
68
  when String, Pathname then ManagedFile.new(target, 'w+b')
68
69
  else target
69
70
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Client
3
5
  class Request
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'stringio'
2
4
 
3
5
  module Seahorse
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'delegate'
2
4
 
3
5
  module Seahorse
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Seahorse
2
4
  module Model
3
5
  class Api