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 <C_CkUrlW.h> #include <C_CkDateTimeW.h> #include <C_CkStringBuilderW.h> #include <C_CkHttpW.h> void ChilkatSample(void) { BOOL success; const wchar_t *mySecurityKey; const wchar_t *url; HCkUrlW urlObj; const wchar_t *url_scheme; const wchar_t *url_host; const wchar_t *url_path; HCkDateTimeW expTime; const wchar_t *expires; HCkStringBuilderW sbToHash; const wchar_t *token; HCkStringBuilderW sbSignedUrl; const wchar_t *signedUrl; HCkHttpW http; // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. mySecurityKey = L"e7ea8d73-8fa0-44ef-a2cc-91526f7df5ed"; url = L"https://test.b-cdn.net/sample-pdf-with-images.pdf"; // Extract the URL components. urlObj = CkUrlW_Create(); CkUrlW_ParseUrl(urlObj,url); url_scheme = L"https"; if (CkUrlW_getSsl(urlObj) == FALSE) { url_scheme = L"http"; } url_host = CkUrlW_host(urlObj); url_path = CkUrlW_path(urlObj); // Calculate an expiration time 1 hour from the current date/time. expTime = CkDateTimeW_Create(); CkDateTimeW_SetFromCurrentSystemTime(expTime); CkDateTimeW_AddSeconds(expTime,3600); expires = CkDateTimeW_getAsUnixTimeStr(expTime,FALSE); wprintf(L"Expires = %s\n",expires); // Create the string to hash sbToHash = CkStringBuilderW_Create(); CkStringBuilderW_Append(sbToHash,mySecurityKey); CkStringBuilderW_Append(sbToHash,url_path); CkStringBuilderW_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 = CkStringBuilderW_getHash(sbToHash,L"sha256",L"base64Url",L"utf-8"); sbSignedUrl = CkStringBuilderW_Create(); CkStringBuilderW_Append(sbSignedUrl,url_scheme); CkStringBuilderW_Append(sbSignedUrl,L"://"); CkStringBuilderW_Append(sbSignedUrl,url_host); CkStringBuilderW_Append(sbSignedUrl,url_path); CkStringBuilderW_Append(sbSignedUrl,L"?token="); CkStringBuilderW_Append(sbSignedUrl,token); CkStringBuilderW_Append(sbSignedUrl,L"&expires="); CkStringBuilderW_Append(sbSignedUrl,expires); signedUrl = CkStringBuilderW_getAsString(sbSignedUrl); wprintf(L"Signed URL: %s\n",signedUrl); // Use the signed URL to download the file. http = CkHttpW_Create(); success = CkHttpW_Download(http,signedUrl,L"c:/aaworkarea/sample.pdf"); if (success == FALSE) { wprintf(L"%s\n",CkHttpW_lastErrorText(http)); } else { wprintf(L"Success.\n"); } CkUrlW_Dispose(urlObj); CkDateTimeW_Dispose(expTime); CkStringBuilderW_Dispose(sbToHash); CkStringBuilderW_Dispose(sbSignedUrl); CkHttpW_Dispose(http); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.