NC to use network dependent endpoints

This commit is contained in:
Bogdan-Ștefan Neacșu
2023-08-11 14:26:07 +03:00
parent ed3535d510
commit 691ac6d5ea
3 changed files with 17 additions and 11 deletions
@@ -1,6 +1,8 @@
use crate::operations::directory::WELLKNOWN_DIR;
use nym_config::defaults::var_names::NETWORK_NAME;
use serde::{Deserialize, Serialize};
static HEALTH_CHECK_URL: &str = "https://nymtech.net/.wellknown/connect/healthcheck.json";
static HEALTH_CHECK_URL: &str = "connect/healthcheck.json";
#[derive(Serialize, Deserialize, Debug)]
struct ConnectionSuccess {
@@ -9,7 +11,9 @@ struct ConnectionSuccess {
pub async fn run_health_check() -> bool {
log::info!("Running network health check");
match crate::operations::http::socks5_get::<_, ConnectionSuccess>(HEALTH_CHECK_URL).await {
let network_name = std::env::var(NETWORK_NAME).expect("network name not set");
let url = format!("{}/{}/{}", WELLKNOWN_DIR, network_name, HEALTH_CHECK_URL);
match crate::operations::http::socks5_get::<_, ConnectionSuccess>(url).await {
Ok(res) if res.status == "ok" => {
log::info!("✅✅✅ Healthcheck success!");
true
@@ -8,7 +8,7 @@ use crate::{
};
use itertools::Itertools;
use nym_api_requests::models::GatewayBondAnnotated;
use nym_config::defaults::var_names::NYM_API;
use nym_config::defaults::var_names::{NETWORK_NAME, NYM_API};
use nym_contracts_common::types::Percent;
use nym_validator_client::nym_api::Client as ApiClient;
use std::str::FromStr;
@@ -16,12 +16,12 @@ use std::sync::Arc;
use tokio::sync::RwLock;
use url::Url;
static SERVICE_PROVIDER_WELLKNOWN_URL: &str =
"https://nymtech.net/.wellknown/connect/service-providers.json";
pub(crate) static WELLKNOWN_DIR: &str = "https://nymtech.net/.wellknown";
static SERVICE_PROVIDER_URL_PATH: &str = "connect/service-providers.json";
// List of network-requesters running with medium toggle enabled, for testing
static SERVICE_PROVIDER_WELLKNOWN_URL_MEDIUM: &str =
"https://nymtech.net/.wellknown/connect/service-providers-medium.json";
static SERVICE_PROVIDER_MEDIUM_URL_PATH: &str = "connect/service-providers-medium.json";
// Harbour master is used to periodically keep track of which network-requesters are online
static HARBOUR_MASTER_URL: &str = "https://harbourmaster.nymtech.net/v1/services/?size=100";
@@ -81,11 +81,13 @@ pub async fn get_services(
async fn fetch_services(privacy_level: &PrivacyLevel) -> Result<Vec<DirectoryService>> {
let services_url = match privacy_level {
PrivacyLevel::Medium => SERVICE_PROVIDER_WELLKNOWN_URL_MEDIUM,
_ => SERVICE_PROVIDER_WELLKNOWN_URL,
PrivacyLevel::Medium => SERVICE_PROVIDER_MEDIUM_URL_PATH,
_ => SERVICE_PROVIDER_URL_PATH,
};
let services_res = reqwest::get(services_url)
let network_name = std::env::var(NETWORK_NAME)?;
let url = format!("{}/{}/{}", WELLKNOWN_DIR, network_name, services_url);
let services_res = reqwest::get(url)
.await?
.json::<Vec<DirectoryService>>()
.await?;
@@ -51,7 +51,7 @@
"updater": {
"active": true,
"endpoints": [
"https://nymtech.net/.wellknown/connect/updater.json"
"https://nymtech.net/.wellknown/mainnet/connect/updater.json"
],
"dialog": true,
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IENCNzQ2M0E5N0VFODE2NApSV1JrZ2U2WE9rYTNETTg1OTBKdE5uWUEra0hML2syOVUvQ2lxZmFZRzZ1T3NWbGM0eVRzUTVhVwo="