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
(Unicode C++) 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
#include <CkUrlW.h> #include <CkDateTimeW.h> #include <CkStringBuilderW.h> #include <CkHttpW.h> void ChilkatSample(void) { // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. bool success; const wchar_t *mySecurityKey = L"e7ea8d73-8fa0-44ef-a2cc-91526f7df5ed"; const wchar_t *url = L"https://test.b-cdn.net/sample-pdf-with-images.pdf"; // Extract the URL components. CkUrlW urlObj; urlObj.ParseUrl(url); const wchar_t *url_scheme = L"https"; if (urlObj.get_Ssl() == false) { url_scheme = L"http"; } const wchar_t *url_host = urlObj.host(); const wchar_t *url_path = urlObj.path(); // Calculate an expiration time 1 hour from the current date/time. CkDateTimeW expTime; expTime.SetFromCurrentSystemTime(); expTime.AddSeconds(3600); const wchar_t *expires = expTime.getAsUnixTimeStr(false); wprintf(L"Expires = %s\n",expires); // Create the string to hash CkStringBuilderW sbToHash; sbToHash.Append(mySecurityKey); sbToHash.Append(url_path); sbToHash.Append(expires); // Base64Url encoding is the same as base64, except "-" is used instead of "+", // "_" is used instead of "/", and no "=" padding is added. const wchar_t *token = sbToHash.getHash(L"sha256",L"base64Url",L"utf-8"); CkStringBuilderW sbSignedUrl; sbSignedUrl.Append(url_scheme); sbSignedUrl.Append(L"://"); sbSignedUrl.Append(url_host); sbSignedUrl.Append(url_path); sbSignedUrl.Append(L"?token="); sbSignedUrl.Append(token); sbSignedUrl.Append(L"&expires="); sbSignedUrl.Append(expires); const wchar_t *signedUrl = sbSignedUrl.getAsString(); wprintf(L"Signed URL: %s\n",signedUrl); // Use the signed URL to download the file. CkHttpW http; success = http.Download(signedUrl,L"c:/aaworkarea/sample.pdf"); if (success == false) { wprintf(L"%s\n",http.lastErrorText()); } else { wprintf(L"Success.\n"); } } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.