diff options
author | Quentin Dufour <quentin@deuxfleurs.fr> | 2020-05-21 23:04:21 +0200 |
---|---|---|
committer | Quentin Dufour <quentin@deuxfleurs.fr> | 2020-05-21 23:04:21 +0200 |
commit | 2a6b440270dc5d9b18061b69f8f700793d1ad0eb (patch) | |
tree | 5a6576fd9fd0080a982db5bec0629623b11f548c /src/consul.rs | |
parent | 8c43611eb5bbaeb42f19da8d8ed521df208bfada (diff) | |
download | diplonat-2a6b440270dc5d9b18061b69f8f700793d1ad0eb.tar.gz diplonat-2a6b440270dc5d9b18061b69f8f700793d1ad0eb.zip |
Working Consul
Diffstat (limited to 'src/consul.rs')
-rw-r--r-- | src/consul.rs | 33 |
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) + } +} |