DataFlex
DataFlex
Get File Metadata
See more Google Drive Examples
Gets a file's metadata or content by ID.See Google Drive Files get for additional details.
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Variant vGAuth
Handle hoGAuth
Handle hoRest
Boolean iBAutoReconnect
Handle hoSbPath
String sAllFields
String sJsonResponse
Handle hoJson
Boolean iWasLastModifiedUserMe
Integer iWidth
Integer i
Integer iNumParents
Integer iNumOwners
Integer iNumPermissions
String sTemp1
String sTemp2
Integer iTemp1
Boolean bTemp1
Move False To iSuccess
Move True To iSuccess
// It requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// This example uses a previously obtained access token having permission for the
// Google Drive scope.
Get Create (RefClass(cComChilkatAuthGoogle)) To hoGAuth
If (Not(IsComObjectCreated(hoGAuth))) Begin
Send CreateComObject of hoGAuth
End
Set ComAccessToken Of hoGAuth To "GOOGLE-DRIVE-ACCESS-TOKEN"
Get Create (RefClass(cComChilkatRest)) To hoRest
If (Not(IsComObjectCreated(hoRest))) Begin
Send CreateComObject of hoRest
End
// Connect using TLS.
// A single REST object, once connected, can be used for many Google Drive REST API calls.
// The auto-reconnect indicates that if the already-established HTTPS connection is closed,
// then it will be automatically re-established as needed.
Move True To iBAutoReconnect
Get ComConnect Of hoRest "www.googleapis.com" 443 True iBAutoReconnect To iSuccess
// Provide the authentication credentials (i.e. the access token)
Get pvComObject of hoGAuth to vGAuth
Get ComSetAuthGoogle Of hoRest vGAuth To iSuccess
// ------------------------------------------------------------------------------
// We need to send a GET request like this:
// GET https://www.googleapis.com/drive/v3/files/fileId
// The fileId is part of the path.
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbPath
If (Not(IsComObjectCreated(hoSbPath))) Begin
Send CreateComObject of hoSbPath
End
Get ComAppend Of hoSbPath "/drive/v3/files/" To iSuccess
// Assume we previously obtained the fileId for the file of interest...
Get ComAppend Of hoSbPath "0B53Q6OSTWYolbUF6WS1Gei1oalk" To iSuccess
// Indicate that we want ALL possible fields.
// If no fields are indicated, then only the basic fields are returned.
Move "appProperties,capabilities,contentHints,createdTime,description,explicitlyTrashed,fileExtension,folderColorRgb,fullFileExtension,headRevisionId,iconLink,id,imageMediaMetadata,isAppAuthorized,kind,lastModifyingUser,md5Checksum,mimeType,modifiedByMeTime,modifiedTime,name,originalFilename,ownedByMe,owners,parents,permissions,properties,quotaBytesUsed,shared,sharedWithMeTime,sharingUser,size,spaces,starred,thumbnailLink,trashed,version,videoMediaMetadata,viewedByMe,viewedByMeTime,viewersCanCopyContent,webContentLink,webViewLink,writersCanShare" To sAllFields
Get ComAddQueryParam Of hoRest "fields" sAllFields To iSuccess
Get ComGetAsString Of hoSbPath To sTemp1
Get ComFullRequestNoBody Of hoRest "GET" sTemp1 To sJsonResponse
Get ComLastMethodSuccess Of hoRest To bTemp1
If (bTemp1 <> True) Begin
Get ComLastErrorText Of hoRest To sTemp1
Showln sTemp1
Procedure_Return
End
// A successful response will have a status code equal to 200.
Get ComResponseStatusCode Of hoRest To iTemp1
If (iTemp1 <> 200) Begin
Get ComResponseStatusCode Of hoRest To iTemp1
Showln "response status code = " iTemp1
Get ComResponseStatusText Of hoRest To sTemp1
Showln "response status text = " sTemp1
Get ComResponseHeader Of hoRest To sTemp1
Showln "response header: " sTemp1
Showln "response JSON: " sJsonResponse
Procedure_Return
End
// ---------------------------------------------------
// Sample code for parsing this JSON is shown below...
// ---------------------------------------------------
// A successful response looks like this:
// {
// "kind": "drive#file",
// "id": "0B53Q6OSTWYolbUF6WS1Gei1oalk",
// "name": "penguins.jpg",
// "mimeType": "image/jpeg",
// "starred": false,
// "trashed": false,
// "explicitlyTrashed": false,
// "parents": [
// "0B53Q6OSTWYola296ODZUSm5GYU0"
// ],
// "spaces": [
// "drive"
// ],
// "version": "672",
// "webContentLink": "https://docs.google.com/a/chilkatcloud.com/uc?id=0B53Q6OSTWYolbUF6WS1Gei1oalk&export=download",
// "webViewLink": "https://drive.google.com/a/chilkatcloud.com/file/d/0B53Q6OSTWYolbUF6WS1Gei1oalk/view?usp=drivesdk",
// "iconLink": "https://ssl.gstatic.com/docs/doclist/images/icon_11_image_list.png",
// "thumbnailLink": "https://lh5.googleusercontent.com/uIV1dJdc8vsAQzaaIInpc9AV55AcdHhpM7fQeI2RN2qbCSnhjK9IDdNQAOTtkvjS9ZObqw=s220",
// "viewedByMe": true,
// "viewedByMeTime": "2016-10-08T12:38:02.258Z",
// "createdTime": "2016-10-08T12:38:02.258Z",
// "modifiedTime": "2016-10-08T12:38:02.258Z",
// "modifiedByMeTime": "2016-10-08T12:38:02.258Z",
// "owners": [
// {
// "kind": "drive#user",
// "displayName": "Matthew Smith",
// "me": true,
// "permissionId": "08366696655122259092",
// "emailAddress": "support@chilkatcloud.com"
// }
// ],
// "lastModifyingUser": {
// "kind": "drive#user",
// "displayName": "Matthew Smith",
// "me": true,
// "permissionId": "08366696655122259092",
// "emailAddress": "support@chilkatcloud.com"
// },
// "shared": false,
// "ownedByMe": true,
// "capabilities": {
// "canEdit": true,
// "canComment": true,
// "canShare": true,
// "canCopy": true,
// "canReadRevisions": true
// },
// "viewersCanCopyContent": true,
// "writersCanShare": true,
// "permissions": [
// {
// "kind": "drive#permission",
// "id": "08366696655122259092",
// "type": "user",
// "emailAddress": "support@chilkatcloud.com",
// "role": "owner",
// "displayName": "Matthew Smith"
// }
// ],
// "originalFilename": "penguins.jpg",
// "fullFileExtension": "jpg",
// "fileExtension": "jpg",
// "md5Checksum": "9d377b10ce778c4938b3c7e2c63a229a",
// "size": "777835",
// "quotaBytesUsed": "777835",
// "headRevisionId": "0B53Q6OSTWYolUUlHVFhHdFlXQ0R1aHZuT0tORTVzc2h5NnZjPQ",
// "imageMediaMetadata": {
// "width": 1024,
// "height": 768,
// "rotation": 0,
// "time": "2009:03:12 13:48:35"
// },
// "isAppAuthorized": false
// }
// Iterate over each file in the response and show the name, id, and mimeType.
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Get ComLoad Of hoJson sJsonResponse To iSuccess
// Show the full JSON response.
Set ComEmitCompact Of hoJson To False
Get ComEmit Of hoJson To sTemp1
Showln sTemp1
Showln "-"
// Demonstrate how to get pieces of information:
Get ComStringOf Of hoJson "originalFilename" To sTemp1
Showln "Original Filename: " sTemp1
Get ComBoolOf Of hoJson "lastModifyingUser.me" To iWasLastModifiedUserMe
Showln "Was Last Modified by Me: " iWasLastModifiedUserMe
// Assuming this is an image file...
Get ComIntOf Of hoJson "imageMediaMetadata.width" To iWidth
Showln "Image Width: " iWidth
// Iterate over parents...
Get ComSizeOfArray Of hoJson "parents" To iNumParents
Move 0 To i
While (i < iNumParents)
Set ComI Of hoJson To i
Get ComStringOf Of hoJson "parents[i]" To sTemp1
Showln "Parent " i ": " sTemp1
Move (i + 1) To i
Loop
// Iterate over owners...
Get ComSizeOfArray Of hoJson "owners" To iNumOwners
Move 0 To i
While (i < iNumOwners)
Set ComI Of hoJson To i
Get ComStringOf Of hoJson "owners[i].kind" To sTemp1
Get ComStringOf Of hoJson "owners[i].displayName" To sTemp2
Showln "Owner " i ": kind=" sTemp1 " displayName=" sTemp2
Move (i + 1) To i
Loop
// Iterate over permissions...
Get ComSizeOfArray Of hoJson "permissions" To iNumPermissions
Move 0 To i
While (i < iNumPermissions)
Set ComI Of hoJson To i
Get ComStringOf Of hoJson "permissions[i].kind" To sTemp1
Get ComStringOf Of hoJson "permissions[i].id" To sTemp2
Showln "Permission " i ": kind=" sTemp1 " id=" sTemp2
Move (i + 1) To i
Loop
End_Procedure