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_data ⇒ Object
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 |