Sha256: f91778e1c5efb5a777cf85e59dd24e439653998381ec6954240b40aa542a1b7c

Contents?: true

Size: 1.34 KB

Versions: 789

Compression:

Stored size: 1.34 KB

Contents

# frozen_string_literal: true

module TencentCloud
  module Common
    # common model
    class AbstractModel
      def serialize
        flat(self)
      end

      def self.format_params(prefix = nil, params)
        d = {}
        case params
        when Hash
          params.each do |k, v|
            key = prefix ? "#{prefix}.#{k}" : k.to_s
            d.update(format_params(key, v))
          end
        when Array
          params.each_with_index do |v, i|
            key = prefix ? "#{prefix}.#{i}" : i.to_s
            d.update(format_params(key, v))
          end
        else
          d[prefix] = params
        end
        d
      end

      private

      def flat(obj)
        case obj
        when AbstractModel
          params = nil
          keys = obj.instance_variables
          keys.each do |k|
            value = obj.instance_variable_get k
            key = k.to_s.split('@').at 1
            next unless value

            r = flat(value)
            unless r.nil?
              params ||= {}
              params[key] = r
            end
          end
          params
        when Array
          arr = nil
          obj.each do |v|
            r = flat(v)
            unless r.nil?
              arr ||= []
              arr << r
            end
          end
          arr
        else
          obj
        end
      end
    end
  end
end

Version data entries

789 entries across 789 versions & 1 rubygems

Version Path
tencentcloud-sdk-common-3.0.1021 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1020 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1019 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1018 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1017 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1016 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1015 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1014 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1013 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1012 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1011 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1010 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1009 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1008 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1007 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1006 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1005 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1004 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1003 lib/tencentcloud-sdk-common/models.rb
tencentcloud-sdk-common-3.0.1002 lib/tencentcloud-sdk-common/models.rb