aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/consul.rs33
-rw-r--r--src/main.rs23
-rw-r--r--src/messages.rs0
3 files changed, 41 insertions, 15 deletions
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<String>
+}
+
+#[derive(Serialize, Deserialize, Debug)]
+pub struct CatalogNode {
+ Services: HashMap<String, ServiceEntry>
+}
+
+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<CatalogNode> {
+ 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::<HashMap<String, String>>()
- //.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
--- /dev/null
+++ b/src/messages.rs