lib/etht/carteiras.rb in etht-0.1.5 vs lib/etht/carteiras.rb in etht-0.1.6

- old
+ new

@@ -20,57 +20,58 @@ # @return [Carteiras] API etherscan - processar transacoes normais e tokens def initialize(dad, pop) @api = Etherscan.new @dbq = dad @ops = pop + p(ops) end # @return [Array<Hash>] todos os dados etherscan - saldos & transacoes - def dadoses - @dadoses ||= api.multi_address_balance(dbq[:wb].map { |c| c[:ax] }).map { |e| base_etherscan(e) } + def des + @des ||= api.multi_address_balance(dbq[:wb].map { |c| c[:ax] }).map { |e| base_etherscan(e) } end - # @return [Array<Integer>] lista blocknumbers novos de transacoes normais - def novobnt - @novobnt ||= (dadoses.map { |e| e[:tx].map { |n| Integer(n['blockNumber']) } }.flatten - - dbq[:nt].map { |t| t[:blocknumber] }).uniq + # @return [Array<Hash>] todos os dados juntos bigquery & etherscan + def djn + @djn ||= dbq[:wb].map { |b| bigquery_etherscan(b, des.select { |s| b[:ax] == s[:ax] }.first) } end - # @return [Array<Integer>] lista blocknumbers novos de transacoes token - def novobnk - @novobnk ||= (dadoses.map { |e| e[:kx].map { |n| Integer(n['blockNumber']) } }.flatten - - dbq[:nk].map { |t| t[:blocknumber] }).uniq + # @return [Array<Integer>] lista blocknumbers de transacoes normais + def bnt + @bnt ||= (des.map { |e| e[:tx].map { |n| Integer(n['blockNumber']) } }.flatten - + (ops[:t] ? [] : dbq[:nt].map { |t| t[:blocknumber] })).uniq end - # @return [Array<Hash>] lista transacoes normais novas - def novaest - @novaest ||= dadoses.map { |e| e[:tx].select { |s| novobnt.include?(Integer(s['blockNumber'])) } }.flatten.uniq + # @return [Array<Integer>] lista blocknumbers de transacoes token + def bnk + @bnk ||= (des.map { |e| e[:kx].map { |n| Integer(n['blockNumber']) } }.flatten - + (ops[:t] ? [] : dbq[:nk].map { |t| t[:blocknumber] })).uniq end - # @return [Array<Hash>] lista transacoes tokan novas - def novaesk - @novaesk ||= dadoses.map { |e| e[:kx].select { |s| novobnk.include?(Integer(s['blockNumber'])) } }.flatten.uniq + # @return [Array<Hash>] lista transacoes normais + def norml + @norml ||= des.map { |e| e[:tx].select { |s| bnt.include?(Integer(s['blockNumber'])) } }.flatten.uniq end - # @return [Array<Hash>] totdos dados juntos bigquery & etherscan - def dadosjn - @dadosjn ||= dbq[:wb].map { |b| bigquery_etherscan(b, dadoses.select { |s| b[:ax] == s[:ax] }.first) } + # @return [Array<Hash>] lista transacoes tokan + def token + @token ||= des.map { |e| e[:kx].select { |s| bnk.include?(Integer(s['blockNumber'])) } }.flatten.uniq end - # @return [Array<Hash>] lista ordenada transacoes normais novas - def sortest - novaest.sort { |a, b| Integer(a['blockNumber']) <=> Integer(b['blockNumber']) } + # @return [Array<Hash>] lista ordenada transacoes normais + def norml_sort + norml.sort { |a, b| Integer(a['blockNumber']) <=> Integer(b['blockNumber']) } end - # @return [Array<Hash>] lista ordenada transacoes tokan novas - def sortesk - novaesk.sort { |a, b| Integer(a['blockNumber']) <=> Integer(b['blockNumber']) } + # @return [Array<Hash>] lista ordenada transacoes tokan + def token_sort + token.sort { |a, b| Integer(a['blockNumber']) <=> Integer(b['blockNumber']) } end - # @return [Array<Hash>] lista ordenada transacoes normais & tokan novas - def totalha - (novaest + novaesk).sort { |a, b| Integer(a['blockNumber']) <=> Integer(b['blockNumber']) } + # @return [Array<Hash>] lista ordenada todas as transacoes (normais & tokan) + def todas_sort + (norml + token).sort { |a, b| Integer(a['blockNumber']) <=> Integer(b['blockNumber']) } end # @param [Hash] hes dados etherscan # @return [Hash] dados etherscan - address, saldo & transacoes def base_etherscan(hes) @@ -96,31 +97,26 @@ et: hes[:tx], ek: hes[:kx] } end - # @param [String] add endereco da carteira + # @param add (see formata_endereco) # @return [Array<Hash>] lista transacoes normais ligadas a uma carteira - sem elementos irrelevantes def etherscan_tx(add) api.normal_tx(add).map do |e| e.delete('cumulativeGasUsed') e.delete('confirmations') e end end - # @param (see etherscan_tx) + # @param add (see formata_endereco) # @return [Array<Hash>] lista transacoes token ligadas a uma carteira - sem elementos irrelevantes def etherscan_kx(add) api.token_tx(add).map do |e| e.delete('cumulativeGasUsed') e.delete('confirmations') e end - end - - # @return [Boolean] carteira tem transacoes novas(sim=NOK, nao=OK)? - def ok?(hjn) - hjn[:bs] == hjn[:es] && hjn[:bt].count == hjn[:et].count && hjn[:bk].count == hjn[:ek].count end end end