diff --git a/validator/src/network/rest/mod.rs b/validator/src/network/rest/mod.rs index 7aa81fc2d6..17a87785b9 100644 --- a/validator/src/network/rest/mod.rs +++ b/validator/src/network/rest/mod.rs @@ -1,6 +1,7 @@ use iron::prelude::*; use router::Router; +mod models; mod routes; pub struct Api {} diff --git a/validator/src/network/rest/models/mod.rs b/validator/src/network/rest/models/mod.rs new file mode 100644 index 0000000000..bb4ee05c5c --- /dev/null +++ b/validator/src/network/rest/models/mod.rs @@ -0,0 +1 @@ +pub mod presence; diff --git a/validator/src/network/rest/models/presence.rs b/validator/src/network/rest/models/presence.rs new file mode 100644 index 0000000000..300e80ca6d --- /dev/null +++ b/validator/src/network/rest/models/presence.rs @@ -0,0 +1,36 @@ +use serde::{Deserialize, Serialize}; + +// Topology shows us the current state of the overall Nym network +#[derive(Serialize, Deserialize, Debug)] +pub struct Topology { + pub validators: Vec, + pub mix_nodes: Vec, + pub service_providers: Vec, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct Validator { + host: String, + public_key: String, + version: String, + last_seen: u64, + location: String, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct MixNode { + host: String, + public_key: String, + version: String, + last_seen: u64, + location: String, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct ServiceProvider { + host: String, + public_key: String, + version: String, + last_seen: u64, + location: String, +} diff --git a/validator/src/network/rest/routes/mod.rs b/validator/src/network/rest/routes/mod.rs index 9215120198..1265efcf40 100644 --- a/validator/src/network/rest/routes/mod.rs +++ b/validator/src/network/rest/routes/mod.rs @@ -1,5 +1,4 @@ use iron::prelude::*; use iron::status; -use router::Router; pub mod topology; diff --git a/validator/src/network/rest/routes/topology.rs b/validator/src/network/rest/routes/topology.rs index 83eba696c1..e2253c67d2 100644 --- a/validator/src/network/rest/routes/topology.rs +++ b/validator/src/network/rest/routes/topology.rs @@ -1,11 +1,12 @@ use super::*; +use crate::network::rest::models::presence; pub fn get(req: &mut Request) -> IronResult { - let ref query = req - .extensions - .get::() - .unwrap() - .find("query") - .unwrap_or("foomp"); - Ok(Response::with((status::Ok, *query))) + let topology = presence::Topology { + mix_nodes: Vec::::new(), + service_providers: Vec::::new(), + validators: Vec::::new(), + }; + let resp = serde_json::to_string_pretty(&topology).unwrap(); + Ok(Response::with((status::Ok, resp))) }