From 1a9b107106ba486f9f1948b65b0088ee84814caa Mon Sep 17 00:00:00 2001 From: Michal Handzlik <4hansu@gmail.com> Date: Fri, 27 May 2022 13:58:50 +0200 Subject: [PATCH] Manually convert Url::url to String in order to include the default port --- src/cmd/extrinsics/call.rs | 4 ++-- src/cmd/extrinsics/instantiate.rs | 9 ++++----- src/cmd/extrinsics/mod.rs | 12 ++++++++++++ src/cmd/extrinsics/upload.rs | 4 ++-- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/cmd/extrinsics/call.rs b/src/cmd/extrinsics/call.rs index 790a2146..1b122314 100644 --- a/src/cmd/extrinsics/call.rs +++ b/src/cmd/extrinsics/call.rs @@ -89,7 +89,7 @@ impl CallCommand { let signer = super::pair_signer(self.extrinsic_opts.signer()?); async_std::task::block_on(async { - let url = self.extrinsic_opts.url.to_string(); + let url = self.extrinsic_opts.url_to_string(); let api = ClientBuilder::new() .set_url(&url) .build() @@ -111,7 +111,7 @@ impl CallCommand { signer: &PairSigner, transcoder: &ContractMessageTranscoder<'_>, ) -> Result<()> { - let url = self.extrinsic_opts.url.to_string(); + let url = self.extrinsic_opts.url_to_string(); let cli = WsClientBuilder::default().build(&url).await?; let storage_deposit_limit = self .extrinsic_opts diff --git a/src/cmd/extrinsics/instantiate.rs b/src/cmd/extrinsics/instantiate.rs index 41a3354c..6033198b 100644 --- a/src/cmd/extrinsics/instantiate.rs +++ b/src/cmd/extrinsics/instantiate.rs @@ -136,7 +136,7 @@ impl InstantiateCommand { let transcoder = ContractMessageTranscoder::new(&contract_metadata); let data = transcoder.encode(&self.constructor, &self.args)?; let signer = super::pair_signer(self.extrinsic_opts.signer()?); - let url = self.extrinsic_opts.url.clone(); + let url = self.extrinsic_opts.url_to_string(); let verbosity = self.extrinsic_opts.verbosity()?; fn load_code(wasm_path: &Path) -> Result { @@ -195,7 +195,7 @@ struct InstantiateArgs { pub struct Exec<'a> { args: InstantiateArgs, verbosity: Verbosity, - url: url::Url, + url: String, signer: PairSigner, transcoder: ContractMessageTranscoder<'a>, } @@ -203,7 +203,7 @@ pub struct Exec<'a> { impl<'a> Exec<'a> { async fn subxt_api(&self) -> Result { let api = ClientBuilder::new() - .set_url(self.url.to_string()) + .set_url(&self.url) .build() .await? .to_runtime_api::(); @@ -326,8 +326,7 @@ impl<'a> Exec<'a> { } async fn instantiate_dry_run(&self, code: Code) -> Result { - let url = self.url.to_string(); - let cli = WsClientBuilder::default().build(&url).await?; + let cli = WsClientBuilder::default().build(&self.url).await?; let storage_deposit_limit = self .args .storage_deposit_limit diff --git a/src/cmd/extrinsics/mod.rs b/src/cmd/extrinsics/mod.rs index 9224ad74..2b5ed065 100644 --- a/src/cmd/extrinsics/mod.rs +++ b/src/cmd/extrinsics/mod.rs @@ -111,6 +111,18 @@ impl ExtrinsicOpts { pub fn verbosity(&self) -> Result { TryFrom::try_from(&self.verbosity) } + + /// Convert URL to String without omitting the default port + pub fn url_to_string(&self) -> String { + let mut res = self.url.to_string(); + match (self.url.port(), self.url.port_or_known_default()) { + (None, Some(port)) => { + res.insert_str(res.len() - 1, &format!(":{}", port)); + res + } + _ => res, + } + } } /// For a contract project with its `Cargo.toml` at the specified `manifest_path`, load the cargo diff --git a/src/cmd/extrinsics/upload.rs b/src/cmd/extrinsics/upload.rs index 8fd5f792..2207c87c 100644 --- a/src/cmd/extrinsics/upload.rs +++ b/src/cmd/extrinsics/upload.rs @@ -82,7 +82,7 @@ impl UploadCommand { .context(format!("Failed to read from {}", wasm_path.display()))?; async_std::task::block_on(async { - let url = self.extrinsic_opts.url.to_string(); + let url = self.extrinsic_opts.url_to_string(); let api = ClientBuilder::new() .set_url(&url) .build() @@ -121,7 +121,7 @@ impl UploadCommand { code: Vec, signer: &PairSigner, ) -> Result { - let url = self.extrinsic_opts.url.to_string(); + let url = self.extrinsic_opts.url_to_string(); let cli = WsClientBuilder::default().build(&url).await?; let storage_deposit_limit = self .extrinsic_opts -- GitLab