thirteen-tien-len/app/helpers/application_helper.rb
2023-09-29 17:59:13 +00:00

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