Skip to content

Commit 8f6dbaf

Browse files
authored
Merge pull request #509 from multiversx/fetch-address-hrp-from-network
Fetch HRP from network if possible
2 parents 51d086d + 198df5b commit 8f6dbaf

3 files changed

Lines changed: 39 additions & 7 deletions

File tree

multiversx_sdk_cli/cli_faucet.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def setup_parser(args: list[str], subparsers: Any) -> Any:
2828
sub = cli_shared.add_command_subparser(subparsers, "faucet", "request", "Request xEGLD.")
2929
cli_shared.add_wallet_args(args, sub)
3030
sub.add_argument("--chain", choices=["D", "T"], help="the chain identifier")
31-
sub.add_argument("--api-url", type=str, help="custom api url for the native auth client")
31+
sub.add_argument("--api", type=str, help="custom api url for the native auth client")
3232
sub.add_argument("--wallet-url", type=str, help="custom wallet url to call the faucet from")
3333
sub.set_defaults(func=faucet)
3434

@@ -75,12 +75,12 @@ def get_wallet_and_api_urls(args: Any) -> tuple[str, str]:
7575

7676
def get_custom_wallet_and_api_urls(args: Any) -> tuple[str, str]:
7777
wallet = args.wallet_url
78-
api = args.api_url
78+
api = args.api
7979

8080
if not wallet:
8181
raise ArgumentsNotProvidedError("--wallet-url not provided")
8282

8383
if not api:
84-
raise ArgumentsNotProvidedError("--api-url not provided")
84+
raise ArgumentsNotProvidedError("--api not provided")
8585

8686
return wallet, api

multiversx_sdk_cli/cli_shared.py

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from multiversx_sdk import (
99
Account,
1010
Address,
11+
ApiNetworkProvider,
1112
LedgerAccount,
1213
ProxyNetworkProvider,
1314
Transaction,
@@ -282,7 +283,7 @@ def parse_omit_fields_arg(args: Any) -> list[str]:
282283

283284

284285
def prepare_account(args: Any):
285-
hrp = config.get_address_hrp()
286+
hrp = _get_address_hrp(args)
286287

287288
if args.pem:
288289
return Account.new_from_pem(file_path=Path(args.pem), index=args.sender_wallet_index, hrp=hrp)
@@ -302,8 +303,39 @@ def prepare_account(args: Any):
302303
raise errors.NoWalletProvided()
303304

304305

306+
def _get_address_hrp(args: Any) -> str:
307+
"""If proxy is provided, fetch the hrp from the network, otherwise get the hrp from config"""
308+
hrp: str = ""
309+
310+
if hasattr(args, "proxy") and args.proxy:
311+
hrp = _get_hrp_from_proxy(args)
312+
elif hasattr(args, "api") and args.api:
313+
hrp = _get_hrp_from_api(args)
314+
315+
if hrp:
316+
return hrp
317+
318+
return config.get_address_hrp()
319+
320+
321+
def _get_hrp_from_proxy(args: Any) -> str:
322+
network_provider_config = config.get_config_for_network_providers()
323+
proxy = ProxyNetworkProvider(url=args.proxy, config=network_provider_config)
324+
network_config = proxy.get_network_config()
325+
hrp: str = network_config.raw.get("erd_address_hrp", "")
326+
return hrp
327+
328+
329+
def _get_hrp_from_api(args: Any) -> str:
330+
network_provider_config = config.get_config_for_network_providers()
331+
proxy = ApiNetworkProvider(url=args.api, config=network_provider_config)
332+
network_config = proxy.get_network_config()
333+
hrp: str = network_config.raw.get("erd_address_hrp", "")
334+
return hrp
335+
336+
305337
def load_guardian_account(args: Any) -> Union[IAccount, None]:
306-
hrp = config.get_address_hrp()
338+
hrp = _get_address_hrp(args)
307339

308340
if args.guardian_pem:
309341
return Account.new_from_pem(file_path=Path(args.guardian_pem), index=args.guardian_wallet_index, hrp=hrp)
@@ -434,7 +466,7 @@ def _is_matching_address(account_address: Union[Address, None], args_address: Un
434466

435467

436468
def load_relayer_account(args: Any) -> Union[IAccount, None]:
437-
hrp = config.get_address_hrp()
469+
hrp = _get_address_hrp(args)
438470

439471
if args.relayer_pem:
440472
return Account.new_from_pem(file_path=Path(args.relayer_pem), index=args.relayer_wallet_index, hrp=hrp)

multiversx_sdk_cli/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def get_value(name: str) -> str:
5757
return value
5858

5959

60-
def get_address_hrp():
60+
def get_address_hrp() -> str:
6161
return get_value("default_address_hrp")
6262

6363

0 commit comments

Comments
 (0)