Google-RestApi
view release on metacpan or search on metacpan
lib/Google/RestApi/DriveApi3/Permission.pm view on Meta::CPAN
sub _uri_base { 'permissions' }
sub _parent_accessor { 'file' }
sub create {
my $self = shift;
state $check = signature(
bless => !!0,
named => [
role => Str,
type => Str,
email_address => Str, { optional => 1 },
domain => Str, { optional => 1 },
send_notification => Bool, { default => 0 },
email_message => Str, { optional => 1 },
transfer_ownership => Bool, { default => 0 },
_extra_ => slurpy HashRef,
],
);
my $p = named_extra($check->(@_));
my %params;
$params{sendNotificationEmail} = delete $p->{send_notification} ? 'true' : 'false';
$params{emailMessage} = delete $p->{email_message} if defined $p->{email_message};
$params{transferOwnership} = delete $p->{transfer_ownership} ? 'true' : 'false';
my %content = (
role => delete $p->{role},
type => delete $p->{type},
);
$content{emailAddress} = delete $p->{email_address} if defined $p->{email_address};
$content{domain} = delete $p->{domain} if defined $p->{domain};
DEBUG(sprintf("Creating permission on file '%s'", $self->file()->file_id()));
my $result = $self->file()->api(
uri => 'permissions',
method => 'post',
params => \%params,
content => \%content,
);
return ref($self)->new(file => $self->file(), id => $result->{id});
}
sub get {
my $self = shift;
state $check = signature(
bless => !!0,
named => [
fields => Str, { optional => 1 },
],
);
my $p = $check->(@_);
$self->require_id('get');
my %params;
$params{fields} = $p->{fields} if defined $p->{fields};
return $self->api(params => \%params);
}
sub update {
my $self = shift;
state $check = signature(
bless => !!0,
named => [
role => Str,
transfer_ownership => Bool, { default => 0 },
_extra_ => slurpy HashRef,
],
);
my $p = named_extra($check->(@_));
$self->require_id('update');
my %params;
$params{transferOwnership} = delete $p->{transfer_ownership} ? 'true' : 'false';
my %content = (
role => delete $p->{role},
);
DEBUG(sprintf("Updating permission '%s' on file '%s'", $self->{id}, $self->file()->file_id()));
return $self->api(
method => 'patch',
params => \%params,
content => \%content,
);
}
sub delete {
my $self = shift;
$self->require_id('delete');
DEBUG(sprintf("Deleting permission '%s' from file '%s'", $self->{id}, $self->file()->file_id()));
return $self->api(method => 'delete');
}
sub permission_id { shift->{id}; }
sub file { shift->{file}; }
1;
__END__
=head1 NAME
Google::RestApi::DriveApi3::Permission - Permission object for Google Drive files.
=head1 SYNOPSIS
# Get a permission object
my $perm = $file->permission(id => 'permission_id');
# Get permission details
my $details = $perm->get();
# Create a new permission
my $new_perm = $file->permission()->create(
role => 'reader',
type => 'user',
( run in 1.964 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )