NAME
Net::Google::Drive - simple Google drive API module
SYNOPSIS
This module use to upload, download, share file on Google drive use Net::Google::Drive;
#Create disk object. You need send in param 'access_token', 'refresh_token', 'client_id' and 'client_secret'.
#Values of 'client_id' and 'client_secret' uses to create Net::Google::OAuth object so that update value of 'access_token'.
my
$disk
= Net::Google::Drive->new(
-client_id
=>
$client_id
,
-client_secret
=>
$client_secret
,
-access_token
=>
$access_token
,
-refresh_token
=>
$refresh_token
,
);
# Search file by name
my
$file_name
=
'upload.doc'
;
my
$files
=
$disk
->searchFileByName(
-filename
=>
$file_name
) or croak
"File '$file_name' not found"
;
my
$file_id
=
$files
->[0]->{id};
"File id: $file_id\n"
;
#Download file
my
$dest_file
=
'/home/upload.doc'
;
$disk
->downloadFile(
-file_id
=>
$file_id
,
-dest_file
=>
$dest_file
,
);
#Upload file
my
$source_file
=
'/home/upload.doc'
;
my
$res
=
$disk
->uploadFile(
-source_file
=>
$source_file
);
"File: $source_file uploaded. File id: $res->{id}\n"
;
METHODS
new(%opt)
Create Net::Google::Disk object
%opt
:
-client_id
=> Your app client id (Get from google
when
register your app)
-client_secret
=> Your app client secret (Get from google
when
register your app)
-access_token
=> Access token value (Get from L<Net::Google::OAuth>)
-refresh_token
=> Refresh token value (Get from L<Net::Google::OAuth>)
searchFileByName(%opt)
Search file on google disk by name. Return arrayref to info with found files. If files not found - return empty arrayref
%opt
:
-filename
=> Name of file to find
Return:
[
[0] {
id
"1f13sLfo6UEyUuFpn-NWPnY"
,
kind
"drive#file"
,
mimeType
"application/x-perl"
,
name
"drive.t"
}
]
searchFileByNameContains(%opt)
Search files on google drive by name contains value in param '-filename' Param and return value same as in method searchFileByName
downloadFile(%opt)
Download file from google dist to -dest_file on local system. Return 1 if success, die in otherwise
%opt
:
-dest_file
=> Name of file on disk in which you will download file from google disk
-file_id
=> Id of file on google disk
deleteFile(%opt)
Delete file from google disk. Return 1 if success, die in otherwise
%opt
:
-file_id
=> Id of file on google disk
uploadFile(%opt)
Upload file from local system to google drive. Return file_info hashref if success, die in otherwise
%opt
:
-source_file
=> File on
local
system
-parents
=> Optional arrayref of parent ids
Return:
{
id
"1LVAr2PpqX9m314JyZ6YJ4v_KIzG0Gey2"
,
kind
"drive#file"
,
mimeType
"application/octet-stream"
,
name
"gogle_upload_file"
}
setFilePermission(%opt)
Set permissions for file on google drive. Return permission hashref, die in otherwise
%opt
:
-file_id
=> Id of file on google disk
-type
=> The type of the grantee. Valid
values
are: (user, group, domain, anyone)
-role
=> The role granted by this permission. Valid
values
are: (owner, organizer, fileOrganizer, writer, commenter, reader)
Return:
{
allowFileDiscovery JSON::PP::Boolean {
Parents Types::Serialiser::BooleanBase
public methods (0)
private methods (0)
internals: 0
},
id
"anyoneWithLink"
,
kind
"drive#permission"
,
role
"reader"
,
type
"anyone"
}
getFileMetadata(%opt)
Get metadata of file. Return hashref with metadata if success, die in otherwise
%opt
:
-file_id
=> Id of file on google disk
Return:
{ alternateLink
"https://drive.google.com/file/d/10Z5YDCHn3gnj0S4_Lf0poc2Lm5so0Sut/view?usp=drivesdk"
,
appDataContents JSON::PP::Boolean {
Parents Types::Serialiser::BooleanBase
public methods (0)
private methods (0)
internals: 0
},
capabilities {
canCopy JSON::PP::Boolean {
Parents Types::Serialiser::BooleanBase
public methods (0)
private methods (0)
internals: 1
},
canEdit var{capabilities}{canCopy}
},
copyable var{capabilities}{canCopy},
copyRequiresWriterPermission var{appDataContents},
createdDate
"2018-10-04T12:05:15.896Z"
,
gf/1538654400000/10526805100525201667/10526805100525201667/10Z5YDCHn3gnj0S4_Lf0poc2Lm5so0Sut?e=download
&gd
=true",
editable var{capabilities}{canCopy},
etag
""
omwGuTP8OdxhZkubyp-j43cFdJQ/MTUzODY1NDcxNTg5Ng
""
,
explicitlyTrashed var{appDataContents},
fileExtension
""
,
fileSize 1000000,
headRevisionId
"0B4HgPHxdPy22UmZXSFVRTkRLbXhFakdzZjFSUGkrNWZIVFN3PQ"
,
id
"10Z5YDCHn3gnj0S4_Lf0poc2Lm5so0Sut"
,
kind
"drive#file"
,
labels {
hidden var{appDataContents},
restricted var{appDataContents},
starred var{appDataContents},
trashed var{appDataContents},
viewed var{appDataContents}
},
lastModifyingUser {
displayName
"Ларри Уолл"
,
emailAddress
"perlgogledrivemodule@gmail.com"
,
isAuthenticatedUser var{capabilities}{canCopy},
kind
"drive#user"
,
permissionId 10526805100525201667
},
lastModifyingUserName
"Ларри Уолл"
,
markedViewedByMeDate
"1970-01-01T00:00:00.000Z"
,
md5Checksum
"ded2a2983b3e1743152d8224549510e1"
,
mimeType
"application/octet-stream"
,
modifiedByMeDate
"2018-10-04T12:05:15.896Z"
,
modifiedDate
"2018-10-04T12:05:15.896Z"
,
originalFilename
"gogle_upload_file"
,
ownerNames [
[0]
"Ларри Уолл"
],
owners [
[0] {
displayName
"Ларри Уолл"
,
emailAddress
"perlgogledrivemodule@gmail.com"
,
isAuthenticatedUser var{capabilities}{canCopy},
kind
"drive#user"
,
permissionId 10526805100525201667
}
],
parents [
[0] {
id
"0AIHgPHxdPy22Uk9PVA"
,
isRoot var{capabilities}{canCopy},
kind
"drive#parentReference"
,
}
],
quotaBytesUsed 1000000,
shared var{appDataContents},
spaces [
[0]
"drive"
],
title
"gogle_upload_file"
,
userPermission {
etag
""
omwGuTP8OdxhZkubyp-j43cFdJQ/N52l-iUAo-dARaTch8nQXOzl348
""
,
id
"me"
,
kind
"drive#permission"
,
role
"owner"
,
selfLink
"https://www.googleapis.com/drive/v2/files/10Z5YDCHn3gnj0S4_Lf0poc2Lm5so0Sut/permissions/me"
,
type
"user"
},
version 2,
writersCanShare var{capabilities}{canCopy}
}
shareFile(%opt)
Share file for download. Return download link if success, die in otherwise
%opt
:
-file_id
=> Id of file on google disk
DEPENDENCE
Net::Google::OAuth, LWP::UserAgent, JSON::XS, URI, HTTP::Request, File::Basename
AUTHORS
Pavel Andryushin <vrag867@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2018 by Pavel Andryushin.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.