aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2020-05-21 23:04:21 +0200
committerQuentin Dufour <quentin@deuxfleurs.fr>2020-05-21 23:04:21 +0200
commit2a6b440270dc5d9b18061b69f8f700793d1ad0eb (patch)
tree5a6576fd9fd0080a982db5bec0629623b11f548c
parent8c43611eb5bbaeb42f19da8d8ed521df208bfada (diff)
downloaddiplonat-2a6b440270dc5d9b18061b69f8f700793d1ad0eb.tar.gz
diplonat-2a6b440270dc5d9b18061b69f8f700793d1ad0eb.zip
Working Consul
-rw-r--r--Cargo.lock19
-rw-r--r--Cargo.toml3
-rw-r--r--src/consul.rs33
-rw-r--r--src/main.rs23
-rw-r--r--src/messages.rs0
5 files changed, 60 insertions, 18 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 8299558..11ae2f9 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -131,6 +131,7 @@ dependencies = [
"pretty_env_logger",
"reqwest",
"serde",
+ "serde_json",
"tokio",
]
@@ -969,12 +970,26 @@ name = "serde"
version = "1.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eba7550f2cdf88ffc23ab0f1607133486c390a8c0f89b57e589b9654ee15e04d"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.107"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10be45e22e5597d4b88afcc71f9d7bfadcd604bf0c78a3ab4582b8d2b37f39f3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
[[package]]
name = "serde_json"
-version = "1.0.47"
+version = "1.0.53"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15913895b61e0be854afd32fd4163fcd2a3df34142cf2cb961b310ce694cbf90"
+checksum = "993948e75b189211a9b31a7528f950c6adc21f9720b6438ff80a7fa2f864cea2"
dependencies = [
"itoa",
"ryu",
diff --git a/Cargo.toml b/Cargo.toml
index 2e6eb3f..14e6488 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,5 +13,6 @@ log = "0.4"
pretty_env_logger = "0.4"
tokio = "0.2.11"
futures = "0.3.5"
-serde = "1.0.107"
+serde = { version = "1.0.107", features = ["derive"] }
+serde_json = "1.0.53"
anyhow = "1.0.28"
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