Module: IOSTSdk::Models

Included in:
ABI, Account, AccountRAMInfo, Action, AmountLimit, Block, BlockInfo, ChainInfo, Contract, FrozenBalance, GasInfo, GasRatio, Info, NetworkInfo, NodeInfo, PeerInfo, Permission, PermissionGroup, PermissionItem, PledgeInfo, Query::ContractStorage, Query::ContractStorageFields, Query::SignedTransaction, Query::Transaction, RAMInfo, Receipt, Signature, TokenBalance, Transaction, TransactionInfo, TxReceipt, VoteInfo
Defined in:
lib/iost_sdk/models.rb,
lib/iost_sdk/models/abi.rb,
lib/iost_sdk/models/info.rb,
lib/iost_sdk/models/block.rb,
lib/iost_sdk/models/action.rb,
lib/iost_sdk/models/account.rb,
lib/iost_sdk/models/receipt.rb,
lib/iost_sdk/models/contract.rb,
lib/iost_sdk/models/gas_info.rb,
lib/iost_sdk/models/ram_info.rb,
lib/iost_sdk/models/gas_ratio.rb,
lib/iost_sdk/models/node_info.rb,
lib/iost_sdk/models/peer_info.rb,
lib/iost_sdk/models/signature.rb,
lib/iost_sdk/models/vote_info.rb,
lib/iost_sdk/models/block_info.rb,
lib/iost_sdk/models/chain_info.rb,
lib/iost_sdk/models/permission.rb,
lib/iost_sdk/models/tx_receipt.rb,
lib/iost_sdk/models/pledge_info.rb,
lib/iost_sdk/models/transaction.rb,
lib/iost_sdk/models/amount_limit.rb,
lib/iost_sdk/models/network_info.rb,
lib/iost_sdk/models/token_balance.rb,
lib/iost_sdk/models/frozen_balance.rb,
lib/iost_sdk/models/permission_item.rb,
lib/iost_sdk/models/util/serializer.rb,
lib/iost_sdk/models/account_ram_info.rb,
lib/iost_sdk/models/permission_group.rb,
lib/iost_sdk/models/transaction_info.rb,
lib/iost_sdk/models/query/transaction.rb,
lib/iost_sdk/models/query/contract_storage.rb,
lib/iost_sdk/models/query/signed_transaction.rb,
lib/iost_sdk/models/query/contract_storage_fields.rb

Defined Under Namespace

Modules: ClassMethods, InstanceMethods, Query, Util Classes: ABI, Account, AccountRAMInfo, Action, AmountLimit, Block, BlockInfo, ChainInfo, Contract, FrozenBalance, GasInfo, GasRatio, Info, NetworkInfo, NodeInfo, PeerInfo, Permission, PermissionGroup, PermissionItem, PledgeInfo, RAMInfo, Receipt, Signature, TokenBalance, Transaction, TransactionInfo, TxReceipt, VoteInfo

Constant Summary collapse

MODEL_REGISTRY =
{
  # query
  'IOSTSdk::Models::Query::ContractStorage' => {},
  'IOSTSdk::Models::Query::ContractStorageFields' => {},
  'IOSTSdk::Models::Query::Transaction' => {
    'actions' => {
      mode: :list,
      class: 'IOSTSdk::Models::Action'
    },
    'amount_limit' => {
      mode: :list,
      class: 'IOSTSdk::Models::AmountLimit'
    },
    'signatures' => {
      mode: :list,
      class: 'IOSTSdk::Models::Signature'
    }
  },
  'IOSTSdk::Models::Query::SignedTransaction' => {
    'actions' => {
      mode: :list,
      class: 'IOSTSdk::Models::Action'
    },
    'amount_limit' => {
      mode: :list,
      class: 'IOSTSdk::Models::AmountLimit'
    },
    'signatures' => {
      mode: :list,
      class: 'IOSTSdk::Models::Signature'
    },
    'publisher_sigs' => {
      mode: :list,
      class: 'IOSTSdk::Models::Signature'
    }
  },
  # result
  'IOSTSdk::Models::NodeInfo' => {
    'network' => {
      mode: :object,
      class: 'IOSTSdk::Models::NetworkInfo'
    }
  },
  'IOSTSdk::Models::NetworkInfo' => {
    'peer_info' => {
      mode: :list,
      class: 'IOSTSdk::Models::PeerInfo'
    }
  },
  'IOSTSdk::Models::Info' => {},
  'IOSTSdk::Models::VoteInfo' => {},
  'IOSTSdk::Models::PeerInfo' => {},
  'IOSTSdk::Models::ChainInfo' => {},
  'IOSTSdk::Models::GasRatio' => {},
  'IOSTSdk::Models::RAMInfo' => {},
  'IOSTSdk::Models::Action' => {},
  'IOSTSdk::Models::AmountLimit' => {},
  'IOSTSdk::Models::Receipt' => {},
  'IOSTSdk::Models::TxReceipt' => {
    'receipts' => {
      mode: :list,
      class: 'IOSTSdk::Models::Receipt'
    }
  },
  'IOSTSdk::Models::Transaction' => {
    'actions' => {
      mode: :list,
      class: 'IOSTSdk::Models::Action'
    },
    'amount_limit' => {
      mode: :list,
      class: 'IOSTSdk::Models::AmountLimit'
    },
    'tx_receipt' => {
      mode: :object,
      class: 'IOSTSdk::Models::TxReceipt'
    }
  },
  'IOSTSdk::Models::TransactionInfo' => {
    'transaction' => {
      mode: :object,
      class: 'IOSTSdk::Models::Transaction'
    }
  },
  'IOSTSdk::Models::Block' => {
    'transactions' => {
      mode: :list,
      class: 'IOSTSdk::Models::Transaction'
    },
    'info' => {
      mode: :object,
      class: 'IOSTSdk::Models::Info'
    }
  },
  'IOSTSdk::Models::BlockInfo' => {
    'block' => {
      mode: :object,
      class: 'IOSTSdk::Models::Block'
    }
  },
  'IOSTSdk::Models::AccountRAMInfo' => {},
  'IOSTSdk::Models::FrozenBalance' => {},
  'IOSTSdk::Models::PledgeInfo' => {},
  'IOSTSdk::Models::GasInfo' => {
    'pledged_info' => {
      mode: :list,
      class: 'IOSTSdk::Models::PledgeInfo'
    }
  },
  'IOSTSdk::Models::PermissionItem' => {},
  'IOSTSdk::Models::PermissionGroup' => {
    'items' => {
      mode: :list,
      class: 'IOSTSdk::Models::PermissionItem'
    }
  },
  'IOSTSdk::Models::Permission' => {
    'items' => {
      mode: :list,
      class: 'IOSTSdk::Models::PermissionItem'
    }
  },
  'IOSTSdk::Models::Account' => {
    'gas_info' => {
      mode: :object,
      class: 'IOSTSdk::Models::GasInfo'
    },
    'ram_info' => {
      mode: :object,
      class: 'IOSTSdk::Models::AccountRAMInfo'
    },
    'permissions' => {
      mode: :hash,
      class: 'IOSTSdk::Models::Permission'
    },
    'groups' => {
      mode: :hash,
      class: 'IOSTSdk::Models::PermissionGroup'
    },
    'frozen_balances' => {
      mode: :list,
      class: 'IOSTSdk::Models::FrozenBalance'
    },
    'vote_infos' => {
      mode: :list,
      class: 'IOSTSdk::Models::VoteInfo'
    }
  },
  'IOSTSdk::Models::TokenBalance' => {
    'frozen_balances' => {
      mode: :list,
      class: 'IOSTSdk::Models::FrozenBalance'
    }
  },
  'IOSTSdk::Models::ABI' => {
    'amount_limit' => {
      mode: :list,
      class: 'IOSTSdk::Models::AmountLimit'
    }
  },
  'IOSTSdk::Models::Contract' => {
    'abis' => {
      mode: :list,
      class: 'IOSTSdk::Models::ABI'
    }
  },
  'IOSTSdk::Models::Signature' => {}
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



177
178
179
180
# File 'lib/iost_sdk/models.rb', line 177

def self.included base
  base.send :include, InstanceMethods
  base.extend ClassMethods
end

Instance Method Details

#parse(data_key:, data_value:) ⇒ Object



221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
# File 'lib/iost_sdk/models.rb', line 221

def parse(data_key:, data_value:)
  # if nil, short-curcuit
  return nil unless data_value

  if IOSTSdk::Models::MODEL_REGISTRY[self.class.name].has_key?(data_key)
    instruction = IOSTSdk::Models::MODEL_REGISTRY[self.class.name][data_key]
    mode = instruction[:mode]
    class_name = instruction[:class]
    clazz = IOSTSdk::String.classify(class_name)

    case mode
    when :object
      clazz.new.populate(model_data: data_value)
    when :list
      data_value.empty? ? [] : data_value.map { |item| clazz.new.populate(model_data: item) }
    when :hash
      if data_value.empty?
        {}
      else
        data_value.each_with_object({}) do |(v_key, v_value), memo|
          memo[v_key] = clazz.new.populate(model_data: v_value)
        end
      end
    end
  else
    data_value
  end
end

#raw_dataObject



250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
# File 'lib/iost_sdk/models.rb', line 250

def raw_data
  raw_data = instance_variables.each_with_object({}) do |var_name, memo|
    n = var_name.to_s[1..-1].to_sym
    v = send(n)

    final_v = if IOSTSdk::Models::MODEL_REGISTRY[self.class.name].has_key?(n.to_s)
                mode = IOSTSdk::Models::MODEL_REGISTRY[self.class.name][n.to_s][:mode]
                case mode
                when :object
                  v.raw_data
                when :list
                  v.map(&:raw_data)
                when :hash
                  v.each_with_object({}) do |(v_key, v_value), memo|
                    memo[v_key] = v_value.raw_data
                  end
                end
              else
                v
              end
    memo[n] = final_v
  end

  raw_data
end