From 2a6b440270dc5d9b18061b69f8f700793d1ad0eb Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Thu, 21 May 2020 23:04:21 +0200 Subject: Working Consul --- src/consul.rs | 33 +++++++++++++++++++++++++++++++++ src/main.rs | 23 ++++++++--------------- src/messages.rs | 0 3 files changed, 41 insertions(+), 15 deletions(-) create mode 100644 src/messages.rs (limited to 'src') diff --git a/src/consul.rs b/src/consul.rs index e69de29..e438605 100644 --- a/src/consul.rs +++ b/src/consul.rs @@ -0,0 +1,33 @@ +use serde::{Serialize, Deserialize}; +use std::collections::HashMap; +use anyhow::Result; + +#[derive(Serialize, Deserialize, Debug)] +pub struct ServiceEntry { + Tags: Vec +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct CatalogNode { + Services: HashMap +} + +pub struct Consul { + client: reqwest::Client, + url: String +} + +impl Consul { + pub fn new(url: &str) -> Self { + return Self { + client: reqwest::Client::new(), + url: url.to_string() + }; + } + + pub async fn catalog_node(&self, host: &str) -> Result { + let url = format!("{}/v1/catalog/node/{}", self.url, host); + let resp: CatalogNode = self.client.get(&url).send().await?.json().await?; + return Ok(resp) + } +} diff --git a/src/main.rs b/src/main.rs index d5656aa..ead8c32 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,31 +1,24 @@ -mod diplonat; -mod node_state; -mod environment_adapter; -mod igd_adapter; +mod consul; //use std::net::SocketAddrV4; //use std::collections::HashMap; //use igd::PortMappingProtocol; use log::*; -use node_state::*; -use diplonat::*; +use consul::*; #[tokio::main] async fn main() { pretty_env_logger::init(); info!("Starting Diplonat"); - +/* let diplo = Diplonat::new().await.expect("Setup failed"); diplo.listen().await.expect("A runtime error occured"); -/* - let url = format!("http://127.0.0.1:8500/v1/catalog/node/{}", config.consul_node_name); - let resp = reqwest::get(&url) - .await - .unwrap(); - //.json::>() - //.await.unwrap(); - println!("{:#?}", resp); +*/ + let c = Consul::new("http://127.0.0.1:8500"); + let cn = c.catalog_node("lheureduthe").await.expect("Failed to fetch API"); + println!("{:#?}", cn); +/* let gateway = match search_gateway(Default::default()).await { Ok(g) => g, Err(err) => return println!("Faild to find IGD: {}", err), diff --git a/src/messages.rs b/src/messages.rs new file mode 100644 index 0000000..e69de29 -- cgit v1.2.3