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