107 lines
4.8 KiB
Ruby
107 lines
4.8 KiB
Ruby
module ApplicationHelper
|
|
def body_css_class
|
|
@body_css_classes ||= []
|
|
# view_css_class = [controller_path.split('/'), action_name, 'view'].flatten.join('-')
|
|
view_css_class = [controller_path.split('/'), action_name, 'view'].flatten[0] + "-view"
|
|
@body_css_classes.unshift(view_css_class).join(' ')
|
|
end
|
|
|
|
def currency_balance(principal, currency_symbol, dfx_id = nil)
|
|
canisters = {
|
|
ICYPEES: "es3he-kyaaa-aaaah-abzna-cai",
|
|
EVL: "7wqow-haaaa-aaaao-ahbpq-cai",
|
|
"SNS-1": "zfcdd-tqaaa-aaaaq-aaaga-cai",
|
|
TENDY: "72uqs-pqaaa-aaaak-aes7a-cai",
|
|
YC: "5gxp5-jyaaa-aaaag-qarma-cai",
|
|
CZECH: "fkhzl-saaaa-aaaan-qd26a-cai",
|
|
ICL: "5573k-xaaaa-aaaak-aacnq-cai",
|
|
OT: "imeri-bqaaa-aaaai-qnpla-cai",
|
|
"01": "6ohjj-4qaaa-aaaai-aapua-cai",
|
|
BABYAROFdip20: "iy6hh-xaaaa-aaaan-qauza-cai"}
|
|
multipliers = {
|
|
TENDY: 100000000,
|
|
ICYPEES: 100000000,
|
|
CZECH: 100000000,
|
|
OT: 100000000,
|
|
EVL: 100000000,
|
|
"SNS-1": 100000000,
|
|
ICL: 100000000,
|
|
"01": 100000,
|
|
BABYAROFDIP20: 100000000
|
|
}
|
|
begin
|
|
# if currency_symbol == "ICL"
|
|
# binding.pry
|
|
# end
|
|
if ["SNS-1"].any?{ |s| s.casecmp(currency_symbol)==0 }
|
|
wallet_currency_balance = `dfx canister --network ic call #{canisters[:"#{currency_symbol}"]} #{currency_symbol == "SNS-1" ? "icrc1_balance_of" : "balanceOf"} '(record { owner = principal "#{principal}"})'`.gsub("_","").match(/\d+/)[0].to_f/(multipliers[:"#{currency_symbol}"])
|
|
elsif ["BTC"].any?{ |s| s.casecmp(currency_symbol)==0 }
|
|
puts "BTC"
|
|
`bitcoin-core.cli loadwallet #{dfx_id}`
|
|
wallet_currency_balance = `bitcoin-core.cli getbalance`.strip
|
|
if wallet_currency_balance.to_s.empty?
|
|
`bitcoin-core.cli createwallet "#{dfx_id}"`
|
|
`bitcoin-core.cli loadwallet #{dfx_id}`
|
|
end
|
|
wallet_currency_balance = `bitcoin-core.cli getbalance`.strip
|
|
`bitcoin-core.cli unloadwallet #{dfx_id}`
|
|
elsif ["testBTC"].any?{ |s| s.casecmp(currency_symbol)==0 }
|
|
puts "testBTC"
|
|
`bitcoin-core.cli loadwallet #{dfx_id}`
|
|
wallet_currency_balance = `bitcoin-core.cli -testnet getbalance`.strip
|
|
if wallet_currency_balance.to_s.empty?
|
|
`bitcoin-core.cli -testnet createwallet "#{dfx_id}"`
|
|
end
|
|
`bitcoin-core.cli -testnet loadwallet #{dfx_id}`
|
|
wallet_currency_balance = `bitcoin-core.cli -testnet getbalance`.strip
|
|
`bitcoin-core.cli -testnet unloadwallet #{dfx_id}`
|
|
elsif ["ICP"].any?{ |s| s.casecmp(currency_symbol)==0 }
|
|
wallet_currency_balance = icp_balance(dfx_id)
|
|
elsif ["ETH"].any?{ |s| s.casecmp(currency_symbol)==0 }
|
|
wallet_currency_balance = `eth address:balance -n mainnet #{dfx_id}`.strip
|
|
if wallet_currency_balance.empty?
|
|
new_address = JSON.parse `eth address:random`
|
|
`eth address:add #{dfx_id} #{new_address["privateKey"]}`
|
|
wallet_currency_balance = `eth address:balance -n mainnet #{dfx_id}`.strip
|
|
end
|
|
elsif ["goerliBaseETH"].any?{ |s| s.casecmp(currency_symbol)==0 }
|
|
wallet_currency_balance = `eth address:balance -n goerliBase #{dfx_id}`.strip
|
|
if wallet_currency_balance.empty?
|
|
new_address = JSON.parse `eth address:random`
|
|
`eth address:add #{dfx_id} #{new_address["privateKey"]}`
|
|
wallet_currency_balance = `eth address:balance -n goerliBase #{dfx_id}`.strip
|
|
end
|
|
elsif ["goerliETH"].any?{ |s| s.casecmp(currency_symbol)==0 }
|
|
wallet_currency_balance = `eth address:balance -n goerli #{dfx_id}`.strip
|
|
if wallet_currency_balance.empty?
|
|
new_address = JSON.parse `eth address:random`
|
|
`eth address:add #{dfx_id} #{new_address["privateKey"]}`
|
|
wallet_currency_balance = `eth address:balance -n goerli #{dfx_id}`.strip
|
|
end
|
|
elsif ["sepETH"].any?{ |s| s.casecmp(currency_symbol)==0 }
|
|
wallet_currency_balance = `eth address:balance -n sep #{dfx_id}`.strip
|
|
if wallet_currency_balance.empty?
|
|
new_address = JSON.parse `eth address:random`
|
|
`eth address:add #{dfx_id} #{new_address["privateKey"]}`
|
|
wallet_currency_balance = `eth address:balance -n sep #{dfx_id}`.strip
|
|
end
|
|
elsif canisters.keys.map{|k| k.to_s}.any?{ |s| s.casecmp(currency_symbol)==0 }
|
|
# binding.pry
|
|
wallet_currency_balance = `dfx canister --network ic call #{canisters[:"#{currency_symbol.upcase}"]} balanceOf '(principal "#{principal}")'`.gsub("_","").match(/\d+/)[0].to_f/(multipliers[:"#{currency_symbol.upcase}"])
|
|
else
|
|
return "Currency not found"
|
|
end
|
|
rescue
|
|
return "Error fetching balance"
|
|
end
|
|
if wallet_currency_balance.to_s.empty?
|
|
return "Error fetching "
|
|
else
|
|
return wallet_currency_balance
|
|
end
|
|
end
|
|
|
|
|
|
|
|
end
|