1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
// This file is @generated by prost-build.
/// A representation of an ExternalAccountKey used for [external account
/// binding](<https://tools.ietf.org/html/rfc8555#section-7.3.4>) within ACME.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ExternalAccountKey {
    /// Output only. Resource name.
    /// projects/{project}/locations/{location}/externalAccountKeys/{key_id}
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    /// Output only. Key ID.
    /// It is generated by the PublicCertificateAuthorityService
    /// when the ExternalAccountKey is created
    #[prost(string, tag = "2")]
    pub key_id: ::prost::alloc::string::String,
    /// Output only. Base64-URL-encoded HS256 key.
    /// It is generated by the PublicCertificateAuthorityService
    /// when the ExternalAccountKey is created
    #[prost(bytes = "bytes", tag = "3")]
    pub b64_mac_key: ::prost::bytes::Bytes,
}
/// Creates a new
/// [ExternalAccountKey][google.cloud.security.publicca.v1.ExternalAccountKey] in
/// a given project.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateExternalAccountKeyRequest {
    /// Required. The parent resource where this external_account_key will be
    /// created. Format: projects/\[project_id\]/locations/\[location\]. At present
    /// only the "global" location is supported.
    #[prost(string, tag = "1")]
    pub parent: ::prost::alloc::string::String,
    /// Required. The external account key to create. This field only exists to
    /// future-proof the API. At present, all fields in ExternalAccountKey are
    /// output only and all values are ignored. For the purpose of the
    /// CreateExternalAccountKeyRequest, set it to a default/empty value.
    #[prost(message, optional, tag = "2")]
    pub external_account_key: ::core::option::Option<ExternalAccountKey>,
}
/// Generated client implementations.
pub mod public_certificate_authority_service_client {
    #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
    use tonic::codegen::*;
    use tonic::codegen::http::Uri;
    /// Manages the resources required for ACME [external account
    /// binding](https://tools.ietf.org/html/rfc8555#section-7.3.4) for
    /// the public certificate authority service.
    #[derive(Debug, Clone)]
    pub struct PublicCertificateAuthorityServiceClient<T> {
        inner: tonic::client::Grpc<T>,
    }
    impl<T> PublicCertificateAuthorityServiceClient<T>
    where
        T: tonic::client::GrpcService<tonic::body::BoxBody>,
        T::Error: Into<StdError>,
        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
    {
        pub fn new(inner: T) -> Self {
            let inner = tonic::client::Grpc::new(inner);
            Self { inner }
        }
        pub fn with_origin(inner: T, origin: Uri) -> Self {
            let inner = tonic::client::Grpc::with_origin(inner, origin);
            Self { inner }
        }
        pub fn with_interceptor<F>(
            inner: T,
            interceptor: F,
        ) -> PublicCertificateAuthorityServiceClient<InterceptedService<T, F>>
        where
            F: tonic::service::Interceptor,
            T::ResponseBody: Default,
            T: tonic::codegen::Service<
                http::Request<tonic::body::BoxBody>,
                Response = http::Response<
                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
                >,
            >,
            <T as tonic::codegen::Service<
                http::Request<tonic::body::BoxBody>,
            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
        {
            PublicCertificateAuthorityServiceClient::new(
                InterceptedService::new(inner, interceptor),
            )
        }
        /// Compress requests with the given encoding.
        ///
        /// This requires the server to support it otherwise it might respond with an
        /// error.
        #[must_use]
        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
            self.inner = self.inner.send_compressed(encoding);
            self
        }
        /// Enable decompressing responses.
        #[must_use]
        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
            self.inner = self.inner.accept_compressed(encoding);
            self
        }
        /// Limits the maximum size of a decoded message.
        ///
        /// Default: `4MB`
        #[must_use]
        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
            self.inner = self.inner.max_decoding_message_size(limit);
            self
        }
        /// Limits the maximum size of an encoded message.
        ///
        /// Default: `usize::MAX`
        #[must_use]
        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
            self.inner = self.inner.max_encoding_message_size(limit);
            self
        }
        /// Creates a new
        /// [ExternalAccountKey][google.cloud.security.publicca.v1.ExternalAccountKey]
        /// bound to the project.
        pub async fn create_external_account_key(
            &mut self,
            request: impl tonic::IntoRequest<super::CreateExternalAccountKeyRequest>,
        ) -> std::result::Result<
            tonic::Response<super::ExternalAccountKey>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::new(
                        tonic::Code::Unknown,
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/google.cloud.security.publicca.v1.PublicCertificateAuthorityService/CreateExternalAccountKey",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "google.cloud.security.publicca.v1.PublicCertificateAuthorityService",
                        "CreateExternalAccountKey",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
    }
}