=begin #Conekta API #Conekta sdk The version of the OpenAPI document: 2.1.0 Contact: engineering@conekta.com Generated by: https://openapi-generator.tech OpenAPI Generator version: 6.6.0 =end require 'date' require 'time' module Conekta # order response class OrderResponse # The total amount to be collected in cents attr_accessor :amount # The total amount refunded in cents attr_accessor :amount_refunded attr_accessor :channel attr_accessor :charges attr_accessor :checkout # The time at which the object was created in seconds since the Unix epoch attr_accessor :created_at # The three-letter ISO 4217 currency code. The currency of the order. attr_accessor :currency attr_accessor :customer_info attr_accessor :discount_lines attr_accessor :fiscal_entity attr_accessor :id attr_accessor :is_refundable attr_accessor :line_items # Whether the object exists in live mode or test mode attr_accessor :livemode # Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. attr_accessor :metadata # String representing the object’s type. Objects of the same type share the same value. attr_accessor :object # The payment status of the order. attr_accessor :payment_status # Indicates the processing mode for the order, either ecommerce, recurrent or validation. attr_accessor :processing_mode attr_accessor :shipping_contact # The time at which the object was last updated in seconds since the Unix epoch attr_accessor :updated_at # Attribute mapping from ruby-style variable name to JSON key. def self.attribute_map { :'amount' => :'amount', :'amount_refunded' => :'amount_refunded', :'channel' => :'channel', :'charges' => :'charges', :'checkout' => :'checkout', :'created_at' => :'created_at', :'currency' => :'currency', :'customer_info' => :'customer_info', :'discount_lines' => :'discount_lines', :'fiscal_entity' => :'fiscal_entity', :'id' => :'id', :'is_refundable' => :'is_refundable', :'line_items' => :'line_items', :'livemode' => :'livemode', :'metadata' => :'metadata', :'object' => :'object', :'payment_status' => :'payment_status', :'processing_mode' => :'processing_mode', :'shipping_contact' => :'shipping_contact', :'updated_at' => :'updated_at' } end # Returns all the JSON keys this model knows about def self.acceptable_attributes attribute_map.values end # Attribute type mapping. def self.openapi_types { :'amount' => :'Integer', :'amount_refunded' => :'Integer', :'channel' => :'ChargeResponseChannel', :'charges' => :'OrderResponseCharges', :'checkout' => :'OrderResponseCheckout', :'created_at' => :'Integer', :'currency' => :'String', :'customer_info' => :'OrderResponseCustomerInfo', :'discount_lines' => :'OrderResponseDiscountLines', :'fiscal_entity' => :'OrderResponseFiscalEntity', :'id' => :'String', :'is_refundable' => :'Boolean', :'line_items' => :'OrderResponseProducts', :'livemode' => :'Boolean', :'metadata' => :'Hash', :'object' => :'String', :'payment_status' => :'String', :'processing_mode' => :'String', :'shipping_contact' => :'OrderResponseShippingContact', :'updated_at' => :'Integer' } end # List of attributes with nullable: true def self.openapi_nullable Set.new([ ]) end # Initializes the object # @param [Hash] attributes Model attributes in the form of hash def initialize(attributes = {}) if (!attributes.is_a?(Hash)) fail ArgumentError, "The input argument (attributes) must be a hash in `Conekta::OrderResponse` initialize method" end # check to see if the attribute exists and convert string to symbol for hash key attributes = attributes.each_with_object({}) { |(k, v), h| if (!self.class.attribute_map.key?(k.to_sym)) fail ArgumentError, "`#{k}` is not a valid attribute in `Conekta::OrderResponse`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect end h[k.to_sym] = v } if attributes.key?(:'amount') self.amount = attributes[:'amount'] end if attributes.key?(:'amount_refunded') self.amount_refunded = attributes[:'amount_refunded'] end if attributes.key?(:'channel') self.channel = attributes[:'channel'] end if attributes.key?(:'charges') self.charges = attributes[:'charges'] end if attributes.key?(:'checkout') self.checkout = attributes[:'checkout'] end if attributes.key?(:'created_at') self.created_at = attributes[:'created_at'] end if attributes.key?(:'currency') self.currency = attributes[:'currency'] end if attributes.key?(:'customer_info') self.customer_info = attributes[:'customer_info'] end if attributes.key?(:'discount_lines') self.discount_lines = attributes[:'discount_lines'] end if attributes.key?(:'fiscal_entity') self.fiscal_entity = attributes[:'fiscal_entity'] end if attributes.key?(:'id') self.id = attributes[:'id'] end if attributes.key?(:'is_refundable') self.is_refundable = attributes[:'is_refundable'] end if attributes.key?(:'line_items') self.line_items = attributes[:'line_items'] end if attributes.key?(:'livemode') self.livemode = attributes[:'livemode'] end if attributes.key?(:'metadata') if (value = attributes[:'metadata']).is_a?(Hash) self.metadata = value end end if attributes.key?(:'object') self.object = attributes[:'object'] end if attributes.key?(:'payment_status') self.payment_status = attributes[:'payment_status'] end if attributes.key?(:'processing_mode') self.processing_mode = attributes[:'processing_mode'] end if attributes.key?(:'shipping_contact') self.shipping_contact = attributes[:'shipping_contact'] end if attributes.key?(:'updated_at') self.updated_at = attributes[:'updated_at'] end end # Show invalid properties with the reasons. Usually used together with valid? # @return Array for valid properties with the reasons def list_invalid_properties invalid_properties = Array.new if !@metadata.nil? && @metadata.length > 100 invalid_properties.push('invalid value for "metadata", number of items must be less than or equal to 100.') end 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 false if !@metadata.nil? && @metadata.length > 100 true end # Custom attribute writer method with validation # @param [Object] metadata Value to be assigned def metadata=(metadata) if !metadata.nil? && metadata.length > 100 fail ArgumentError, 'invalid value for "metadata", number of items must be less than or equal to 100.' end @metadata = metadata end # Checks equality by comparing each attribute. # @param [Object] Object to be compared def ==(o) return true if self.equal?(o) self.class == o.class && amount == o.amount && amount_refunded == o.amount_refunded && channel == o.channel && charges == o.charges && checkout == o.checkout && created_at == o.created_at && currency == o.currency && customer_info == o.customer_info && discount_lines == o.discount_lines && fiscal_entity == o.fiscal_entity && id == o.id && is_refundable == o.is_refundable && line_items == o.line_items && livemode == o.livemode && metadata == o.metadata && object == o.object && payment_status == o.payment_status && processing_mode == o.processing_mode && shipping_contact == o.shipping_contact && updated_at == o.updated_at end # @see the `==` method # @param [Object] Object to be compared def eql?(o) self == o end # Calculates hash code according to all attributes. # @return [Integer] Hash code def hash [amount, amount_refunded, channel, charges, checkout, created_at, currency, customer_info, discount_lines, fiscal_entity, id, is_refundable, line_items, livemode, metadata, object, payment_status, processing_mode, shipping_contact, updated_at].hash end # Builds the object from hash # @param [Hash] attributes Model attributes in the form of hash # @return [Object] Returns the model itself def self.build_from_hash(attributes) new.build_from_hash(attributes) 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) attributes = attributes.transform_keys(&:to_sym) self.class.openapi_types.each_pair do |key, type| if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key) self.send("#{key}=", nil) elsif type =~ /\AArray<(.*)>/i # check to ensure the input is an array given that the attribute # is documented as an array but the input is not if attributes[self.class.attribute_map[key]].is_a?(Array) self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) }) end elsif !attributes[self.class.attribute_map[key]].nil? self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]])) end 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 :Time Time.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 # models (e.g. Pet) or oneOf klass = Conekta.const_get(type) klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.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) if value.nil? is_nullable = self.class.openapi_nullable.include?(attr) next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) end 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