Visual FoxPro
Visual FoxPro
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 Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loGAuth
LOCAL loRest
LOCAL lnBAutoReconnect
LOCAL loSbPath
LOCAL lcAllFields
LOCAL lcJsonResponse
LOCAL loJson
LOCAL lnWasLastModifiedUserMe
LOCAL lnWidth
LOCAL i
LOCAL lnNumParents
LOCAL lnNumOwners
LOCAL lnNumPermissions
lnSuccess = 0
lnSuccess = 1
* 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.
loGAuth = CreateObject('Chilkat.AuthGoogle')
loGAuth.AccessToken = "GOOGLE-DRIVE-ACCESS-TOKEN"
loRest = CreateObject('Chilkat.Rest')
* 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.
lnBAutoReconnect = 1
lnSuccess = loRest.Connect("www.googleapis.com",443,1,lnBAutoReconnect)
* Provide the authentication credentials (i.e. the access token)
loRest.SetAuthGoogle(loGAuth)
* ------------------------------------------------------------------------------
* 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.
loSbPath = CreateObject('Chilkat.StringBuilder')
loSbPath.Append("/drive/v3/files/")
* Assume we previously obtained the fileId for the file of interest...
loSbPath.Append("0B53Q6OSTWYolbUF6WS1Gei1oalk")
* Indicate that we want ALL possible fields.
* If no fields are indicated, then only the basic fields are returned.
lcAllFields = "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"
loRest.AddQueryParam("fields",lcAllFields)
lcJsonResponse = loRest.FullRequestNoBody("GET",loSbPath.GetAsString())
IF (loRest.LastMethodSuccess <> 1) THEN
? loRest.LastErrorText
RELEASE loGAuth
RELEASE loRest
RELEASE loSbPath
CANCEL
ENDIF
* A successful response will have a status code equal to 200.
IF (loRest.ResponseStatusCode <> 200) THEN
? "response status code = " + STR(loRest.ResponseStatusCode)
? "response status text = " + loRest.ResponseStatusText
? "response header: " + loRest.ResponseHeader
? "response JSON: " + lcJsonResponse
RELEASE loGAuth
RELEASE loRest
RELEASE loSbPath
CANCEL
ENDIF
* ---------------------------------------------------
* 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.
loJson = CreateObject('Chilkat.JsonObject')
loJson.Load(lcJsonResponse)
* Show the full JSON response.
loJson.EmitCompact = 0
? loJson.Emit()
? "-"
* Demonstrate how to get pieces of information:
? "Original Filename: " + loJson.StringOf("originalFilename")
lnWasLastModifiedUserMe = loJson.BoolOf("lastModifyingUser.me")
? "Was Last Modified by Me: " + STR(lnWasLastModifiedUserMe)
* Assuming this is an image file...
lnWidth = loJson.IntOf("imageMediaMetadata.width")
? "Image Width: " + STR(lnWidth)
* Iterate over parents...
lnNumParents = loJson.SizeOfArray("parents")
i = 0
DO WHILE i < lnNumParents
loJson.I = i
? "Parent " + STR(i) + ": " + loJson.StringOf("parents[i]")
i = i + 1
ENDDO
* Iterate over owners...
lnNumOwners = loJson.SizeOfArray("owners")
i = 0
DO WHILE i < lnNumOwners
loJson.I = i
? "Owner " + STR(i) + ": kind=" + loJson.StringOf("owners[i].kind") + " displayName=" + loJson.StringOf("owners[i].displayName")
i = i + 1
ENDDO
* Iterate over permissions...
lnNumPermissions = loJson.SizeOfArray("permissions")
i = 0
DO WHILE i < lnNumPermissions
loJson.I = i
? "Permission " + STR(i) + ": kind=" + loJson.StringOf("permissions[i].kind") + " id=" + loJson.StringOf("permissions[i].id")
i = i + 1
ENDDO
RELEASE loGAuth
RELEASE loRest
RELEASE loSbPath
RELEASE loJson