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) Streaming Decrypt HTTP ResponseIf the an encrypted file was previously uploaded, this example demonstrates how to download and decrypt in a streaming way.
IncludeFile "CkTask.pb" IncludeFile "CkRest.pb" IncludeFile "CkStream.pb" IncludeFile "CkCrypt2.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. rest.i = CkRest::ckCreate() If rest.i = 0 Debug "Failed to create object." ProcedureReturn EndIf bTls.i = 1 port.i = 443 bAutoReconnect.i = 1 success.i = CkRest::ckConnect(rest,"chilkatdownload.com",port,bTls,bAutoReconnect) ; Send the request to download a file. success = CkRest::ckSendReqNoBody(rest,"GET","/9.5.0.83/chilkat-9.5.0-python-3.8-x64.zip") If success <> 1 Debug CkRest::ckLastErrorText(rest) CkRest::ckDispose(rest) ProcedureReturn EndIf ; Read the response header. responseStatusCode.i = CkRest::ckReadResponseHeader(rest) If responseStatusCode < 0 Debug CkRest::ckLastErrorText(rest) CkRest::ckDispose(rest) ProcedureReturn EndIf Debug "Response status code = " + Str(responseStatusCode) ; We expect a 200 response status if the JPG data is coming. ; Otherwise, we'll get a string response body with an error message(or no response body). If responseStatusCode <> 200 errResponse.s = CkRest::ckReadRespBodyString(rest) If CkRest::ckLastMethodSuccess(rest) <> 1 Debug CkRest::ckLastErrorText(rest) Else Debug errResponse EndIf CkRest::ckDispose(rest) ProcedureReturn EndIf ; Create an object for decrypting. ; This example will use "none" for the encryption algorithm, which means it's just a pass-through. ; Typically you would set the decrypt properties, such as secret key, IV, key length, padding scheme, cipher mode.. crypt.i = CkCrypt2::ckCreate() If crypt.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkCrypt2::setCkCryptAlgorithm(crypt, "none") ; The following settings are ignored in this test because our CryptAlgorithm is "none". ; However, if you were truly decrypting, you might set CryptAlgorithm = "aes". CkCrypt2::setCkCipherMode(crypt, "cbc") CkCrypt2::setCkKeyLength(crypt, 128) CkCrypt2::ckSetEncodedKey(crypt,"000102030405060708090A0B0C0D0E0F","hex") CkCrypt2::ckSetEncodedIV(crypt,"000102030405060708090A0B0C0D0E0F","hex") receiveStream.i = CkStream::ckCreate() If receiveStream.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; The decryptStream's source will be the receiveStream. decryptStream.i = CkStream::ckCreate() If decryptStream.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; The decrypt stream's sink will be a file. CkStream::setCkSinkFile(decryptStream, "qa_output/chilkat-9.5.0-python-3.8-x64.zip") CkStream::ckSetSourceStream(decryptStream,receiveStream) ; Create and run a background async task to decrypt incoming data and write to a file. decryptStreamTask.i = CkCrypt2::ckDecryptStreamAsync(crypt,decryptStream) success = CkTask::ckRun(decryptStreamTask) success = CkRest::ckReadRespBodyStream(rest,receiveStream,1) If success <> 1 Debug CkRest::ckLastErrorText(rest) CkRest::ckDispose(rest) CkCrypt2::ckDispose(crypt) CkStream::ckDispose(receiveStream) CkStream::ckDispose(decryptStream) ProcedureReturn EndIf Debug "Successfully received the .zip file." CkRest::ckDispose(rest) CkCrypt2::ckDispose(crypt) CkStream::ckDispose(receiveStream) CkStream::ckDispose(decryptStream) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.