lib/hubspot/codegen/cms/blogs/blog-posts/api_client.rb in hubspot-api-client-15.0.2 vs lib/hubspot/codegen/cms/blogs/blog-posts/api_client.rb in hubspot-api-client-16.0.0
- old
+ new
@@ -4,18 +4,19 @@
#Use these endpoints for interacting with Blog Posts, Blog Authors, and Blog Tags
The version of the OpenAPI document: v3
Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 4.3.1
+OpenAPI Generator version: 6.2.1
=end
require 'date'
require 'json'
require 'logger'
require 'tempfile'
+require 'time'
require 'typhoeus'
module Hubspot
module Cms
module Blogs
@@ -101,16 +102,17 @@
# @option opts [Hash] :query_params Query parameters
# @option opts [Hash] :form_params Query parameters
# @option opts [Object] :body HTTP body (JSON/XML)
# @return [Typhoeus::Request] A Typhoeus Request
def build_request(http_method, path, opts = {})
- url = build_request_url(path)
+ url = build_request_url(path, opts)
http_method = http_method.to_sym.downcase
header_params = @default_headers.merge(opts[:header_params] || {})
query_params = opts[:query_params] || {}
form_params = opts[:form_params] || {}
+ follow_location = opts[:follow_location] || true
update_params_for_auth! header_params, query_params, opts[:auth_names]
# set ssl_verifyhosts option based on @config.verify_ssl_host (true/false)
_verify_ssl_host = @config.verify_ssl_host ? 2 : 0
@@ -123,11 +125,12 @@
:timeout => @config.timeout,
:ssl_verifypeer => @config.verify_ssl,
:ssl_verifyhost => _verify_ssl_host,
:sslcert => @config.cert_file,
:sslkey => @config.key_file,
- :verbose => @config.debugging
+ :verbose => @config.debugging,
+ :followlocation => follow_location
}
# set custom cert, if provided
req_opts[:cainfo] = @config.ssl_ca_cert if @config.ssl_ca_cert
@@ -170,10 +173,48 @@
data = nil
end
data
end
+ # Save response body into a file in (the defined) temporary folder, using the filename
+ # from the "Content-Disposition" header if provided, otherwise a random filename.
+ # The response body is written to the file in chunks in order to handle files which
+ # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
+ # process can use.
+ #
+ # @see Configuration#temp_folder_path
+ def download_file(request)
+ tempfile = nil
+ encoding = nil
+ request.on_headers do |response|
+ content_disposition = response.headers['Content-Disposition']
+ if content_disposition && content_disposition =~ /filename=/i
+ filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
+ prefix = sanitize_filename(filename)
+ else
+ prefix = 'download-'
+ end
+ prefix = prefix + '-' unless prefix.end_with?('-')
+ encoding = response.body.encoding
+ tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
+ @tempfile = tempfile
+ end
+ request.on_body do |chunk|
+ chunk.force_encoding(encoding)
+ tempfile.write(chunk)
+ end
+ request.on_complete do |response|
+ if tempfile
+ tempfile.close
+ @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 "\
+ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
+ "explicitly with `tempfile.delete`"
+ end
+ end
+ end
+
# Check if the given MIME is a JSON MIME.
# JSON MIME examples:
# application/json
# application/json; charset=UTF8
# APPLICATION/JSON
@@ -206,11 +247,11 @@
fail "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
begin
data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
rescue JSON::ParserError => e
- if %w(String Date DateTime).include?(return_type)
+ if %w(String Date Time).include?(return_type)
data = body
else
raise e
end
end
@@ -231,13 +272,13 @@
data.to_i
when 'Float'
data.to_f
when 'Boolean'
data == true
- when 'DateTime'
+ when 'Time'
# parse date time (expecting ISO 8601 format)
- DateTime.parse data
+ Time.parse data
when 'Date'
# parse date time (expecting ISO 8601 format)
Date.parse data
when 'Object'
# generic object (usually a Hash), return directly
@@ -251,69 +292,32 @@
sub_type = $1
{}.tap do |hash|
data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
end
else
- # models, e.g. Pet
- Hubspot::Cms::Blogs::BlogPosts.const_get(return_type).build_from_hash(data)
+ # models (e.g. Pet) or oneOf
+ klass = Hubspot::Cms::Blogs::BlogPosts.const_get(return_type)
+ klass.respond_to?(:openapi_one_of) ? klass.build(data) : klass.build_from_hash(data)
end
end
- # Save response body into a file in (the defined) temporary folder, using the filename
- # from the "Content-Disposition" header if provided, otherwise a random filename.
- # The response body is written to the file in chunks in order to handle files which
- # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
- # process can use.
- #
- # @see Configuration#temp_folder_path
- def download_file(request)
- tempfile = nil
- encoding = nil
- request.on_headers do |response|
- content_disposition = response.headers['Content-Disposition']
- if content_disposition && content_disposition =~ /filename=/i
- filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
- prefix = sanitize_filename(filename)
- else
- prefix = 'download-'
- end
- prefix = prefix + '-' unless prefix.end_with?('-')
- encoding = response.body.encoding
- tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
- @tempfile = tempfile
- end
- request.on_body do |chunk|
- chunk.force_encoding(encoding)
- tempfile.write(chunk)
- end
- request.on_complete do |response|
- if tempfile
- tempfile.close
- @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 "\
- "will be deleted automatically with GC. It's also recommended to delete the temp file "\
- "explicitly with `tempfile.delete`"
- end
- end
- end
-
# Sanitize filename by removing path.
# e.g. ../../sun.gif becomes sun.gif
#
# @param [String] filename the filename to be sanitized
# @return [String] the sanitized filename
def sanitize_filename(filename)
filename.gsub(/.*[\/\\]/, '')
end
- def build_request_url(path)
+ def build_request_url(path, opts = {})
# Add leading and trailing slashes to path
path = "/#{path}".gsub(/\/+/, '/')
- @config.base_url + path
+ @config.base_url(opts[:operation]) + path
end
- # Update hearder and query params based on authentication settings.
+ # Update header and query params based on authentication settings.
#
# @param [Hash] header_params Header parameters
# @param [Hash] query_params Query parameters
# @param [String] auth_names Authentication scheme name
def update_params_for_auth!(header_params, query_params, auth_names)
@@ -321,11 +325,11 @@
auth_setting = @config.auth_settings[auth_name]
next unless auth_setting
case auth_setting[:in]
when 'header' then header_params[auth_setting[:key]] = auth_setting[:value]
when 'query' then query_params[auth_setting[:key]] = auth_setting[:value]
- else fail ArgumentError, 'Authentication token must be in `query` of `header`'
+ else fail ArgumentError, 'Authentication token must be in `query` or `header`'
end
end
end
# Sets user agent in HTTP header
@@ -348,11 +352,11 @@
# Return Content-Type header based on an array of content types provided.
# @param [Array] content_types array for Content-Type
# @return [String] the Content-Type header (e.g. application/json)
def select_header_content_type(content_types)
- # use application/json by default
- return 'application/json' if content_types.nil? || content_types.empty?
+ # return nil by default
+ return if content_types.nil? || content_types.empty?
# use JSON when present, otherwise use the first one
json_content_type = content_types.find { |s| json_mime?(s) }
json_content_type || content_types.first
end