Net::Google::Drive::Simple::Item - Representation of a Google Drive File
use feature 'say'; use Net::Google::Drive::Simple; # requires a ~/.google-drive.yml file with an access token, # see description from Net::Google::Drive::Simple my $gd = Net::Google::Drive::Simple->new(); my $children = $gd->children( "/" ); # or any other folder /path/location foreach my $item ( @$children ) { # $item is one Net::Google::Drive::Simple::Item object if ( $item->is_folder ) { say "** ", $item->title, " is a folder"; } else { say $item->title, " is a file ", $item->mimeType; eval { # originalFilename not necessary available for all files say $item->originalFilename(), " can be downloaded at ", $item->downloadUrl(); }; } }
Net::Google::Drive::Simple::Item provides a class to manipulate the File methadata from Google Drive API.
https://developers.google.com/drive/api/v3/reference/files
This class should not be used directly, and you should use Net::Google::Drive::Simple as shown in the synopsis.
new( $data )
Constructor, creates one object which hold on hash ref $data to manipulate the metadata for a file. All the keys from the hash below as documented in Google Drive API Doc are mapped using AUTOLOAD so you can use helpers for every first level entry like these:
$data
$file->kind; $file->id; $file->name; $file->mimeType; .... { "kind": "drive#file", "id": string, "name": string, "mimeType": string, "description": string, "starred": boolean, "trashed": boolean, "explicitlyTrashed": boolean, "trashingUser": { "kind": "drive#user", "displayName": string, "photoLink": string, "me": boolean, "permissionId": string, "emailAddress": string }, "trashedTime": datetime, "parents": [ string ], "properties": { (key): string }, "appProperties": { (key): string }, "spaces": [ string ], "version": long, "webContentLink": string, "webViewLink": string, "iconLink": string, "hasThumbnail": boolean, "thumbnailLink": string, "thumbnailVersion": long, "viewedByMe": boolean, "viewedByMeTime": datetime, "createdTime": datetime, "modifiedTime": datetime, "modifiedByMeTime": datetime, "modifiedByMe": boolean, "sharedWithMeTime": datetime, "sharingUser": { "kind": "drive#user", "displayName": string, "photoLink": string, "me": boolean, "permissionId": string, "emailAddress": string }, "owners": [ { "kind": "drive#user", "displayName": string, "photoLink": string, "me": boolean, "permissionId": string, "emailAddress": string } ], "teamDriveId": string, "driveId": string, "lastModifyingUser": { "kind": "drive#user", "displayName": string, "photoLink": string, "me": boolean, "permissionId": string, "emailAddress": string }, "shared": boolean, "ownedByMe": boolean, "capabilities": { "canAddChildren": boolean, "canChangeCopyRequiresWriterPermission": boolean, "canChangeViewersCanCopyContent": boolean, "canComment": boolean, "canCopy": boolean, "canDelete": boolean, "canDeleteChildren": boolean, "canDownload": boolean, "canEdit": boolean, "canListChildren": boolean, "canModifyContent": boolean, "canMoveChildrenOutOfTeamDrive": boolean, "canMoveChildrenOutOfDrive": boolean, "canMoveChildrenWithinTeamDrive": boolean, "canMoveChildrenWithinDrive": boolean, "canMoveItemIntoTeamDrive": boolean, "canMoveItemOutOfTeamDrive": boolean, "canMoveItemOutOfDrive": boolean, "canMoveItemWithinTeamDrive": boolean, "canMoveItemWithinDrive": boolean, "canMoveTeamDriveItem": boolean, "canReadRevisions": boolean, "canReadTeamDrive": boolean, "canReadDrive": boolean, "canRemoveChildren": boolean, "canRename": boolean, "canShare": boolean, "canTrash": boolean, "canTrashChildren": boolean, "canUntrash": boolean }, "viewersCanCopyContent": boolean, "copyRequiresWriterPermission": boolean, "writersCanShare": boolean, "permissions": [ permissions Resource ], "permissionIds": [ string ], "hasAugmentedPermissions": boolean, "folderColorRgb": string, "originalFilename": string, "fullFileExtension": string, "fileExtension": string, "md5Checksum": string, "size": long, "quotaBytesUsed": long, "headRevisionId": string, "contentHints": { "thumbnail": { "image": bytes, "mimeType": string }, "indexableText": string }, "imageMediaMetadata": { "width": integer, "height": integer, "rotation": integer, "location": { "latitude": double, "longitude": double, "altitude": double }, "time": string, "cameraMake": string, "cameraModel": string, "exposureTime": float, "aperture": float, "flashUsed": boolean, "focalLength": float, "isoSpeed": integer, "meteringMode": string, "sensor": string, "exposureMode": string, "colorSpace": string, "whiteBalance": string, "exposureBias": float, "maxApertureValue": float, "subjectDistance": integer, "lens": string }, "videoMediaMetadata": { "width": integer, "height": integer, "durationMillis": long }, "isAppAuthorized": boolean, "exportLinks": { (key): string } }
$file->is_folder
Return a boolean '1' or '0' to indicate if the current file is one folder or not. (this is using the mimeType value).
$iterm->is_folder
$file->is_file
Return a boolean '1' or '0' to indicate if the current file is a regular file (not a folder). (this is using the mimeType value).
$iterm->is_file or ! $iterm->is_folder
$file->kind
Identifies what kind of resource this is. Value: the fixed string "drive#file".
$file->id
The ID of the file.
$file->name
The name of the file. This is not necessarily unique within a folder. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the name is constant.
$file->mimeType
The MIME type of the file. Google Drive will attempt to automatically detect an appropriate value from uploaded content if no value is provided. The value cannot be changed unless a new revision is uploaded.
If a file is created with a Google Doc MIME type, the uploaded content will be imported if possible. The supported import formats are published in the About resource.
$file->description
A short description of the file.
$file->starred
boolean - Whether the user has starred the file.
$file->trashed
boolean - Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file, and other users cannot see files in the owner's trash.
$file->explicitlyTrashed
boolean - Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
$file->version
A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the user.
$file->createdTime
The time at which the file was created (RFC 3339 date-time).
$file->modifiedTime
The last time the file was modified by anyone (RFC 3339 date-time). Note that setting modifiedTime will also update modifiedByMeTime for the user.
$file->size
The size of the file's content in bytes. This is only applicable to files with binary content in Google Drive.
$file->capabilities
Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
Please refer to the official documentation
for more informations about the possible fields.
The implemented AUTOLOAD function is case insensitive. The following functions $iterm-id>, $iterm-ID> and $iterm-Id> for example are all equivalent and return the 'id' for the file.
$iterm-
When trying to access to an unknown field, the code will die/throw an exception.
eval { $item->DoNotExist } and $@ =~ m{"Cannot find any attribute named 'DoNotExist'}
2019, Nicolas R. <cpan@atoomic.org>
To install Net::Google::Drive::Simple, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Net::Google::Drive::Simple
CPAN shell
perl -MCPAN -e shell install Net::Google::Drive::Simple
For more information on module installation, please visit the detailed CPAN module installation guide.