|
1 | 1 | import logging |
2 | 2 | from typing import Any, Optional |
3 | 3 |
|
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 |
5 | 7 |
|
6 | 8 | from 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 | | -) |
12 | 9 | from multiversx_sdk_cli.config import get_config_for_network_providers |
13 | 10 | from multiversx_sdk_cli.env import MxpyEnv |
14 | 11 | from multiversx_sdk_cli.errors import ( |
15 | | - AddressConfigFileError, |
16 | 12 | ArgumentsNotProvidedError, |
17 | 13 | BadUsage, |
18 | | - NoWalletProvided, |
19 | | - UnknownAddressAliasError, |
| 14 | + NetworkProviderError, |
20 | 15 | ) |
21 | 16 | from multiversx_sdk_cli.utils import dump_out_json |
22 | 17 |
|
@@ -74,6 +69,21 @@ def setup_parser(subparsers: Any) -> Any: |
74 | 69 | sub.add_argument("--hash", type=str, required=True, help="the transaction hash") |
75 | 70 | sub.set_defaults(func=get_transaction) |
76 | 71 |
|
| 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 | + |
77 | 87 | parser.epilog = cli_shared.build_group_epilog(subparsers) |
78 | 88 | return subparsers |
79 | 89 |
|
@@ -142,7 +152,10 @@ def get_key(args: Any): |
142 | 152 | proxy = _get_proxy(args) |
143 | 153 |
|
144 | 154 | 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) |
146 | 159 |
|
147 | 160 | dump_out_json(response.raw) |
148 | 161 |
|
@@ -173,39 +186,36 @@ def get_token(args: Any): |
173 | 186 |
|
174 | 187 | def get_transaction(args: Any): |
175 | 188 | 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)) |
177 | 195 |
|
178 | 196 | dump_out_json(response.raw) |
179 | 197 |
|
180 | 198 |
|
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() |
186 | 202 |
|
187 | | - file = read_address_config_file() |
188 | | - if file == dict(): |
189 | | - raise AddressConfigFileError("Address config file is empty") |
| 203 | + dump_out_json(config.raw) |
190 | 204 |
|
191 | | - addresses: dict[str, Any] = file["addresses"] |
192 | | - wallet = addresses.get(alias, None) |
193 | | - if not wallet: |
194 | | - raise UnknownAddressAliasError(alias) |
195 | 205 |
|
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) |
204 | 211 |
|
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.") |
207 | 212 |
|
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) |
209 | 219 | return account.address |
210 | 220 |
|
211 | 221 |
|
|
0 commit comments