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) Upload Media for Google PhotosDemonstrates how to upload a media file (such as a JPG image) that will be placed in a Google Photos album. Uploading is a two-step process:
This example shows step 1.
IncludeFile "CkBinData.pb" IncludeFile "CkHttp.pb" IncludeFile "CkJsonObject.pb" IncludeFile "CkHttpResponse.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. ; Get the previously obtained access token. ; See Get Google Photos Access Token. jsonToken.i = CkJsonObject::ckCreate() If jsonToken.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/googlePhotos.json") If success = 0 Debug CkJsonObject::ckLastErrorText(jsonToken) CkJsonObject::ckDispose(jsonToken) ProcedureReturn EndIf http.i = CkHttp::ckCreate() If http.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkHttp::setCkAuthToken(http, CkJsonObject::ckStringOf(jsonToken,"access_token")) ; This is the HTTPS POST we'll be sending: ; POST https://photoslibrary.googleapis.com/v1/uploads ; Authorization: Bearer OAUTH2_TOKEN ; Content-type: application/octet-stream ; X-Goog-Upload-File-Name: FILENAME ; X-Goog-Upload-Protocol: raw CkHttp::ckSetRequestHeader(http,"X-Goog-Upload-File-Name","penguins.jpg") CkHttp::ckSetRequestHeader(http,"X-Goog-Upload-Protocol","raw") ; Assuming the media isn't super large, we'll just read it into memory and send. ; (Another example exists for streaming a large media file directly from the filesystem.) ; Load the media file into memory. bdMedia.i = CkBinData::ckCreate() If bdMedia.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkBinData::ckLoadFile(bdMedia,"qa_data/jpg/penguins.jpg") url.s = "https://photoslibrary.googleapis.com/v1/uploads" resp.i = CkHttp::ckPBinaryBd(http,"POST",url,bdMedia,"application/octet-stream",0,0) If CkHttp::ckLastMethodSuccess(http) = 0 Debug CkHttp::ckLastErrorText(http) CkJsonObject::ckDispose(jsonToken) CkHttp::ckDispose(http) CkBinData::ckDispose(bdMedia) ProcedureReturn EndIf ; Examine the response status code. Success is indicated by a status code of 200. Debug "response status code: " + Str(CkHttpResponse::ckStatusCode(resp)) ; Show the response body. If CkHttpResponse::ckStatusCode(resp) = 200 ; Success. Debug "Upload token: " + CkHttpResponse::ckBodyStr(resp) Else Debug "Error:" Debug CkHttpResponse::ckBodyStr(resp) EndIf CkHttpResponse::ckDispose(resp) ; Clear headers such as X-Goog-Upload-File-Name for subsequent HTTP requests sent on this object.. CkHttp::ckClearHeaders(http) CkJsonObject::ckDispose(jsonToken) CkHttp::ckDispose(http) CkBinData::ckDispose(bdMedia) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.