gcloud_storage/http/object_access_controls/
patch.rs

1use reqwest_middleware::{ClientWithMiddleware as Client, RequestBuilder};
2
3use crate::http::object_access_controls::ObjectAccessControl;
4
5/// Request message for PatchObjectAccessControl.
6#[derive(Clone, PartialEq, Eq, serde::Deserialize, serde::Serialize, Debug, Default)]
7#[serde(rename_all = "camelCase")]
8pub struct PatchObjectAccessControlRequest {
9    /// Required. Name of a bucket.
10    #[serde(skip_serializing)]
11    pub bucket: String,
12    /// Required. The entity holding the permission. Can be one of:
13    /// * `user-`*userId*
14    /// * `user-`*emailAddress*
15    /// * `group-`*groupId*
16    /// * `group-`*emailAddress*
17    /// * `allUsers`
18    /// * `allAuthenticatedUsers`
19    #[serde(skip_serializing)]
20    pub entity: String,
21    /// Required. Name of the object.
22    /// Required.
23    #[serde(skip_serializing)]
24    pub object: String,
25    /// If present, selects a specific revision of this object (as opposed to the
26    /// latest version, the default).
27    pub generation: Option<i64>,
28    /// The ObjectAccessControl for updating.
29    #[serde(skip_serializing)]
30    pub acl: ObjectAccessControl,
31}
32
33pub(crate) fn build(base_url: &str, client: &Client, req: &PatchObjectAccessControlRequest) -> RequestBuilder {
34    let url = format!("{}/b/{}/o/{}/acl/{}", base_url, req.bucket, req.object, req.entity);
35    client.patch(url).query(&req).json(&req.acl)
36}