From 559a05913c5ad1d25d29f7075d0048d73c72fc51 Mon Sep 17 00:00:00 2001 From: TheNeedful-DO Date: Mon, 25 Mar 2024 12:54:24 +0000 Subject: [PATCH] Adds ICP price support from binance for MetaPurse --- app/models/metapurse.rb | 4 ++++ app/views/metapurses/show.html.haml | 19 +++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app/models/metapurse.rb b/app/models/metapurse.rb index a04fbd7f..7d6569d8 100644 --- a/app/models/metapurse.rb +++ b/app/models/metapurse.rb @@ -4,4 +4,8 @@ class Metapurse < ActiveRecord::Base icpswap_pool_data_raw = `dfx --identity anonymous canister --network=ic call ggzvv-5qaaa-aaaag-qck7a-cai getAllPools` end + def icp_usd + JSON.parse(`curl -s https://www.binance.com/api/v3/avgPrice?symbol=ICPUSDT`)["price"].to_f + end + end diff --git a/app/views/metapurses/show.html.haml b/app/views/metapurses/show.html.haml index 3ae59a25..a5118206 100644 --- a/app/views/metapurses/show.html.haml +++ b/app/views/metapurses/show.html.haml @@ -22,12 +22,19 @@ = number_with_delimiter(amount = record.split[1].gsub(",","").to_f) rescue nil - icp_canister_id = "ryjl3-tyaaa-aaaaa-aaaba-cai" -# = icpswap_pool_data_raw.split("record {").select{|pool| !pool.scan(canister_id).empty? && !pool.scan(icp_canister_id).empty? }[0] - = icpswap_pool_data_raw.split("record {").select{|pool| !pool.scan(canister_id).empty? && !pool.scan(icp_canister_id).empty? }[0].scan(/token0Symbol = \"(.*)\"; /)[0][0] rescue nil - - value = icpswap_pool_data_raw.split("record {").select{|pool| !pool.scan(canister_id).empty? && !pool.scan(icp_canister_id).empty? }[0].scan(/token0Price = [+-]?([1-9]\d*|0)(\.\d+)?/).join.to_f rescue nil - = "$#{value.round(2)}" - - value_amount = (value * amount).round(2) rescue 0 - $#{number_with_delimiter(value_amount)} USD - - total_value += value_amount rescue 0 + - if canister_id == icp_canister_id + ICP + - value = @metapurse.icp_usd + - value_amount = (value * amount).round(2) rescue 0 + $#{number_with_delimiter(value_amount)} USD + - total_value += value_amount rescue 0 + - else + = icpswap_pool_data_raw.split("record {").select{|pool| !pool.scan(canister_id).empty? && !pool.scan(icp_canister_id).empty? }[0].scan(/token0Symbol = \"(.*)\"; /)[0][0] rescue nil + - value = icpswap_pool_data_raw.split("record {").select{|pool| !pool.scan(canister_id).empty? && !pool.scan(icp_canister_id).empty? }[0].scan(/token0Price = [+-]?([1-9]\d*|0)(\.\d+)?/).join.to_f rescue nil + = "$#{value.round(2)}" + - value_amount = (value * amount).round(2) rescue 0 + $#{number_with_delimiter(value_amount)} USD + - total_value += value_amount rescue 0 %p %b Total: $#{number_with_delimiter(total_value.round(2))} USD