diff --git a/common/network-defaults/src/lib.rs b/common/network-defaults/src/lib.rs index 33a416e4ae..b05b46de58 100644 --- a/common/network-defaults/src/lib.rs +++ b/common/network-defaults/src/lib.rs @@ -41,7 +41,8 @@ pub struct NymNetworkDetails { pub chain_details: ChainDetails, pub endpoints: Vec, pub contracts: NymContracts, - pub explorer_api: Option, + pub explorer_api_url: Option, + pub nym_vpn_api_url: Option, } // by default we assume the same defaults as mainnet, i.e. same prefixes and denoms @@ -70,7 +71,8 @@ impl NymNetworkDetails { }, endpoints: Default::default(), contracts: Default::default(), - explorer_api: Default::default(), + explorer_api_url: Default::default(), + nym_vpn_api_url: Default::default(), } } @@ -125,7 +127,8 @@ impl NymNetworkDetails { .with_group_contract(get_optional_env(var_names::GROUP_CONTRACT_ADDRESS)) .with_multisig_contract(get_optional_env(var_names::MULTISIG_CONTRACT_ADDRESS)) .with_coconut_dkg_contract(get_optional_env(var_names::COCONUT_DKG_CONTRACT_ADDRESS)) - .with_explorer_api(get_optional_env(var_names::EXPLORER_API)) + .with_explorer_api_url(get_optional_env(var_names::EXPLORER_API)) + .with_nym_vpn_api_url(get_optional_env(var_names::NYM_VPN_API)) } pub fn new_mainnet() -> Self { @@ -154,7 +157,8 @@ impl NymNetworkDetails { mainnet::COCONUT_DKG_CONTRACT_ADDRESS, ), }, - explorer_api: parse_optional_str(mainnet::EXPLORER_API), + explorer_api_url: parse_optional_str(mainnet::EXPLORER_API), + nym_vpn_api_url: parse_optional_str(mainnet::NYM_VPN_API), } } @@ -259,10 +263,23 @@ impl NymNetworkDetails { } #[must_use] - pub fn with_explorer_api>(mut self, endpoint: Option) -> Self { - self.explorer_api = endpoint.map(Into::into); + pub fn with_explorer_api_url>(mut self, endpoint: Option) -> Self { + self.explorer_api_url = endpoint.map(Into::into); self } + + #[must_use] + pub fn with_nym_vpn_api_url>(mut self, endpoint: Option) -> Self { + self.nym_vpn_api_url = endpoint.map(Into::into); + self + } + + pub fn nym_vpn_api_url(&self) -> Option { + self.nym_vpn_api_url.as_ref().map(|url| { + url.parse() + .expect("the provided nym-vpn api url is invalid!") + }) + } } #[derive(Debug, Copy, Serialize, Deserialize, Clone, PartialEq, Eq)] diff --git a/common/network-defaults/src/mainnet.rs b/common/network-defaults/src/mainnet.rs index a9200d0239..c7b1bec0be 100644 --- a/common/network-defaults/src/mainnet.rs +++ b/common/network-defaults/src/mainnet.rs @@ -31,6 +31,7 @@ pub const NYXD_URL: &str = "https://rpc.nymtech.net"; pub const NYM_API: &str = "https://validator.nymtech.net/api/"; pub const NYXD_WS: &str = "wss://rpc.nymtech.net/websocket"; pub const EXPLORER_API: &str = "https://explorer.nymtech.net/api/"; +pub const NYM_VPN_API: &str = "https://nymvpn.net/api/"; // I'm making clippy mad on purpose, because that url HAS TO be updated and deployed before merging pub const EXIT_POLICY_URL: &str = @@ -114,6 +115,7 @@ pub fn export_to_env() { set_var_to_default(var_names::NYXD_WEBSOCKET, NYXD_WS); set_var_to_default(var_names::EXPLORER_API, EXPLORER_API); set_var_to_default(var_names::EXIT_POLICY_URL, EXIT_POLICY_URL); + set_var_to_default(var_names::NYM_VPN_API, NYM_VPN_API); } pub fn export_to_env_if_not_set() { @@ -155,4 +157,5 @@ pub fn export_to_env_if_not_set() { set_var_conditionally_to_default(var_names::NYXD_WEBSOCKET, NYXD_WS); set_var_conditionally_to_default(var_names::EXPLORER_API, EXPLORER_API); set_var_conditionally_to_default(var_names::EXIT_POLICY_URL, EXIT_POLICY_URL); + set_var_conditionally_to_default(var_names::NYM_VPN_API, NYM_VPN_API); } diff --git a/common/network-defaults/src/var_names.rs b/common/network-defaults/src/var_names.rs index 8a629ee314..f8a85ef45a 100644 --- a/common/network-defaults/src/var_names.rs +++ b/common/network-defaults/src/var_names.rs @@ -24,6 +24,7 @@ pub const NYM_API: &str = "NYM_API"; pub const NYXD_WEBSOCKET: &str = "NYXD_WS"; pub const EXPLORER_API: &str = "EXPLORER_API"; pub const EXIT_POLICY_URL: &str = "EXIT_POLICY"; +pub const NYM_VPN_API: &str = "NYM_VPN_API"; pub const DKG_TIME_CONFIGURATION: &str = "DKG_TIME_CONFIGURATION"; diff --git a/envs/canary.env b/envs/canary.env index 1c38b89a1a..9381aba351 100644 --- a/envs/canary.env +++ b/envs/canary.env @@ -20,3 +20,4 @@ COCONUT_DKG_CONTRACT_ADDRESS=n1aakfpghcanxtc45gpqlx8j3rq0zcpyf49qmhm9mdjrfx036h4 EXPLORER_API=https://canary-explorer.performance.nymte.ch/api NYXD="https://canary-validator.performance.nymte.ch" NYM_API="https://canary-api.performance.nymte.ch/api" +NYM_VPN_API="https://foo/api" diff --git a/envs/mainnet.env b/envs/mainnet.env index 04aa7f1a49..17f546028c 100644 --- a/envs/mainnet.env +++ b/envs/mainnet.env @@ -24,3 +24,4 @@ NYXD="https://rpc.nymtech.net" NYM_API="https://validator.nymtech.net/api/" NYXD_WS="wss://rpc.nymtech.net/websocket" EXPLORER_API="https://explorer.nymtech.net/api/" +NYM_VPN_API="https://nymvpn.com/api" diff --git a/nym-wallet/nym-wallet-types/src/network/qa.rs b/nym-wallet/nym-wallet-types/src/network/qa.rs index 46f33218e2..500a07d998 100644 --- a/nym-wallet/nym-wallet-types/src/network/qa.rs +++ b/nym-wallet/nym-wallet-types/src/network/qa.rs @@ -55,6 +55,6 @@ pub(crate) fn network_details() -> nym_network_defaults::NymNetworkDetails { multisig_contract_address: parse_optional_str(MULTISIG_CONTRACT_ADDRESS), coconut_dkg_contract_address: parse_optional_str(COCONUT_DKG_CONTRACT_ADDRESS), }, - explorer_api: parse_optional_str(EXPLORER_API), + explorer_api_url: parse_optional_str(EXPLORER_API), } } diff --git a/nym-wallet/nym-wallet-types/src/network/sandbox.rs b/nym-wallet/nym-wallet-types/src/network/sandbox.rs index 41a21bdad4..982014e2b2 100644 --- a/nym-wallet/nym-wallet-types/src/network/sandbox.rs +++ b/nym-wallet/nym-wallet-types/src/network/sandbox.rs @@ -55,6 +55,6 @@ pub(crate) fn network_details() -> nym_network_defaults::NymNetworkDetails { multisig_contract_address: parse_optional_str(MULTISIG_CONTRACT_ADDRESS), coconut_dkg_contract_address: parse_optional_str(COCONUT_DKG_CONTRACT_ADDRESS), }, - explorer_api: parse_optional_str(EXPLORER_API), + explorer_api_url: parse_optional_str(EXPLORER_API), } }