From 3eeedc667e955f3837d7afa50c9b9b169536b90f Mon Sep 17 00:00:00 2001 From: Victor Emanuel Date: Fri, 8 Apr 2022 17:26:47 -0300 Subject: [PATCH 1/2] feat(balances): fixing return --- crates/sugarfunge-api-types/src/asset.rs | 3 +-- src/asset.rs | 21 +++++++++++++++++++++ src/main.rs | 7 +++---- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/crates/sugarfunge-api-types/src/asset.rs b/crates/sugarfunge-api-types/src/asset.rs index dd77ef8..46330e1 100644 --- a/crates/sugarfunge-api-types/src/asset.rs +++ b/crates/sugarfunge-api-types/src/asset.rs @@ -81,7 +81,6 @@ pub struct AssetBalanceOutput { #[derive(Serialize, Deserialize)] pub struct AssetBalancesInput { pub account: String, - pub class_id: Option, } #[derive(Serialize, Deserialize)] @@ -89,7 +88,7 @@ pub struct AssetBalancesOutput { pub balances: Vec, } -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Debug)] pub struct AssetBalanceItemOutput { pub class_id: ClassId, pub asset_id: AssetId, diff --git a/src/asset.rs b/src/asset.rs index 0989155..36247db 100644 --- a/src/asset.rs +++ b/src/asset.rs @@ -184,6 +184,27 @@ pub async fn balance( })) } +/// Get balance for given asset +pub async fn balances( + data: web::Data, + req: web::Json, +) -> error::Result { + let account = sp_core::sr25519::Public::from_str(&req.account).map_err(map_account_err)?; + let account = sp_core::crypto::AccountId32::from(account); + let api = &data.api; + let params = &[jsonrpsee_types::to_json_value(account.to_string())?]; + let result = api + .client + .rpc() + .client + .request("asset_balancesOfOwner", params) + .await; + + let balances = result.map_err(map_subxt_err)?; + + Ok(HttpResponse::Ok().json(AssetBalancesOutput { balances })) +} + /// Transfer asset from to accounts pub async fn transfer_from( data: web::Data, diff --git a/src/main.rs b/src/main.rs index 1b0dac1..c9c2718 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,7 +6,7 @@ use actix_web::{ }; use command::*; use state::*; -use std::sync::{Arc}; +use std::sync::Arc; use structopt::StructOpt; use subxt::ClientBuilder; use sugarfunge_api_types::sugarfunge; @@ -36,9 +36,7 @@ async fn main() -> std::io::Result<()> { .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e.to_string()))? .to_runtime_api::>(); - let state = AppState { - api: Arc::new(api), - }; + let state = AppState { api: Arc::new(api) }; HttpServer::new(move || { let cors = Cors::default() @@ -64,6 +62,7 @@ async fn main() -> std::io::Result<()> { .route("asset/mint", web::post().to(asset::mint)) .route("asset/burn", web::post().to(asset::burn)) .route("asset/balance", web::post().to(asset::balance)) + .route("asset/balances", web::post().to(asset::balances)) .route("asset/transfer_from", web::post().to(asset::transfer_from)) .route("currency/issue", web::post().to(currency::issue)) .route("currency/issuance", web::post().to(currency::issuance)) From cc0ef67234a9458f88a4ddcd1eee87a80444285a Mon Sep 17 00:00:00 2001 From: Victor Emanuel Date: Tue, 12 Jul 2022 11:39:56 -0300 Subject: [PATCH 2/2] fix: removing use of string --- src/asset.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/asset.rs b/src/asset.rs index 36247db..d7091a8 100644 --- a/src/asset.rs +++ b/src/asset.rs @@ -190,9 +190,8 @@ pub async fn balances( req: web::Json, ) -> error::Result { let account = sp_core::sr25519::Public::from_str(&req.account).map_err(map_account_err)?; - let account = sp_core::crypto::AccountId32::from(account); let api = &data.api; - let params = &[jsonrpsee_types::to_json_value(account.to_string())?]; + let params = &[jsonrpsee_types::to_json_value(account)?]; let result = api .client .rpc()