diff --git a/Gemfile.lock b/Gemfile.lock
index 11bb37c..f3dca5b 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
- groupdocs_conversion_cloud (23.7)
+ groupdocs_conversion_cloud (23.8)
addressable (~> 2.8.0, >= 2.8.0)
faraday (~> 0.14.0)
diff --git a/README.md b/README.md
index c3e771b..f678de8 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@ gem install groupdocs_conversion_cloud
To add dependency to your app copy following into your Gemfile and run `bundle install`:
```
-gem "groupdocs_conversion_cloud", "~> 23.7"
+gem "groupdocs_conversion_cloud", "~> 23.8"
```
## Getting Started
diff --git a/lib/groupdocs_conversion_cloud.rb b/lib/groupdocs_conversion_cloud.rb
index cf6d2a0..ba07b50 100644
--- a/lib/groupdocs_conversion_cloud.rb
+++ b/lib/groupdocs_conversion_cloud.rb
@@ -25,11 +25,13 @@
# Common files
require_relative 'groupdocs_conversion_cloud/api_client'
-require_relative 'groupdocs_conversion_cloud/api_error'
+require_relative 'groupdocs_conversion_cloud/api_client_error'
require_relative 'groupdocs_conversion_cloud/version'
require_relative 'groupdocs_conversion_cloud/configuration'
# Models
+require_relative 'groupdocs_conversion_cloud/models/api_error'
+require_relative 'groupdocs_conversion_cloud/models/api_error_response'
require_relative 'groupdocs_conversion_cloud/models/consumption_result'
require_relative 'groupdocs_conversion_cloud/models/convert_options'
require_relative 'groupdocs_conversion_cloud/models/convert_settings'
diff --git a/lib/groupdocs_conversion_cloud/api_client.rb b/lib/groupdocs_conversion_cloud/api_client.rb
index 1b07f21..969aa17 100644
--- a/lib/groupdocs_conversion_cloud/api_client.rb
+++ b/lib/groupdocs_conversion_cloud/api_client.rb
@@ -31,7 +31,7 @@
require 'mimemagic'
require 'addressable'
require_relative 'version'
-require_relative 'api_error'
+require_relative 'api_client_error'
module GroupDocsConversionCloud
#
@@ -69,7 +69,7 @@ def call_api(http_method, path, opts = {})
end
unless response.success?
- raise ApiError.new(:code => response.status, :response_body => response.body)
+ raise ApiClientError.new(:code => response.status, :response_body => response.body)
end
data = deserialize(response, opts[:return_type]) if opts[:return_type]
diff --git a/lib/groupdocs_conversion_cloud/api_error.rb b/lib/groupdocs_conversion_cloud/api_client_error.rb
similarity index 90%
rename from lib/groupdocs_conversion_cloud/api_error.rb
rename to lib/groupdocs_conversion_cloud/api_client_error.rb
index 0e0771c..2273bd9 100644
--- a/lib/groupdocs_conversion_cloud/api_error.rb
+++ b/lib/groupdocs_conversion_cloud/api_client_error.rb
@@ -25,18 +25,17 @@
module GroupDocsConversionCloud
#
- # ApiError class for error handling
+ # ApiClientError class for error handling
#
- class ApiError < StandardError
+ class ApiClientError < StandardError
attr_reader :code
attr_reader :message
# Usage examples:
- # ApiError.new
- # ApiError.new(:code => 500, :response_body => "")
- def initialize(arg = nil)
- if arg.is_a? Hash
-
+ # ApiClientError.new
+ # ApiClientError.new(:code => 500, :response_body => "")
+ def initialize(arg = nil)
+ if arg.is_a? Hash
if arg.key?(:response_body) then
data = JSON.parse(arg[:response_body], :symbolize_names => true)
if !data.nil? then
@@ -69,3 +68,4 @@ def initialize(arg = nil)
end
end
end
+
diff --git a/lib/groupdocs_conversion_cloud/models/api_error.rb b/lib/groupdocs_conversion_cloud/models/api_error.rb
new file mode 100644
index 0000000..ec78ae0
--- /dev/null
+++ b/lib/groupdocs_conversion_cloud/models/api_error.rb
@@ -0,0 +1,244 @@
+ #
+ # --------------------------------------------------------------------------------------------------------------------
+ #
+ # Copyright (c) 2003-2023 Aspose Pty Ltd
+ #
+ #
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
+ # of this software and associated documentation files (the "Software"), to deal
+ # in the Software without restriction, including without limitation the rights
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ # copies of the Software, and to permit persons to whom the Software is
+ # furnished to do so, subject to the following conditions:
+ #
+ # The above copyright notice and this permission notice shall be included in all
+ # copies or substantial portions of the Software.
+ #
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ # SOFTWARE.
+ #
+ # --------------------------------------------------------------------------------------------------------------------
+ #
+
+require 'date'
+
+module GroupDocsConversionCloud
+
+ class ApiError
+ attr_accessor :code
+ attr_accessor :message
+ attr_accessor :description
+ attr_accessor :date_time
+ attr_accessor :inner_error
+
+ # Attribute mapping from ruby-style variable name to JSON key.
+ def self.attribute_map
+ {
+ :'code' => :'Code',
+ :'message' => :'Message',
+ :'description' => :'Description',
+ :'date_time' => :'DateTime',
+ :'inner_error' => :'InnerError'
+ }
+ end
+
+ # Attribute type mapping.
+ def self.swagger_types
+ {
+ :'code' => :'String',
+ :'message' => :'String',
+ :'description' => :'String',
+ :'date_time' => :'DateTime',
+ :'inner_error' => :'ApiError'
+ }
+ end
+
+ # Initializes the object
+ # @param [Hash] attributes Model attributes in the form of hash
+ def initialize(attributes = {})
+ return unless attributes.is_a?(Hash)
+
+ # convert string to symbol for hash key
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
+
+ if attributes.key?(:'Code')
+ self.code = attributes[:'Code']
+ end
+
+ if attributes.key?(:'Message')
+ self.message = attributes[:'Message']
+ end
+
+ if attributes.key?(:'Description')
+ self.description = attributes[:'Description']
+ end
+
+ if attributes.key?(:'DateTime')
+ self.date_time = attributes[:'DateTime']
+ end
+
+ if attributes.key?(:'InnerError')
+ self.inner_error = attributes[:'InnerError']
+ end
+
+ end
+
+ # Show invalid properties with the reasons. Usually used together with valid?
+ # @return Array for valid properies with the reasons
+ def list_invalid_properties
+ invalid_properties = []
+ return invalid_properties
+ end
+
+ # Check to see if the all the properties in the model are valid
+ # @return true if the model is valid
+ def valid?
+ return true
+ end
+
+ # Checks equality by comparing each attribute.
+ # @param [Object] Object to be compared
+ def ==(other)
+ return true if self.equal?(other)
+ self.class == other.class &&
+ code == other.code &&
+ message == other.message &&
+ description == other.description &&
+ date_time == other.date_time &&
+ inner_error == other.inner_error
+ end
+
+ # @see the `==` method
+ # @param [Object] Object to be compared
+ def eql?(other)
+ self == other
+ end
+
+ # Calculates hash code according to all attributes.
+ # @return [Fixnum] Hash code
+ def hash
+ [code, message, description, date_time, inner_error].hash
+ end
+
+ # Downcases first letter.
+ # @return downcased string
+ def uncap(str)
+ str[0, 1].downcase + str[1..-1]
+ end
+
+ # Builds the object from hash
+ # @param [Hash] attributes Model attributes in the form of hash
+ # @return [Object] Returns the model itself
+ def build_from_hash(attributes)
+ return nil unless attributes.is_a?(Hash)
+ self.class.swagger_types.each_pair do |key, type|
+ pname = uncap(self.class.attribute_map[key]).intern
+ value = attributes[pname]
+ if type =~ /\AArray<(.*)>/i
+ # check to ensure the input is an array given that the the attribute
+ # is documented as an array but the input is not
+ if value.is_a?(Array)
+ self.send("#{key}=", value.map { |v| _deserialize($1, v) })
+ end
+ elsif !value.nil?
+ self.send("#{key}=", _deserialize(type, value))
+ end
+ # or else data not found in attributes(hash), not an issue as the data can be optional
+ end
+
+ self
+ end
+
+ # Deserializes the data based on type
+ # @param string type Data type
+ # @param string value Value to be deserialized
+ # @return [Object] Deserialized data
+ def _deserialize(type, value)
+ case type.to_sym
+ when :DateTime
+ Date.parse value
+ when :Date
+ Date.parse value
+ when :String
+ value.to_s
+ when :Integer
+ value.to_i
+ when :Float
+ value.to_f
+ when :BOOLEAN
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
+ true
+ else
+ false
+ end
+ when :Object
+ # generic object (usually a Hash), return directly
+ value
+ when /\AArray<(?.+)>\z/
+ inner_type = Regexp.last_match[:inner_type]
+ value.map { |v| _deserialize(inner_type, v) }
+ when /\AHash<(?.+?), (?.+)>\z/
+ k_type = Regexp.last_match[:k_type]
+ v_type = Regexp.last_match[:v_type]
+ {}.tap do |hash|
+ value.each do |k, v|
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
+ end
+ end
+ else
+ # model
+ temp_model = GroupDocsConversionCloud.const_get(type).new
+ temp_model.build_from_hash(value)
+ end
+ end
+
+ # Returns the string representation of the object
+ # @return [String] String presentation of the object
+ def to_s
+ to_hash.to_s
+ end
+
+ # to_body is an alias to to_hash (backward compatibility)
+ # @return [Hash] Returns the object in the form of hash
+ def to_body
+ to_hash
+ end
+
+ # Returns the object in the form of hash
+ # @return [Hash] Returns the object in the form of hash
+ def to_hash
+ hash = {}
+ self.class.attribute_map.each_pair do |attr, param|
+ value = self.send(attr)
+ next if value.nil?
+ hash[param] = _to_hash(value)
+ end
+ hash
+ end
+
+ # Outputs non-array value in the form of hash
+ # For object, use to_hash. Otherwise, just return the value
+ # @param [Object] value Any valid value
+ # @return [Hash] Returns the value in the form of hash
+ def _to_hash(value)
+ if value.is_a?(Array)
+ value.compact.map { |v| _to_hash(v) }
+ elsif value.is_a?(Hash)
+ {}.tap do |hash|
+ value.each { |k, v| hash[k] = _to_hash(v) }
+ end
+ elsif value.respond_to? :to_hash
+ value.to_hash
+ else
+ value
+ end
+ end
+
+ end
+
+end
diff --git a/lib/groupdocs_conversion_cloud/models/api_error_response.rb b/lib/groupdocs_conversion_cloud/models/api_error_response.rb
new file mode 100644
index 0000000..28657fd
--- /dev/null
+++ b/lib/groupdocs_conversion_cloud/models/api_error_response.rb
@@ -0,0 +1,220 @@
+ #
+ # --------------------------------------------------------------------------------------------------------------------
+ #
+ # Copyright (c) 2003-2023 Aspose Pty Ltd
+ #
+ #
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
+ # of this software and associated documentation files (the "Software"), to deal
+ # in the Software without restriction, including without limitation the rights
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ # copies of the Software, and to permit persons to whom the Software is
+ # furnished to do so, subject to the following conditions:
+ #
+ # The above copyright notice and this permission notice shall be included in all
+ # copies or substantial portions of the Software.
+ #
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ # SOFTWARE.
+ #
+ # --------------------------------------------------------------------------------------------------------------------
+ #
+
+require 'date'
+
+module GroupDocsConversionCloud
+
+ class ApiErrorResponse
+ attr_accessor :request_id
+ attr_accessor :error
+
+ # Attribute mapping from ruby-style variable name to JSON key.
+ def self.attribute_map
+ {
+ :'request_id' => :'RequestId',
+ :'error' => :'Error'
+ }
+ end
+
+ # Attribute type mapping.
+ def self.swagger_types
+ {
+ :'request_id' => :'String',
+ :'error' => :'ApiError'
+ }
+ end
+
+ # Initializes the object
+ # @param [Hash] attributes Model attributes in the form of hash
+ def initialize(attributes = {})
+ return unless attributes.is_a?(Hash)
+
+ # convert string to symbol for hash key
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
+
+ if attributes.key?(:'RequestId')
+ self.request_id = attributes[:'RequestId']
+ end
+
+ if attributes.key?(:'Error')
+ self.error = attributes[:'Error']
+ end
+
+ end
+
+ # Show invalid properties with the reasons. Usually used together with valid?
+ # @return Array for valid properies with the reasons
+ def list_invalid_properties
+ invalid_properties = []
+ return invalid_properties
+ end
+
+ # Check to see if the all the properties in the model are valid
+ # @return true if the model is valid
+ def valid?
+ return true
+ end
+
+ # Checks equality by comparing each attribute.
+ # @param [Object] Object to be compared
+ def ==(other)
+ return true if self.equal?(other)
+ self.class == other.class &&
+ request_id == other.request_id &&
+ error == other.error
+ end
+
+ # @see the `==` method
+ # @param [Object] Object to be compared
+ def eql?(other)
+ self == other
+ end
+
+ # Calculates hash code according to all attributes.
+ # @return [Fixnum] Hash code
+ def hash
+ [request_id, error].hash
+ end
+
+ # Downcases first letter.
+ # @return downcased string
+ def uncap(str)
+ str[0, 1].downcase + str[1..-1]
+ end
+
+ # Builds the object from hash
+ # @param [Hash] attributes Model attributes in the form of hash
+ # @return [Object] Returns the model itself
+ def build_from_hash(attributes)
+ return nil unless attributes.is_a?(Hash)
+ self.class.swagger_types.each_pair do |key, type|
+ pname = uncap(self.class.attribute_map[key]).intern
+ value = attributes[pname]
+ if type =~ /\AArray<(.*)>/i
+ # check to ensure the input is an array given that the the attribute
+ # is documented as an array but the input is not
+ if value.is_a?(Array)
+ self.send("#{key}=", value.map { |v| _deserialize($1, v) })
+ end
+ elsif !value.nil?
+ self.send("#{key}=", _deserialize(type, value))
+ end
+ # or else data not found in attributes(hash), not an issue as the data can be optional
+ end
+
+ self
+ end
+
+ # Deserializes the data based on type
+ # @param string type Data type
+ # @param string value Value to be deserialized
+ # @return [Object] Deserialized data
+ def _deserialize(type, value)
+ case type.to_sym
+ when :DateTime
+ Date.parse value
+ when :Date
+ Date.parse value
+ when :String
+ value.to_s
+ when :Integer
+ value.to_i
+ when :Float
+ value.to_f
+ when :BOOLEAN
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
+ true
+ else
+ false
+ end
+ when :Object
+ # generic object (usually a Hash), return directly
+ value
+ when /\AArray<(?.+)>\z/
+ inner_type = Regexp.last_match[:inner_type]
+ value.map { |v| _deserialize(inner_type, v) }
+ when /\AHash<(?.+?), (?.+)>\z/
+ k_type = Regexp.last_match[:k_type]
+ v_type = Regexp.last_match[:v_type]
+ {}.tap do |hash|
+ value.each do |k, v|
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
+ end
+ end
+ else
+ # model
+ temp_model = GroupDocsConversionCloud.const_get(type).new
+ temp_model.build_from_hash(value)
+ end
+ end
+
+ # Returns the string representation of the object
+ # @return [String] String presentation of the object
+ def to_s
+ to_hash.to_s
+ end
+
+ # to_body is an alias to to_hash (backward compatibility)
+ # @return [Hash] Returns the object in the form of hash
+ def to_body
+ to_hash
+ end
+
+ # Returns the object in the form of hash
+ # @return [Hash] Returns the object in the form of hash
+ def to_hash
+ hash = {}
+ self.class.attribute_map.each_pair do |attr, param|
+ value = self.send(attr)
+ next if value.nil?
+ hash[param] = _to_hash(value)
+ end
+ hash
+ end
+
+ # Outputs non-array value in the form of hash
+ # For object, use to_hash. Otherwise, just return the value
+ # @param [Object] value Any valid value
+ # @return [Hash] Returns the value in the form of hash
+ def _to_hash(value)
+ if value.is_a?(Array)
+ value.compact.map { |v| _to_hash(v) }
+ elsif value.is_a?(Hash)
+ {}.tap do |hash|
+ value.each { |k, v| hash[k] = _to_hash(v) }
+ end
+ elsif value.respond_to? :to_hash
+ value.to_hash
+ else
+ value
+ end
+ end
+
+ end
+
+end
diff --git a/lib/groupdocs_conversion_cloud/version.rb b/lib/groupdocs_conversion_cloud/version.rb
index ee3d933..c84662d 100644
--- a/lib/groupdocs_conversion_cloud/version.rb
+++ b/lib/groupdocs_conversion_cloud/version.rb
@@ -25,5 +25,5 @@
# --------------------------------------------------------------------------------------------------------------------
#
module GroupDocsConversionCloud
- VERSION = "23.7".freeze
+ VERSION = "23.8".freeze
end
diff --git a/test/api/test_auth_api.rb b/test/api/test_auth_api.rb
index 973f704..6e1477f 100644
--- a/test/api/test_auth_api.rb
+++ b/test/api/test_auth_api.rb
@@ -50,7 +50,7 @@ def test_auth_error_when_app_sid_not_found
info_api = init_conversion_api(app_sid, app_key)
request = GetSupportedConversionTypesRequest.new
- error = assert_raises ApiError do
+ error = assert_raises ApiClientError do
info_api.get_supported_conversion_types(request)
end
@@ -65,7 +65,7 @@ def test_auth_error_when_app_key_not_found
info_api = init_conversion_api(app_sid, app_key)
request = GetSupportedConversionTypesRequest.new
- error = assert_raises ApiError do
+ error = assert_raises ApiClientError do
info_api.get_supported_conversion_types(request)
end
diff --git a/test/api/test_info_api.rb b/test/api/test_info_api.rb
index 3573f35..e70757c 100644
--- a/test/api/test_info_api.rb
+++ b/test/api/test_info_api.rb
@@ -55,7 +55,7 @@ def test_get_document_metadata
def test_GetInfoReturnsFileNotFound
request = GetDocumentMetadataRequest.new(TestFile.not_exist.path)
- error = assert_raises ApiError do
+ error = assert_raises ApiClientError do
@info_api.get_document_metadata(request)
end
assert_equal true, error.message.include?("AmazonS3 Storage exception: The specified key does not exist.")