gestalt-sdk 0.0.1-alpha.19

Rust SDK scaffolding and generated protocol bindings for Gestalt executable providers
Documentation
// Code generated by sdkgen. DO NOT EDIT.

//! Generated native types and clients for secrets.proto.

use crate::codec::secrets::{from_wire_get_secret_response, to_wire_get_secret_request};
use crate::generated::v1;
use crate::rpc_support::GestaltError;

/// GetSecretRequest looks up one named secret.
///
/// Native message type for `gestalt.provider.v1.GetSecretRequest`.
#[derive(Clone, Debug, Default, PartialEq)]
pub struct GetSecretRequest {
    /// The `name` field.
    pub name: String,
}

/// GetSecretResponse returns the secret value.
///
/// Native message type for `gestalt.provider.v1.GetSecretResponse`.
#[derive(Clone, Debug, Default, PartialEq)]
pub struct GetSecretResponse {
    /// The `value` field.
    pub value: String,
}

/// Secrets models the shared Gestalt secrets protocol.
///
/// Client for the `gestalt.provider.v1.Secrets` service.
pub struct Secrets {
    inner: v1::secrets_client::SecretsClient<tonic::transport::Channel>,
    timeout: Option<std::time::Duration>,
}

impl Secrets {
    /// Creates a client over an established channel.
    pub fn new(channel: tonic::transport::Channel) -> Self {
        Self {
            inner: v1::secrets_client::SecretsClient::new(channel),
            timeout: None,
        }
    }

    /// Sets a deadline applied to every unary call; calls that run past it
    /// fail with DEADLINE_EXCEEDED. Streaming calls are unaffected.
    pub fn with_timeout(mut self, timeout: std::time::Duration) -> Self {
        self.timeout = Some(timeout);
        self
    }

    /// Calls `gestalt.provider.v1.Secrets.GetSecret`.
    pub async fn get_secret(&mut self, name: String) -> Result<String, GestaltError> {
        let request = GetSecretRequest { name };
        let mut tonic_request = tonic::Request::new(to_wire_get_secret_request(request));
        if let Some(timeout) = self.timeout {
            tonic_request.set_timeout(timeout);
        }
        let response =
            from_wire_get_secret_response(self.inner.get_secret(tonic_request).await?.into_inner());
        Ok(response.value)
    }

    /// Calls `gestalt.provider.v1.Secrets.GetSecret` with the full request and response messages.
    pub async fn get_secret_raw(
        &mut self,
        request: GetSecretRequest,
    ) -> Result<GetSecretResponse, GestaltError> {
        let mut tonic_request = tonic::Request::new(to_wire_get_secret_request(request));
        if let Some(timeout) = self.timeout {
            tonic_request.set_timeout(timeout);
        }
        let response = self.inner.get_secret(tonic_request).await?;
        Ok(from_wire_get_secret_response(response.into_inner()))
    }
}