11import logging
22from typing import Any , Optional
33
4- from multiversx_sdk import Address , ProxyNetworkProvider , Token , TokenComputer
4+ from multiversx_sdk import Address
5+ from multiversx_sdk import NetworkProviderError as SDKNetworkProviderError
6+ from multiversx_sdk import ProxyNetworkProvider , Token , TokenComputer
57
68from multiversx_sdk_cli import cli_shared
7- from multiversx_sdk_cli .address import (
8- get_active_address ,
9- read_address_config_file ,
10- resolve_address_config_path ,
11- )
129from multiversx_sdk_cli .config import get_config_for_network_providers
1310from multiversx_sdk_cli .env import MxpyEnv
1411from multiversx_sdk_cli .errors import (
15- AddressConfigFileError ,
1612 ArgumentsNotProvidedError ,
1713 BadUsage ,
18- NoWalletProvided ,
19- UnknownAddressAliasError ,
14+ NetworkProviderError ,
2015)
2116from multiversx_sdk_cli .utils import dump_out_json
2217
@@ -41,12 +36,12 @@ def setup_parser(subparsers: Any) -> Any:
4136 sub .set_defaults (func = get_account )
4237
4338 sub = cli_shared .add_command_subparser (
44- subparsers , "get" , "keys " , "Get the storage (key-value pairs) of an account."
39+ subparsers , "get" , "storage " , "Get the storage (key-value pairs) of an account."
4540 )
4641 _add_alias_arg (sub )
4742 _add_address_arg (sub )
4843 _add_proxy_arg (sub )
49- sub .set_defaults (func = get_keys )
44+ sub .set_defaults (func = get_storage )
5045
5146 sub = cli_shared .add_command_subparser (
5247 subparsers , "get" , "storage-entry" , "Get a specific storage entry (key-value pair) of an account."
@@ -74,6 +69,21 @@ def setup_parser(subparsers: Any) -> Any:
7469 sub .add_argument ("--hash" , type = str , required = True , help = "the transaction hash" )
7570 sub .set_defaults (func = get_transaction )
7671
72+ sub = cli_shared .add_command_subparser (subparsers , "get" , "network-config" , "Get the network configuration." )
73+ _add_proxy_arg (sub )
74+ sub .set_defaults (func = get_network_config )
75+
76+ sub = cli_shared .add_command_subparser (subparsers , "get" , "network-status" , "Get the network status." )
77+ _add_proxy_arg (sub )
78+ sub .add_argument (
79+ "--shard" ,
80+ type = int ,
81+ choices = [0 , 1 , 2 , 4294967295 ],
82+ default = 4294967295 ,
83+ help = "the shard to get the status for (default: %(default)s, which is methachain)" ,
84+ )
85+ sub .set_defaults (func = get_network_status )
86+
7787 parser .epilog = cli_shared .build_group_epilog (subparsers )
7888 return subparsers
7989
@@ -111,7 +121,7 @@ def get_account(args: Any):
111121 dump_out_json (response .raw )
112122
113123
114- def get_keys (args : Any ):
124+ def get_storage (args : Any ):
115125 if args .alias and args .address :
116126 raise BadUsage ("Provide either '--alias' or '--address'" )
117127
@@ -142,7 +152,10 @@ def get_key(args: Any):
142152 proxy = _get_proxy (args )
143153
144154 logger .info (f"Fetching details about { address .to_bech32 ()} " )
145- response = proxy .get_account_storage_entry (address , args .key )
155+ try :
156+ response = proxy .get_account_storage_entry (address , args .key )
157+ except SDKNetworkProviderError as e :
158+ raise NetworkProviderError (e .url , e .data )
146159
147160 dump_out_json (response .raw )
148161
@@ -173,39 +186,36 @@ def get_token(args: Any):
173186
174187def get_transaction (args : Any ):
175188 proxy = _get_proxy (args )
176- response = proxy .get_transaction (args .hash )
189+ try :
190+ response = proxy .get_transaction (args .hash )
191+ except SDKNetworkProviderError as e :
192+ raise NetworkProviderError (e .url , e .data )
193+ except Exception as e :
194+ raise NetworkProviderError ("" , str (e ))
177195
178196 dump_out_json (response .raw )
179197
180198
181- def _get_address_from_alias_or_config (alias : Optional [str ], hrp : str ) -> Address :
182- if alias :
183- file_path = resolve_address_config_path ()
184- if not file_path .is_file ():
185- raise AddressConfigFileError ("The address config file was not found" )
199+ def get_network_config (args : Any ):
200+ proxy = _get_proxy (args )
201+ config = proxy .get_network_config ()
186202
187- file = read_address_config_file ()
188- if file == dict ():
189- raise AddressConfigFileError ("Address config file is empty" )
203+ dump_out_json (config .raw )
190204
191- addresses : dict [str , Any ] = file ["addresses" ]
192- wallet = addresses .get (alias , None )
193- if not wallet :
194- raise UnknownAddressAliasError (alias )
195205
196- logger .info (f"Using address of [{ alias } ] from address config." )
197- account = cli_shared .load_wallet_from_address_config (wallet = wallet , hrp = hrp )
198- return account .address
199- else :
200- active_address = get_active_address ()
201- if active_address == dict ():
202- logger .info ("No default wallet found in address config." )
203- raise NoWalletProvided ()
206+ def get_network_status (args : Any ):
207+ proxy = _get_proxy (args )
208+ status = proxy .get_network_status ()
209+
210+ dump_out_json (status .raw )
204211
205- alias_of_default_wallet = read_address_config_file ().get ("active" , "" )
206- logger .info (f"Using address of [{ alias_of_default_wallet } ] from address config." )
207212
208- account = cli_shared .load_wallet_from_address_config (wallet = active_address , hrp = hrp )
213+ def _get_address_from_alias_or_config (alias : Optional [str ], hrp : str ) -> Address :
214+ if alias :
215+ account = cli_shared .load_wallet_by_alias (alias = alias , hrp = hrp )
216+ return account .address
217+ else :
218+ account = cli_shared .load_default_wallet (hrp = hrp )
209219 return account .address
210220
211221
0 commit comments