gapirs-drive-v3 0.0.1

Rust library for Google API drive v0.0.1
Documentation
// This file was generated by code-gen. DO NOT EDIT MANUALLY! 

extern crate derive_more;
extern crate std;
use ::serde::{Deserialize, Serialize};
use crate::gapirs_common::errors::*;
use crate::gapirs_common::utils::converters::ConvertToQueryParams;
use crate::gapirs_common::Hub;
///This usage is to have a reference to the return type of the call
use crate::discovery::schemas::*;
use ::derive_builder::Builder;
use ::core::str::FromStr;
use ::std::write;
use ::std::error;
use ::core::option::Option::Some;
use ::core::option::Option::None;
use ::core::result::Result::Ok;
use ::core::result::Result::Err;
use ::core::default::Default;
use ::core::convert::AsRef;
use ::core::convert::From;
use std::string::ToString;
///Creates a permission for a file or shared drive. **Warning:** Concurrent permissions operations on the same file are not supported; only the last update is applied.
#[derive(Deserialize, Serialize, Builder)]
#[builder(name = DrivePermissionsCreateCallBuilder)]
#[builder(derive(::derive_more::Debug))]
#[derive(::derive_more::Debug)]
#[builder(setter(strip_option))]
#[builder(pattern = "owned")]
pub struct DrivePermissionsCreateCall<'a, H: Hub> {
    #[serde(skip)]
    #[debug(skip)]
    #[builder(setter(custom))]
    #[builder(default)]
    _hub: ::core::option::Option<&'a H>,
    #[serde(skip)]
    #[debug(skip)]
    #[builder(setter(custom))]
    #[builder(pattern = "owned")]
    _body: ::core::option::Option<::alloc::string::String>,
    #[serde(rename = "emailMessage")]
    #[builder(setter(into))]
    #[serde(default)]
    #[builder(default)]
    ///A plain text custom message to include in the notification email.
    pub email_message: ::core::option::Option<::alloc::string::String>,
    #[serde(rename = "enforceExpansiveAccess")]
    #[builder(setter(into))]
    #[serde(default = "::gapirs_common::defaults::bool_false")]
    #[builder(default = "false")]
    ///Whether the request should enforce expansive access rules.
    pub enforce_expansive_access: ::core::primitive::bool,
    #[serde(rename = "enforceSingleParent")]
    #[builder(setter(into))]
    #[serde(default = "::gapirs_common::defaults::bool_false")]
    #[builder(default = "false")]
    ///Deprecated: See `moveToNewOwnersRoot` for details.
    #[deprecated(note = "This field is deprecated and might be removed at any point")]
    pub enforce_single_parent: ::core::primitive::bool,
    #[serde(rename = "fields")]
    #[builder(setter(into))]
    #[serde(default)]
    #[builder(default)]
    ///Field mask used for response filtering
    pub fields: ::core::option::Option<::alloc::string::String>,
    #[serde(rename = "fileId")]
    #[builder(setter(into))]
    ///The ID of the file or shared drive.
    pub file_id: ::alloc::string::String,
    #[serde(rename = "moveToNewOwnersRoot")]
    #[builder(setter(into))]
    #[serde(default = "::gapirs_common::defaults::bool_false")]
    #[builder(default = "false")]
    ///This parameter will only take effect if the item is not in a shared drive and the request is attempting to transfer the ownership of the item. If set to `true`, the item will be moved to the new owner's My Drive root folder and all prior parents removed. If set to `false`, parents are not changed.
    pub move_to_new_owners_root: ::core::primitive::bool,
    #[serde(rename = "sendNotificationEmail")]
    #[builder(setter(into))]
    #[serde(default)]
    #[builder(default)]
    ///Whether to send a notification email when sharing to users or groups. This defaults to true for users and groups, and is not allowed for other requests. It must not be disabled for ownership transfers.
    pub send_notification_email: ::core::option::Option<::core::primitive::bool>,
    #[serde(rename = "supportsAllDrives")]
    #[builder(setter(into))]
    #[serde(default = "::gapirs_common::defaults::bool_false")]
    #[builder(default = "false")]
    ///Whether the requesting application supports both My Drives and shared drives.
    pub supports_all_drives: ::core::primitive::bool,
    #[serde(rename = "supportsTeamDrives")]
    #[builder(setter(into))]
    #[serde(default = "::gapirs_common::defaults::bool_false")]
    #[builder(default = "false")]
    ///Deprecated: Use `supportsAllDrives` instead.
    #[deprecated(note = "This field is deprecated and might be removed at any point")]
    pub supports_team_drives: ::core::primitive::bool,
    #[serde(rename = "transferOwnership")]
    #[builder(setter(into))]
    #[serde(default = "::gapirs_common::defaults::bool_false")]
    #[builder(default = "false")]
    ///Whether to transfer ownership to the specified user and downgrade the current owner to a writer. This parameter is required as an acknowledgement of the side effect.
    pub transfer_ownership: ::core::primitive::bool,
    #[serde(rename = "useDomainAdminAccess")]
    #[builder(setter(into))]
    #[serde(default = "::gapirs_common::defaults::bool_false")]
    #[builder(default = "false")]
    ///Issue the request as a domain administrator; if set to true, then the requester will be granted access if the file ID parameter refers to a shared drive and the requester is an administrator of the domain to which the shared drive belongs.
    pub use_domain_admin_access: ::core::primitive::bool,
}
impl<
    'a,
    H: crate::gapirs_common::Hub,
> crate::gapirs_common::ApiCallBase<
    'a,
    H,
    ::alloc::boxed::Box<crate::discovery::schemas::permission::PermissionPartial>,
> for DrivePermissionsCreateCall<'a, H> {
    fn get_method_path(&self) -> &::core::primitive::str {
        "files/{fileId}/permissions"
    }
    fn get_media_upload_path_simple(
        &self,
    ) -> ::core::option::Option<&::core::primitive::str> {
        ::core::option::Option::None
    }
    fn get_media_upload_path_resumable(
        &self,
    ) -> ::core::option::Option<&::core::primitive::str> {
        ::core::option::Option::None
    }
    fn get_query_params(
        &self,
    ) -> ::alloc::vec::Vec<(&::core::primitive::str, ::alloc::string::String)> {
        let mut params: ::alloc::vec::Vec<
            (&::core::primitive::str, ::alloc::string::String),
        > = ::alloc::vec![];
        if let ::core::option::Option::Some(v) = &self.email_message {
            params.push(("emailMessage", v.to_google_param_str()));
        }
        let v = self.enforce_expansive_access.to_google_param_str();
        if v != "false" {
            params.push(("enforceExpansiveAccess", v));
        }
        #[allow(deprecated)]
        let v = self.enforce_single_parent.to_google_param_str();
        if v != "false" {
            params.push(("enforceSingleParent", v));
        }
        if let ::core::option::Option::Some(v) = &self.fields {
            params.push(("fields", v.to_google_param_str()));
        }
        let v = self.file_id.to_google_param_str();
        {
            params.push(("fileId", v));
        }
        let v = self.move_to_new_owners_root.to_google_param_str();
        if v != "false" {
            params.push(("moveToNewOwnersRoot", v));
        }
        if let ::core::option::Option::Some(v) = &self.send_notification_email {
            params.push(("sendNotificationEmail", v.to_google_param_str()));
        }
        let v = self.supports_all_drives.to_google_param_str();
        if v != "false" {
            params.push(("supportsAllDrives", v));
        }
        #[allow(deprecated)]
        let v = self.supports_team_drives.to_google_param_str();
        if v != "false" {
            params.push(("supportsTeamDrives", v));
        }
        let v = self.transfer_ownership.to_google_param_str();
        if v != "false" {
            params.push(("transferOwnership", v));
        }
        let v = self.use_domain_admin_access.to_google_param_str();
        if v != "false" {
            params.push(("useDomainAdminAccess", v));
        }
        params.push(("prettyPrint", "false".to_string()));
        params
    }
    fn get_query_param_order(&self) -> ::alloc::vec::Vec<&::core::primitive::str> {
        ::alloc::vec!["fileId"]
    }
    fn get_scopes() -> ::alloc::vec::Vec<impl crate::Scope> {
        let scopes: ::alloc::vec::Vec<crate::Scopes> = ::alloc::vec![
            crate ::Scopes::from_str("https://www.googleapis.com/auth/drive")
            .expect("Invalid scope in generated code"), crate
            ::Scopes::from_str("https://www.googleapis.com/auth/drive.file")
            .expect("Invalid scope in generated code")
        ];
        scopes
    }
    fn get_hub(
        &self,
    ) -> ::core::result::Result<&impl crate::gapirs_common::Hub, ApiCallError> {
        let hub: &H = self._hub.as_ref().ok_or(ApiCallError::NoHub)?;
        ::core::result::Result::Ok(hub)
    }
    fn set_hub<'b>(&mut self, hub: &'b H)
    where
        'b: 'a,
    {
        self._hub = ::core::option::Option::Some(hub);
    }
    fn has_body(&self) -> ::core::primitive::bool {
        self._body.is_some()
    }
    fn take_body(&mut self) -> ::core::option::Option<::alloc::string::String> {
        self._body.take()
    }
    fn has_media_upload(&self) -> ::core::primitive::bool {
        false
    }
    fn take_media_upload(
        &mut self,
    ) -> ::core::option::Option<
        ::gapirs_common::api::MediaUpload<
            dyn crate::gapirs_common::api::MediaUploadStream,
        >,
    > {
        ::core::option::Option::None
    }
    fn has_resumable_media_upload(&self) -> bool {
        false
    }
    fn take_resumable_media_upload(
        &mut self,
    ) -> ::core::option::Option<::gapirs_common::api::ResumableBody> {
        ::core::option::Option::None
    }
    fn take_media_download(
        &mut self,
    ) -> ::core::option::Option<
        ::gapirs_common::api::MediaDownload<
            dyn crate::gapirs_common::api::MediaDownloadStream,
        >,
    > {
        ::core::option::Option::None
    }
    fn get_media_download(
        &mut self,
    ) -> ::core::option::Option<
        &::gapirs_common::api::MediaDownload<
            dyn crate::gapirs_common::api::MediaDownloadStream,
        >,
    > {
        ::core::option::Option::None
    }
    fn is_media_download(&self) -> ::core::primitive::bool {
        false
    }
    fn get_request_method() -> crate::gapirs_common::deps::hyper::Method {
        ::gapirs_common::deps::hyper::Method::POST
    }
}
impl<'a, H: crate::gapirs_common::Hub> crate::gapirs_common::ApiCallBuilder<'a, H>
for DrivePermissionsCreateCallBuilder<'a, H> {
    fn new(hub: &'a H) -> Self {
        Self {
            _hub: ::core::option::Option::Some(::core::option::Option::Some(hub)),
            ..::core::default::Default::default()
        }
    }
}
impl<'a, H: crate::gapirs_common::Hub> DrivePermissionsCreateCallBuilder<'a, H> {
    pub fn with_hub(&mut self, hub: &'a H) -> &mut Self {
        self._hub = ::core::option::Option::Some(::core::option::Option::Some(hub));
        self
    }
    pub fn with_body(
        mut self,
        body: impl ::core::convert::Into<
            ::alloc::boxed::Box<crate::discovery::schemas::permission::PermissionPartial>,
        >,
    ) -> ::core::result::Result<Self, crate::gapirs_common::errors::ApiCallError> {
        self._body = Some(
            Some(::gapirs_common::deps::serde_json::to_string(&body.into())?),
        );
        ::core::result::Result::Ok(self)
    }
}