diff --git a/src/cmd/extrinsics/call.rs b/src/cmd/extrinsics/call.rs index 790a2146c4aea3d7705dc44d6fcbae614225e8c3..1b122314fc39979f1d7aa39a730757a1b01d9f7d 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 41a3354c5c9faf0c5b894c42410c64fc483931de..6033198b1d0b2e339d92bef87982b802542d64db 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 9224ad74d5e7f3b0dbeea705a33531898281ac60..2b5ed065bbbd600c04a9dcedfe5356aea5c3f4cc 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 8fd5f792cb2349d962f9cc5379e485c8d38dc129..2207c87c1663c8df31899a34cf982bac375c1707 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