aboutsummaryrefslogtreecommitdiff
path: root/src/consul.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/consul.rs')
-rw-r--r--src/consul.rs33
1 files changed, 33 insertions, 0 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)
+ }
+}