consulrs 0.1.0

An asynchronous Rust client library for the Hashicorp Consul API.
Documentation
use derive_builder::Builder;
use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;
use std::{collections::HashMap, fmt::Debug};

#[skip_serializing_none]
#[derive(Builder, Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "PascalCase")]
#[builder(setter(into, strip_option), default)]
pub struct ExposeConfig {
    pub checks: Option<bool>,
    pub paths: Option<Vec<ExposePath>>,
}

#[skip_serializing_none]
#[derive(Builder, Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "PascalCase")]
#[builder(setter(into, strip_option), default)]
pub struct ExposePath {
    pub listener_port: Option<u64>,
    pub local_path_port: Option<u64>,
    pub path: Option<String>,
    pub parsed_from_check: Option<bool>,
    pub protocol: Option<String>,
}

#[skip_serializing_none]
#[derive(Builder, Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "PascalCase")]
#[builder(setter(into, strip_option), default)]
pub struct MeshGatewayConfig {
    pub mode: Option<String>,
}

#[skip_serializing_none]
#[derive(Builder, Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "PascalCase")]
#[builder(setter(into, strip_option), default)]
pub struct TransparentProxyConfig {
    pub dialed_directly: Option<bool>,
    pub outbound_listener_port: Option<u64>,
}

#[skip_serializing_none]
#[derive(Builder, Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "PascalCase")]
#[builder(setter(into, strip_option), default)]
pub struct Upstream {
    pub centrally_configured: Option<bool>,
    pub config: Option<HashMap<String, String>>,
    pub datacenter: Option<String>,
    pub destination_name: Option<String>,
    pub destination_namespace: Option<String>,
    pub destination_type: Option<String>,
    pub local_bind_address: Option<String>,
    pub local_bind_port: Option<u64>,
    pub local_bind_socket_mode: Option<String>,
    pub local_bind_socket_path: Option<String>,
    pub mesh_gateway: Option<MeshGatewayConfig>,
}