Ruby fix typhoeus api client multiple call with file return type (#20615)

* [Ruby] fix Typhoeus api client multiple call with file return type

* update samples
This commit is contained in:
Maxime Vincent 2025-02-17 12:58:53 +01:00 committed by GitHub
parent c5fb60b5f2
commit 515c8827b2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 49 additions and 56 deletions

View File

@ -4,7 +4,8 @@
# the data deserialized from response body (may be a Tempfile or nil), response status code and response headers. # the data deserialized from response body (may be a Tempfile or nil), response status code and response headers.
def call_api(http_method, path, opts = {}) def call_api(http_method, path, opts = {})
request = build_request(http_method, path, opts) request = build_request(http_method, path, opts)
tempfile = download_file(request) if opts[:return_type] == 'File' tempfile = nil
(download_file(request) { tempfile = _1 }) if opts[:return_type] == 'File'
response = request.run response = request.run
if @config.debugging if @config.debugging
@ -145,17 +146,15 @@
chunk.force_encoding(encoding) chunk.force_encoding(encoding)
tempfile.write(chunk) tempfile.write(chunk)
end end
# run the request to ensure the tempfile is created successfully before returning it request.on_complete do
request.run if !tempfile
if tempfile fail ApiError.new("Failed to create the tempfile based on the HTTP response from the server: #{request.inspect}")
end
tempfile.close tempfile.close
@config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
"with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
"will be deleted automatically with GC. It's also recommended to delete the temp file "\ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
"explicitly with `tempfile.delete`" "explicitly with `tempfile.delete`"
else yield tempfile if block_given?
fail ApiError.new("Failed to create the tempfile based on the HTTP response from the server: #{request.inspect}")
end end
tempfile
end end

View File

@ -49,7 +49,8 @@ module OpenapiClient
# the data deserialized from response body (may be a Tempfile or nil), response status code and response headers. # the data deserialized from response body (may be a Tempfile or nil), response status code and response headers.
def call_api(http_method, path, opts = {}) def call_api(http_method, path, opts = {})
request = build_request(http_method, path, opts) request = build_request(http_method, path, opts)
tempfile = download_file(request) if opts[:return_type] == 'File' tempfile = nil
(download_file(request) { tempfile = _1 }) if opts[:return_type] == 'File'
response = request.run response = request.run
if @config.debugging if @config.debugging
@ -188,19 +189,17 @@ module OpenapiClient
chunk.force_encoding(encoding) chunk.force_encoding(encoding)
tempfile.write(chunk) tempfile.write(chunk)
end end
# run the request to ensure the tempfile is created successfully before returning it request.on_complete do
request.run if !tempfile
if tempfile fail ApiError.new("Failed to create the tempfile based on the HTTP response from the server: #{request.inspect}")
end
tempfile.close tempfile.close
@config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
"with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
"will be deleted automatically with GC. It's also recommended to delete the temp file "\ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
"explicitly with `tempfile.delete`" "explicitly with `tempfile.delete`"
else yield tempfile if block_given?
fail ApiError.new("Failed to create the tempfile based on the HTTP response from the server: #{request.inspect}")
end end
tempfile
end end
# Check if the given MIME is a JSON MIME. # Check if the given MIME is a JSON MIME.

View File

@ -49,7 +49,8 @@ module Petstore
# the data deserialized from response body (may be a Tempfile or nil), response status code and response headers. # the data deserialized from response body (may be a Tempfile or nil), response status code and response headers.
def call_api(http_method, path, opts = {}) def call_api(http_method, path, opts = {})
request = build_request(http_method, path, opts) request = build_request(http_method, path, opts)
tempfile = download_file(request) if opts[:return_type] == 'File' tempfile = nil
(download_file(request) { tempfile = _1 }) if opts[:return_type] == 'File'
response = request.run response = request.run
if @config.debugging if @config.debugging
@ -188,19 +189,17 @@ module Petstore
chunk.force_encoding(encoding) chunk.force_encoding(encoding)
tempfile.write(chunk) tempfile.write(chunk)
end end
# run the request to ensure the tempfile is created successfully before returning it request.on_complete do
request.run if !tempfile
if tempfile fail ApiError.new("Failed to create the tempfile based on the HTTP response from the server: #{request.inspect}")
end
tempfile.close tempfile.close
@config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
"with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
"will be deleted automatically with GC. It's also recommended to delete the temp file "\ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
"explicitly with `tempfile.delete`" "explicitly with `tempfile.delete`"
else yield tempfile if block_given?
fail ApiError.new("Failed to create the tempfile based on the HTTP response from the server: #{request.inspect}")
end end
tempfile
end end
# Check if the given MIME is a JSON MIME. # Check if the given MIME is a JSON MIME.

View File

@ -49,7 +49,8 @@ module Petstore
# the data deserialized from response body (may be a Tempfile or nil), response status code and response headers. # the data deserialized from response body (may be a Tempfile or nil), response status code and response headers.
def call_api(http_method, path, opts = {}) def call_api(http_method, path, opts = {})
request = build_request(http_method, path, opts) request = build_request(http_method, path, opts)
tempfile = download_file(request) if opts[:return_type] == 'File' tempfile = nil
(download_file(request) { tempfile = _1 }) if opts[:return_type] == 'File'
response = request.run response = request.run
if @config.debugging if @config.debugging
@ -188,19 +189,17 @@ module Petstore
chunk.force_encoding(encoding) chunk.force_encoding(encoding)
tempfile.write(chunk) tempfile.write(chunk)
end end
# run the request to ensure the tempfile is created successfully before returning it request.on_complete do
request.run if !tempfile
if tempfile fail ApiError.new("Failed to create the tempfile based on the HTTP response from the server: #{request.inspect}")
end
tempfile.close tempfile.close
@config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
"with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
"will be deleted automatically with GC. It's also recommended to delete the temp file "\ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
"explicitly with `tempfile.delete`" "explicitly with `tempfile.delete`"
else yield tempfile if block_given?
fail ApiError.new("Failed to create the tempfile based on the HTTP response from the server: #{request.inspect}")
end end
tempfile
end end
# Check if the given MIME is a JSON MIME. # Check if the given MIME is a JSON MIME.

View File

@ -49,7 +49,8 @@ module XAuthIDAlias
# the data deserialized from response body (may be a Tempfile or nil), response status code and response headers. # the data deserialized from response body (may be a Tempfile or nil), response status code and response headers.
def call_api(http_method, path, opts = {}) def call_api(http_method, path, opts = {})
request = build_request(http_method, path, opts) request = build_request(http_method, path, opts)
tempfile = download_file(request) if opts[:return_type] == 'File' tempfile = nil
(download_file(request) { tempfile = _1 }) if opts[:return_type] == 'File'
response = request.run response = request.run
if @config.debugging if @config.debugging
@ -188,19 +189,17 @@ module XAuthIDAlias
chunk.force_encoding(encoding) chunk.force_encoding(encoding)
tempfile.write(chunk) tempfile.write(chunk)
end end
# run the request to ensure the tempfile is created successfully before returning it request.on_complete do
request.run if !tempfile
if tempfile fail ApiError.new("Failed to create the tempfile based on the HTTP response from the server: #{request.inspect}")
end
tempfile.close tempfile.close
@config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
"with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
"will be deleted automatically with GC. It's also recommended to delete the temp file "\ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
"explicitly with `tempfile.delete`" "explicitly with `tempfile.delete`"
else yield tempfile if block_given?
fail ApiError.new("Failed to create the tempfile based on the HTTP response from the server: #{request.inspect}")
end end
tempfile
end end
# Check if the given MIME is a JSON MIME. # Check if the given MIME is a JSON MIME.

View File

@ -49,7 +49,8 @@ module DynamicServers
# the data deserialized from response body (may be a Tempfile or nil), response status code and response headers. # the data deserialized from response body (may be a Tempfile or nil), response status code and response headers.
def call_api(http_method, path, opts = {}) def call_api(http_method, path, opts = {})
request = build_request(http_method, path, opts) request = build_request(http_method, path, opts)
tempfile = download_file(request) if opts[:return_type] == 'File' tempfile = nil
(download_file(request) { tempfile = _1 }) if opts[:return_type] == 'File'
response = request.run response = request.run
if @config.debugging if @config.debugging
@ -187,19 +188,17 @@ module DynamicServers
chunk.force_encoding(encoding) chunk.force_encoding(encoding)
tempfile.write(chunk) tempfile.write(chunk)
end end
# run the request to ensure the tempfile is created successfully before returning it request.on_complete do
request.run if !tempfile
if tempfile fail ApiError.new("Failed to create the tempfile based on the HTTP response from the server: #{request.inspect}")
end
tempfile.close tempfile.close
@config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
"with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
"will be deleted automatically with GC. It's also recommended to delete the temp file "\ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
"explicitly with `tempfile.delete`" "explicitly with `tempfile.delete`"
else yield tempfile if block_given?
fail ApiError.new("Failed to create the tempfile based on the HTTP response from the server: #{request.inspect}")
end end
tempfile
end end
# Check if the given MIME is a JSON MIME. # Check if the given MIME is a JSON MIME.

View File

@ -49,7 +49,8 @@ module Petstore
# the data deserialized from response body (may be a Tempfile or nil), response status code and response headers. # the data deserialized from response body (may be a Tempfile or nil), response status code and response headers.
def call_api(http_method, path, opts = {}) def call_api(http_method, path, opts = {})
request = build_request(http_method, path, opts) request = build_request(http_method, path, opts)
tempfile = download_file(request) if opts[:return_type] == 'File' tempfile = nil
(download_file(request) { tempfile = _1 }) if opts[:return_type] == 'File'
response = request.run response = request.run
if @config.debugging if @config.debugging
@ -187,19 +188,17 @@ module Petstore
chunk.force_encoding(encoding) chunk.force_encoding(encoding)
tempfile.write(chunk) tempfile.write(chunk)
end end
# run the request to ensure the tempfile is created successfully before returning it request.on_complete do
request.run if !tempfile
if tempfile fail ApiError.new("Failed to create the tempfile based on the HTTP response from the server: #{request.inspect}")
end
tempfile.close tempfile.close
@config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
"with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
"will be deleted automatically with GC. It's also recommended to delete the temp file "\ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
"explicitly with `tempfile.delete`" "explicitly with `tempfile.delete`"
else yield tempfile if block_given?
fail ApiError.new("Failed to create the tempfile based on the HTTP response from the server: #{request.inspect}")
end end
tempfile
end end
# Check if the given MIME is a JSON MIME. # Check if the given MIME is a JSON MIME.