Skip to main content

gestalt/
secrets.rs

1// Code generated by sdkgen. DO NOT EDIT.
2
3//! Generated native types and clients for secrets.proto.
4
5use crate::codec::secrets::{from_wire_get_secret_response, to_wire_get_secret_request};
6use crate::generated::v1;
7use crate::rpc_support::GestaltError;
8
9/// GetSecretRequest looks up one named secret.
10///
11/// Native message type for `gestalt.provider.v1.GetSecretRequest`.
12#[derive(Clone, Debug, Default, PartialEq, serde::Serialize, serde::Deserialize)]
13#[serde(rename_all = "camelCase")]
14pub struct GetSecretRequest {
15    /// The `name` field.
16    pub name: String,
17}
18
19/// GetSecretResponse returns the secret value.
20///
21/// Native message type for `gestalt.provider.v1.GetSecretResponse`.
22#[derive(Clone, Debug, Default, PartialEq, serde::Serialize, serde::Deserialize)]
23#[serde(rename_all = "camelCase")]
24pub struct GetSecretResponse {
25    /// The `value` field.
26    pub value: String,
27}
28
29/// Secrets models the shared Gestalt secrets protocol.
30///
31/// Client for the `gestalt.provider.v1.Secrets` service.
32pub struct Secrets {
33    inner: v1::secrets_client::SecretsClient<tonic::transport::Channel>,
34    timeout: Option<std::time::Duration>,
35}
36
37impl Secrets {
38    /// Creates a client over an established channel.
39    pub fn new(channel: tonic::transport::Channel) -> Self {
40        Self {
41            inner: v1::secrets_client::SecretsClient::new(channel),
42            timeout: None,
43        }
44    }
45
46    /// Sets a deadline applied to every unary call; calls that run past it
47    /// fail with DEADLINE_EXCEEDED. Streaming calls are unaffected.
48    pub fn with_timeout(mut self, timeout: std::time::Duration) -> Self {
49        self.timeout = Some(timeout);
50        self
51    }
52
53    /// Calls `gestalt.provider.v1.Secrets.GetSecret`.
54    pub async fn get_secret(&mut self, name: String) -> Result<String, GestaltError> {
55        let request = GetSecretRequest { name };
56        let mut tonic_request = tonic::Request::new(to_wire_get_secret_request(request));
57        if let Some(timeout) = self.timeout {
58            tonic_request.set_timeout(timeout);
59        }
60        let response =
61            from_wire_get_secret_response(self.inner.get_secret(tonic_request).await?.into_inner());
62        Ok(response.value)
63    }
64
65    /// Calls `gestalt.provider.v1.Secrets.GetSecret` with the full request and response messages.
66    pub async fn get_secret_raw(
67        &mut self,
68        request: GetSecretRequest,
69    ) -> Result<GetSecretResponse, GestaltError> {
70        let mut tonic_request = tonic::Request::new(to_wire_get_secret_request(request));
71        if let Some(timeout) = self.timeout {
72            tonic_request.set_timeout(timeout);
73        }
74        let response = self.inner.get_secret(tonic_request).await?;
75        Ok(from_wire_get_secret_response(response.into_inner()))
76    }
77}