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
(Delphi DLL) Bunny Sign URL and then Download using Signed URLSee more Bunny CDN ExamplesShows how to sign a URL for BunnyCDN Token Authentication and then use it to download. For more information, see https://support.bunny.net/hc/en-us/articles/360016055099-How-to-sign-URLs-for-BunnyCDN-Token-Authentication
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Http, StringBuilder, Url, CkDateTime; ... procedure TForm1.Button1Click(Sender: TObject); var success: Boolean; mySecurityKey: PWideChar; url: PWideChar; urlObj: HCkUrl; url_scheme: PWideChar; url_host: PWideChar; url_path: PWideChar; expTime: HCkDateTime; expires: PWideChar; sbToHash: HCkStringBuilder; token: PWideChar; sbSignedUrl: HCkStringBuilder; signedUrl: PWideChar; http: HCkHttp; begin // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. mySecurityKey := 'e7ea8d73-8fa0-44ef-a2cc-91526f7df5ed'; url := 'https://test.b-cdn.net/sample-pdf-with-images.pdf'; // Extract the URL components. urlObj := CkUrl_Create(); CkUrl_ParseUrl(urlObj,url); url_scheme := 'https'; if (CkUrl_getSsl(urlObj) = False) then begin url_scheme := 'http'; end; url_host := CkUrl__host(urlObj); url_path := CkUrl__path(urlObj); // Calculate an expiration time 1 hour from the current date/time. expTime := CkDateTime_Create(); CkDateTime_SetFromCurrentSystemTime(expTime); CkDateTime_AddSeconds(expTime,3600); expires := CkDateTime__getAsUnixTimeStr(expTime,False); Memo1.Lines.Add('Expires = ' + expires); // Create the string to hash sbToHash := CkStringBuilder_Create(); CkStringBuilder_Append(sbToHash,mySecurityKey); CkStringBuilder_Append(sbToHash,url_path); CkStringBuilder_Append(sbToHash,expires); // Base64Url encoding is the same as base64, except "-" is used instead of "+", // "_" is used instead of "/", and no "=" padding is added. token := CkStringBuilder__getHash(sbToHash,'sha256','base64Url','utf-8'); sbSignedUrl := CkStringBuilder_Create(); CkStringBuilder_Append(sbSignedUrl,url_scheme); CkStringBuilder_Append(sbSignedUrl,'://'); CkStringBuilder_Append(sbSignedUrl,url_host); CkStringBuilder_Append(sbSignedUrl,url_path); CkStringBuilder_Append(sbSignedUrl,'?token='); CkStringBuilder_Append(sbSignedUrl,token); CkStringBuilder_Append(sbSignedUrl,'&expires='); CkStringBuilder_Append(sbSignedUrl,expires); signedUrl := CkStringBuilder__getAsString(sbSignedUrl); Memo1.Lines.Add('Signed URL: ' + signedUrl); // Use the signed URL to download the file. http := CkHttp_Create(); success := CkHttp_Download(http,signedUrl,'c:/aaworkarea/sample.pdf'); if (success = False) then begin Memo1.Lines.Add(CkHttp__lastErrorText(http)); end else begin Memo1.Lines.Add('Success.'); end; CkUrl_Dispose(urlObj); CkDateTime_Dispose(expTime); CkStringBuilder_Dispose(sbToHash); CkStringBuilder_Dispose(sbSignedUrl); CkHttp_Dispose(http); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.