// Copyright 2023 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 use crate::api::v1::gateway::models::WebSockets; use crate::api::v1::node::models::{ AuxiliaryDetails, NodeDescription, NodeRoles, SignedHostInformation, }; use crate::api::ErrorResponse; use crate::routes; use async_trait::async_trait; use nym_bin_common::build_information::BinaryBuildInformationOwned; use nym_http_api_client::{ApiClient, HttpClientError}; use super::v1::gateway::models::Wireguard; use super::v1::metrics::models::SessionStats; use crate::api::v1::authenticator::models::Authenticator; use crate::api::v1::health::models::NodeHealth; use crate::api::v1::ip_packet_router::models::IpPacketRouter; use crate::api::v1::network_requester::exit_policy::models::UsedExitPolicy; use crate::api::v1::network_requester::models::NetworkRequester; use crate::api::v1::node_load::models::NodeLoad; pub use nym_http_api_client::Client; pub type NymNodeApiClientError = HttpClientError; #[cfg_attr(target_arch = "wasm32", async_trait(?Send))] #[cfg_attr(not(target_arch = "wasm32"), async_trait)] pub trait NymNodeApiClientExt: ApiClient { async fn get_health(&self) -> Result { self.get_json_from(routes::api::v1::health_absolute()).await } async fn get_node_load(&self) -> Result { self.get_json_from(routes::api::v1::load_absolute()).await } async fn get_host_information(&self) -> Result { self.get_json_from(routes::api::v1::host_info_absolute()) .await } async fn get_description(&self) -> Result { self.get_json_from(routes::api::v1::description_absolute()) .await } async fn get_build_information( &self, ) -> Result { self.get_json_from(routes::api::v1::build_info_absolute()) .await } async fn get_roles(&self) -> Result { self.get_json_from(routes::api::v1::roles_absolute()).await } async fn get_auxiliary_details(&self) -> Result { self.get_json_from(routes::api::v1::auxiliary_absolute()) .await } // TODO: implement calls for other endpoints; for now I only care about the wss async fn get_mixnet_websockets(&self) -> Result { self.get_json_from( routes::api::v1::gateway::client_interfaces::mixnet_websockets_absolute(), ) .await } async fn get_network_requester(&self) -> Result { self.get_json_from(routes::api::v1::network_requester_absolute()) .await } async fn get_exit_policy(&self) -> Result { self.get_json_from(routes::api::v1::network_requester::exit_policy_absolute()) .await } async fn get_ip_packet_router(&self) -> Result { self.get_json_from(routes::api::v1::ip_packet_router_absolute()) .await } async fn get_authenticator(&self) -> Result { self.get_json_from(routes::api::v1::authenticator_absolute()) .await } async fn get_wireguard(&self) -> Result { self.get_json_from(routes::api::v1::gateway::client_interfaces::wireguard_absolute()) .await } async fn get_sessions_metrics(&self) -> Result { self.get_json_from(routes::api::v1::metrics::sessions_absolute()) .await } } #[cfg_attr(target_arch = "wasm32", async_trait(?Send))] #[cfg_attr(not(target_arch = "wasm32"), async_trait)] impl NymNodeApiClientExt for Client {}