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
(DataFlex) REST Upload Bandwidth ThrottleDemonstrates how to use upload bandwidth throttling with the REST API. This example will upload a file to Drobox using a file stream, with a limit on the bandwidth that can be used for the transfer.
Use ChilkatAx-win32.pkg Procedure Test Variant vSocket Handle hoSocket Integer iMaxWaitMs Boolean iSuccess Handle hoRest Handle hoJson Variant vFileStream Handle hoFileStream String sResponseStr Handle hoJsonResp Integer iSize String sRev String sClientModified Handle hoCkdt Boolean iBLocalTime Variant vDt Handle hoDt String sTemp1 Integer iTemp1 Integer iTemp2 Integer iTemp3 Integer iTemp4 Integer iTemp5 Boolean bTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // A Dropbox access token should have been previously obtained. // Dropbox access tokens do not expire. // See Dropbox Access Token. // To use bandwidth throttling, the connection should be made using the socket API. // This provides numerous properties to customize the connection, such as // BandwidthThrottleDown, BandwidthThrottleUp, ClientIpAddress, ClintPort, Http Proxy, // KeepAlive, PreferIpv6, RequireSslCertVerify, SoRcvBuf, SoSndBuf, SoReuseAddr, // SOCKS proxy, TcpNoSDelay, TlsPinSet, TlsCipherSuite, SslAllowedCiphers, etc. Get Create (RefClass(cComChilkatSocket)) To hoSocket If (Not(IsComObjectCreated(hoSocket))) Begin Send CreateComObject of hoSocket End Move 5000 To iMaxWaitMs Get ComConnect Of hoSocket "content.dropboxapi.com" 443 True iMaxWaitMs To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoSocket To sTemp1 Showln sTemp1 Get ComConnectFailReason Of hoSocket To iTemp1 Showln "Connect Fail Reason: " iTemp1 Procedure_Return End // Set the upload bandwidth throttle rate to 50000 bytes per second. Set ComBandwidthThrottleUp Of hoSocket To 50000 Get Create (RefClass(cComChilkatRest)) To hoRest If (Not(IsComObjectCreated(hoRest))) Begin Send CreateComObject of hoRest End // Tell the REST object to use the connected socket. Get pvComObject of hoSocket to vSocket Get ComUseConnection Of hoRest vSocket True To iSuccess // The remainder of this example is identical to the example at: // Dropbox File Stream Upload. // Add request headers. Get ComAddHeader Of hoRest "Content-Type" "application/octet-stream" To iSuccess Get ComAddHeader Of hoRest "Authorization" "Bearer DROPBOX_ACCESS_TOKEN" To iSuccess // The upload "parameters" contained in JSON passed in an HTTP request header. // This is the JSON to be added in this example: // { // "path": "/Homework/lit/hamlet.xml", // "mode": "add", // "autorename": true, // "mute": false // } Get Create (RefClass(cComChilkatJsonObject)) To hoJson If (Not(IsComObjectCreated(hoJson))) Begin Send CreateComObject of hoJson End Get ComAppendString Of hoJson "path" "/Homework/lit/hamlet.xml" To iSuccess Get ComAppendString Of hoJson "mode" "add" To iSuccess Get ComAppendBool Of hoJson "autorename" True To iSuccess Get ComAppendBool Of hoJson "mute" False To iSuccess Get ComEmit Of hoJson To sTemp1 Get ComAddHeader Of hoRest "Dropbox-API-Arg" sTemp1 To iSuccess // Almost ready to go... // Let's setup a file stream to point to a file. Get Create (RefClass(cComChilkatStream)) To hoFileStream If (Not(IsComObjectCreated(hoFileStream))) Begin Send CreateComObject of hoFileStream End Set ComSourceFile Of hoFileStream To "qa_data/xml/hamlet.xml" // Do the upload. The URL is https://content.dropboxapi.com/2/files/upload. // We already connected to content.dropboxapi.com using TLS (i.e. HTTPS), // so now we only need to specify the path "/2/files/upload". // Note: The file is streamed directly from disk. (The entire // file will not be loaded into memory.) Get pvComObject of hoFileStream to vFileStream Get ComFullRequestStream Of hoRest "POST" "/2/files/upload" vFileStream To sResponseStr Get ComLastMethodSuccess Of hoRest To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoRest To sTemp1 Showln sTemp1 Procedure_Return End // When successful, Dropbox responds with a 200 response code. Get ComResponseStatusCode Of hoRest To iTemp1 If (iTemp1 <> 200) Begin // Examine the request/response to see what happened. 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 body (if any): " sResponseStr Showln "---" Get ComLastRequestStartLine Of hoRest To sTemp1 Showln "LastRequestStartLine: " sTemp1 Get ComLastRequestHeader Of hoRest To sTemp1 Showln "LastRequestHeader: " sTemp1 Procedure_Return End // The response is JSON. Get Create (RefClass(cComChilkatJsonObject)) To hoJsonResp If (Not(IsComObjectCreated(hoJsonResp))) Begin Send CreateComObject of hoJsonResp End Set ComEmitCompact Of hoJsonResp To False Get ComLoad Of hoJsonResp sResponseStr To iSuccess // Show the JSON response. Get ComEmit Of hoJsonResp To sTemp1 Showln sTemp1 // Returns JSON that looks like this: // { // "name": "hamlet.xml", // "path_lower": "/homework/lit/hamlet.xml", // "path_display": "/Homework/lit/hamlet.xml", // "id": "id:74FkdeNuyKAAAAAAAAAAAQ", // "client_modified": "2016-06-02T23:19:00Z", // "server_modified": "2016-06-02T23:19:00Z", // "rev": "9482db15f", // "size": 279658 // } // Sample code to get data from the JSON response: Get ComIntOf Of hoJsonResp "size" To iSize Showln "size = " iSize Get ComStringOf Of hoJsonResp "rev" To sRev Showln "rev = " sRev Get ComStringOf Of hoJsonResp "client_modified" To sClientModified Get Create (RefClass(cComCkDateTime)) To hoCkdt If (Not(IsComObjectCreated(hoCkdt))) Begin Send CreateComObject of hoCkdt End Get ComSetFromTimestamp Of hoCkdt sClientModified To iSuccess Move True To iBLocalTime Get ComGetDtObj Of hoCkdt iBLocalTime To vDt If (IsComObject(vDt)) Begin Get Create (RefClass(cComChilkatDtObj)) To hoDt Set pvComObject Of hoDt To vDt End Get ComDay Of hoDt To iTemp1 Get ComMonth Of hoDt To iTemp2 Get ComYear Of hoDt To iTemp3 Get ComHour Of hoDt To iTemp4 Get ComMinute Of hoDt To iTemp5 Showln iTemp1 "/" iTemp2 "/" iTemp3 " " iTemp4 ":" iTemp5 Send Destroy of hoDt End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.