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
(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_CkUrl.h> #include <C_CkDateTime.h> #include <C_CkStringBuilder.h> #include <C_CkHttp.h> void ChilkatSample(void) { BOOL success; const char *mySecurityKey; const char *url; HCkUrl urlObj; const char *url_scheme; const char *url_host; const char *url_path; HCkDateTime expTime; const char *expires; HCkStringBuilder sbToHash; const char *token; HCkStringBuilder sbSignedUrl; const char *signedUrl; HCkHttp http; // 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) { url_scheme = "http"; } 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); printf("Expires = %s\n",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); printf("Signed URL: %s\n",signedUrl); // Use the signed URL to download the file. http = CkHttp_Create(); success = CkHttp_Download(http,signedUrl,"c:/aaworkarea/sample.pdf"); if (success == FALSE) { printf("%s\n",CkHttp_lastErrorText(http)); } else { printf("Success.\n"); } CkUrl_Dispose(urlObj); CkDateTime_Dispose(expTime); CkStringBuilder_Dispose(sbToHash); CkStringBuilder_Dispose(sbSignedUrl); CkHttp_Dispose(http); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.