create '/api/v1/auxiliary-details' that exposes nodes location
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
// Copyright 2024 - Nym Technologies SA <contact@nymtech.net>
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
use crate::api::{FormattedResponse, OutputParams};
|
||||
use crate::router::types::RequestError;
|
||||
use axum::extract::Query;
|
||||
use nym_node_requests::api::v1::node::models::AuxiliaryDetails;
|
||||
|
||||
/// Returns auxiliary details of this node.
|
||||
#[utoipa::path(
|
||||
get,
|
||||
path = "/auxiliary-details",
|
||||
context_path = "/api/v1",
|
||||
tag = "Node",
|
||||
responses(
|
||||
(status = 200, content(
|
||||
("application/json" = AuxiliaryDetails),
|
||||
("application/yaml" = AuxiliaryDetails)
|
||||
)),
|
||||
),
|
||||
params(OutputParams)
|
||||
)]
|
||||
pub(crate) async fn auxiliary(
|
||||
description: AuxiliaryDetails,
|
||||
Query(output): Query<OutputParams>,
|
||||
) -> Result<AuxiliaryDetailsResponse, RequestError> {
|
||||
let output = output.output.unwrap_or_default();
|
||||
Ok(output.to_response(description))
|
||||
}
|
||||
|
||||
pub type AuxiliaryDetailsResponse = FormattedResponse<AuxiliaryDetails>;
|
||||
@@ -1,6 +1,7 @@
|
||||
// Copyright 2023 - Nym Technologies SA <contact@nymtech.net>
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
use crate::api::v1::node::auxiliary::auxiliary;
|
||||
use crate::api::v1::node::build_information::build_information;
|
||||
use crate::api::v1::node::description::description;
|
||||
use crate::api::v1::node::hardware::host_system;
|
||||
@@ -11,6 +12,7 @@ use axum::Router;
|
||||
use nym_node_requests::api::v1::node::models;
|
||||
use nym_node_requests::routes::api::v1;
|
||||
|
||||
pub mod auxiliary;
|
||||
pub mod build_information;
|
||||
pub mod description;
|
||||
pub mod hardware;
|
||||
@@ -24,6 +26,7 @@ pub struct Config {
|
||||
pub system_info: Option<models::HostSystem>,
|
||||
pub roles: models::NodeRoles,
|
||||
pub description: models::NodeDescription,
|
||||
pub auxiliary_details: models::AuxiliaryDetails,
|
||||
}
|
||||
|
||||
pub(super) fn routes<S: Send + Sync + 'static + Clone>(config: Config) -> Router<S> {
|
||||
@@ -63,4 +66,11 @@ pub(super) fn routes<S: Send + Sync + 'static + Clone>(config: Config) -> Router
|
||||
move |query| description(node_description, query)
|
||||
}),
|
||||
)
|
||||
.route(
|
||||
v1::AUXILIARY,
|
||||
get({
|
||||
let auxiliary_details = config.auxiliary_details;
|
||||
move |query| auxiliary(auxiliary_details, query)
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ use utoipa_swagger_ui::SwaggerUi;
|
||||
api::v1::node::roles::roles,
|
||||
api::v1::node::hardware::host_system,
|
||||
api::v1::node::description::description,
|
||||
api::v1::node::auxiliary::auxiliary,
|
||||
api::v1::metrics::mixing::mixing_stats,
|
||||
api::v1::metrics::verloc::verloc_stats,
|
||||
api::v1::metrics::prometheus::prometheus_metrics,
|
||||
@@ -52,6 +53,7 @@ use utoipa_swagger_ui::SwaggerUi;
|
||||
api_requests::v1::node::models::Cpu,
|
||||
api_requests::v1::node::models::CryptoHardware,
|
||||
api_requests::v1::node::models::NodeDescription,
|
||||
api_requests::v1::node::models::AuxiliaryDetails,
|
||||
api_requests::v1::metrics::models::MixingStats,
|
||||
api_requests::v1::metrics::models::VerlocStats,
|
||||
api_requests::v1::metrics::models::VerlocResult,
|
||||
|
||||
@@ -15,7 +15,7 @@ use nym_node_requests::api::v1::mixnode::models::Mixnode;
|
||||
use nym_node_requests::api::v1::network_requester::exit_policy::models::UsedExitPolicy;
|
||||
use nym_node_requests::api::v1::network_requester::models::NetworkRequester;
|
||||
use nym_node_requests::api::v1::node::models;
|
||||
use nym_node_requests::api::v1::node::models::{HostSystem, NodeDescription};
|
||||
use nym_node_requests::api::v1::node::models::{AuxiliaryDetails, HostSystem, NodeDescription};
|
||||
use nym_node_requests::api::SignedHostInformation;
|
||||
use nym_node_requests::routes;
|
||||
use std::net::SocketAddr;
|
||||
@@ -47,6 +47,7 @@ impl Config {
|
||||
system_info: None,
|
||||
roles: Default::default(),
|
||||
description: Default::default(),
|
||||
auxiliary_details: Default::default(),
|
||||
},
|
||||
metrics: Default::default(),
|
||||
gateway: Default::default(),
|
||||
@@ -88,6 +89,12 @@ impl Config {
|
||||
self
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn with_auxiliary_details(mut self, auxiliary_details: AuxiliaryDetails) -> Self {
|
||||
self.api.v1_config.node.auxiliary_details = auxiliary_details;
|
||||
self
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn with_gateway(mut self, gateway: Gateway) -> Self {
|
||||
self.api.v1_config.node.roles.gateway_enabled = true;
|
||||
|
||||
Reference in New Issue
Block a user