Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Get File MetadataGets a file's metadata or content by ID. See Google Drive Files get for additional details.
IncludeFile "CkStringBuilder.pb" IncludeFile "CkAuthGoogle.pb" IncludeFile "CkRest.pb" IncludeFile "CkJsonObject.pb" Procedure ChilkatExample() success.i = 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. gAuth.i = CkAuthGoogle::ckCreate() If gAuth.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkAuthGoogle::setCkAccessToken(gAuth, "GOOGLE-DRIVE-ACCESS-TOKEN") rest.i = CkRest::ckCreate() If rest.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; 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. bAutoReconnect.i = 1 success = CkRest::ckConnect(rest,"www.googleapis.com",443,1,bAutoReconnect) ; Provide the authentication credentials (i.e. the access token) CkRest::ckSetAuthGoogle(rest,gAuth) ; ------------------------------------------------------------------------------ ; 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. sbPath.i = CkStringBuilder::ckCreate() If sbPath.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkStringBuilder::ckAppend(sbPath,"/drive/v3/files/") ; Assume we previously obtained the fileId for the file of interest... CkStringBuilder::ckAppend(sbPath,"0B53Q6OSTWYolbUF6WS1Gei1oalk") ; Indicate that we want ALL possible fields. ; If no fields are indicated, then only the basic fields are returned. allFields.s = "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" CkRest::ckAddQueryParam(rest,"fields",allFields) jsonResponse.s = CkRest::ckFullRequestNoBody(rest,"GET",CkStringBuilder::ckGetAsString(sbPath)) If CkRest::ckLastMethodSuccess(rest) <> 1 Debug CkRest::ckLastErrorText(rest) CkAuthGoogle::ckDispose(gAuth) CkRest::ckDispose(rest) CkStringBuilder::ckDispose(sbPath) ProcedureReturn EndIf ; A successful response will have a status code equal to 200. If CkRest::ckResponseStatusCode(rest) <> 200 Debug "response status code = " + Str(CkRest::ckResponseStatusCode(rest)) Debug "response status text = " + CkRest::ckResponseStatusText(rest) Debug "response header: " + CkRest::ckResponseHeader(rest) Debug "response JSON: " + jsonResponse CkAuthGoogle::ckDispose(gAuth) CkRest::ckDispose(rest) CkStringBuilder::ckDispose(sbPath) ProcedureReturn 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. json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckLoad(json,jsonResponse) ; Show the full JSON response. CkJsonObject::setCkEmitCompact(json, 0) Debug CkJsonObject::ckEmit(json) Debug "-" ; Demonstrate how to get pieces of information: Debug "Original Filename: " + CkJsonObject::ckStringOf(json,"originalFilename") wasLastModifiedUserMe.i = CkJsonObject::ckBoolOf(json,"lastModifyingUser.me") Debug "Was Last Modified by Me: " + Str(wasLastModifiedUserMe) ; Assuming this is an image file... width.i = CkJsonObject::ckIntOf(json,"imageMediaMetadata.width") Debug "Image Width: " + Str(width) ; Iterate over parents... i.i numParents.i = CkJsonObject::ckSizeOfArray(json,"parents") i = 0 While i < numParents CkJsonObject::setCkI(json, i) Debug "Parent " + Str(i) + ": " + CkJsonObject::ckStringOf(json,"parents[i]") i = i + 1 Wend ; Iterate over owners... numOwners.i = CkJsonObject::ckSizeOfArray(json,"owners") i = 0 While i < numOwners CkJsonObject::setCkI(json, i) Debug "Owner " + Str(i) + ": kind=" + CkJsonObject::ckStringOf(json,"owners[i].kind") + " displayName=" + CkJsonObject::ckStringOf(json,"owners[i].displayName") i = i + 1 Wend ; Iterate over permissions... numPermissions.i = CkJsonObject::ckSizeOfArray(json,"permissions") i = 0 While i < numPermissions CkJsonObject::setCkI(json, i) Debug "Permission " + Str(i) + ": kind=" + CkJsonObject::ckStringOf(json,"permissions[i].kind") + " id=" + CkJsonObject::ckStringOf(json,"permissions[i].id") i = i + 1 Wend CkAuthGoogle::ckDispose(gAuth) CkRest::ckDispose(rest) CkStringBuilder::ckDispose(sbPath) CkJsonObject::ckDispose(json) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.