google_cloud_storage/http/hmac_keys/
create.rs

1use reqwest::header::CONTENT_LENGTH;
2use reqwest_middleware::{ClientWithMiddleware as Client, RequestBuilder};
3
4use crate::http::hmac_keys::HmacKeyMetadata;
5use crate::http::Escape;
6
7#[derive(Clone, PartialEq, Eq, serde::Deserialize, serde::Serialize, Debug, Default)]
8#[serde(rename_all = "camelCase")]
9pub struct CreateHmacKeyRequest {
10    /// Required. The project that the HMAC-owning service account lives in.
11    #[serde(skip_serializing)]
12    pub project_id: String,
13    /// Required. The service account to create the HMAC for.
14    pub service_account_email: String,
15}
16/// Create hmac response.  The only time the secret for an HMAC will be returned.
17#[derive(Clone, PartialEq, Eq, serde::Deserialize, serde::Serialize, Debug, Default)]
18#[serde(rename_all = "camelCase")]
19pub struct CreateHmacKeyResponse {
20    /// Key metadata.
21    pub metadata: HmacKeyMetadata,
22    /// HMAC key secret material.
23    pub secret: String,
24}
25
26pub(crate) fn build(base_url: &str, client: &Client, req: &CreateHmacKeyRequest) -> RequestBuilder {
27    let url = format!("{}/projects/{}/hmacKeys", base_url, req.project_id.escape());
28    client
29        .post(url)
30        .query(&req)
31        // Content-Length header is required
32        .header(CONTENT_LENGTH, 0)
33}