cycles-sync: make obligato-url/key CLI configurable & fix wasmd invocations (#7)

This commit is contained in:
Shoaib Ahmed 2024-06-10 09:04:52 -07:00 committed by GitHub
parent cd442db003
commit d78183b2c8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 19 additions and 13 deletions

View file

@ -18,6 +18,17 @@ pub struct Cli {
#[arg(short = 'N', long, default_value = "http://127.0.0.1:26657")]
pub node: Url,
/// Obligato API server.
#[arg(long, default_value = "https://bisenzone.obligato.network")]
pub obligato_url: Url,
/// Obligato key.
#[arg(
long,
default_value = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImNhZXNzdGpjdG16bXVqaW55cGJlIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTcwMzAxOTE0OSwiZXhwIjoyMDE4NTk1MTQ5fQ.EV6v5J3dz8WHAdTK4_IEisKzF-n1Gqyn4wCce_Zrqf4"
)]
pub obligato_key: String,
/// Path to output CSV file
#[arg(short, long)]
pub keys_file: PathBuf,

View file

@ -41,8 +41,6 @@ const MNEMONIC_PHRASE: &str = "clutch debate vintage foster barely primary clown
const ALICE_ID: &str = "7bfad4e8-d898-4ce2-bbac-1beff7182319";
const BANK_DEBTOR_ID: &str = "3879fa15-d86e-4464-b679-0a3d78cf3dd3";
const OBLIGATO_URL: &str = "https://bisenzone.obligato.network";
type Sha256Digest = [u8; 32];
type DynError = Box<dyn Error>;
@ -79,7 +77,7 @@ async fn main() -> Result<(), DynError> {
async fn sync_setoffs(cli: Cli) -> Result<(), DynError> {
let wasmd_client = CliWasmdClient::new(cli.node);
let query_result: QueryResult<QueryAllSetoffsResponse> =
wasmd_client.query_smart(&cli.contract, json!("get_all_setoffs"), &cli.chain_id)?;
wasmd_client.query_smart(&cli.contract, json!("get_all_setoffs"))?;
let setoffs = query_result.data.setoffs;
// read keys
@ -119,7 +117,7 @@ async fn sync_setoffs(cli: Cli) -> Result<(), DynError> {
debug!("setoffs: {setoffs:?}");
// send to Obligato
let client = HttpClient::new(OBLIGATO_URL.parse().unwrap());
let client = HttpClient::new(cli.obligato_url, cli.obligato_key);
client.set_setoffs(setoffs).await?;
Ok(())
@ -127,7 +125,7 @@ async fn sync_setoffs(cli: Cli) -> Result<(), DynError> {
async fn sync_obligations(cli: Cli, epoch_pk: &str) -> Result<(), DynError> {
let mut intents = {
let client = HttpClient::new(OBLIGATO_URL.parse().unwrap());
let client = HttpClient::new(cli.obligato_url, cli.obligato_key);
client.get_obligations().await.unwrap()
};

View file

@ -12,13 +12,15 @@ use crate::{
pub struct HttpClient {
client: reqwest::Client,
url: Url,
key: String,
}
impl HttpClient {
pub fn new(url: Url) -> Self {
pub fn new(url: Url, key: String) -> Self {
Self {
client: reqwest::Client::new(),
url,
key,
}
}
@ -29,8 +31,6 @@ impl HttpClient {
}
}
// eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImNhZXNzdGpjdG16bXVqaW55cGJlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MDMwMTkxNDksImV4cCI6MjAxODU5NTE0OX0.gQsQ26W2AGfwmncTecfKaenRaxhXwZFqLtmcllD_7Sg
#[async_trait]
impl Client for HttpClient {
type Error = reqwest::Error;
@ -39,7 +39,7 @@ impl Client for HttpClient {
let response = self
.client
.post(self.url_with_path("api/sync/obligations2contract"))
.json(&json!({"denom_id": "1", "key": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImNhZXNzdGpjdG16bXVqaW55cGJlIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTcwMzAxOTE0OSwiZXhwIjoyMDE4NTk1MTQ5fQ.EV6v5J3dz8WHAdTK4_IEisKzF-n1Gqyn4wCce_Zrqf4"}))
.json(&json!({"denom_id": "1", "key": self.key }))
.send()
.await?
.json::<GetObligationsResponse>()

View file

@ -15,7 +15,6 @@ pub trait WasmdClient {
&self,
contract: &Self::Address,
query: Self::Query,
chain_id: &Id,
) -> Result<R, Self::Error>;
fn tx_execute<M: ToString>(
@ -64,7 +63,6 @@ impl WasmdClient for CliWasmdClient {
&self,
contract: &Self::Address,
query: Self::Query,
chain_id: &Id,
) -> Result<R, Self::Error> {
let mut wasmd = Command::new("wasmd");
let command = wasmd
@ -72,7 +70,6 @@ impl WasmdClient for CliWasmdClient {
.args(["query", "wasm"])
.args(["contract-state", "smart", contract.as_ref()])
.arg(query.to_string())
.args(["--chain-id", chain_id.as_ref()])
.args(["--output", "json"]);
let output = command.output()?;
@ -93,9 +90,9 @@ impl WasmdClient for CliWasmdClient {
let mut wasmd = Command::new("wasmd");
let command = wasmd
.args(["--node", self.url.as_str()])
.args(["--chain-id", chain_id.as_ref()])
.args(["tx", "wasm"])
.args(["execute", contract.as_ref(), &msg.to_string()])
.args(["--chain-id", chain_id.as_ref()])
.args(["--gas", &gas.to_string()])
.args(["--from", sender.as_ref()])
.args(["--output", "json"])